СОЗДАНИЕ ПРИКЛАДНОЙ ПОТОКОВОЙ ЗАДАЧИ ГИС «КАРТА» В СРЕДЕ VC++
Автор: Дарья Лунченко
Собственные прикладные задачи для ГИС "Карта" и других прикладных систем "Панорама" создаются в виде dll-библиотек на основе функционала интерфейсов «PANAPI» и «MAPAPI».
Интерфейс "PANAPI" обеспечивает пользователя средствами взаимодействия с управляющей оболочкой ГИС, интерактивного выбора данных и указания способов обработки, а "MAPAPI" предоставляет средства для непосредственной обработки данных карты.
Существует два типа прикладных задач: первый - потоковые задачи без интерактивной работы пользователя, второй - интерактивные задачи, позволяющие оператору выполнять операции по изменинию и редактированию карты.
Ниже показаны основные шаги, которые должен сделать C++ разработчик, чтобы начать создание прикладной задачи ГИС "Карта" в среде Microsoft Visual Studio.
Если вы создаете прикладную задачу учебных целях, то можно воспользоваться также бесплатным учебным пакетом Microsoft Visual Studio Community.
Для создания проекта библиотеки DLL в среде разработки Microsoft Visual Studio необходимо:
1) запустить Visual Studio, и перейти в меню к пункту «Создать проект»;
2) в открывшемся окне, выбрать проект по созданию библиотеки DLL на основе библиотеки MFC;
3) далее оставить все настройки по умолчанию, и нажать кнопку «Готово»;
4) проект библиотеки DLL успешно создан.
2. Создание библиотеки статической линковки LIB
Для формирования библиотеки статической линковки LIB и включения ее в проект Visual C++ необходимо:
1) открыть командную строку Visual Studio Native Tools с правами администратора;
2) сформировать .def файл по DLL, выполнив в коммандной строке команду dumbin, .def файл содержит имена экспортируемых функций из библиотеки.
В результате выполнения команды dumpbin получен файл d:\mapacces64.def:
3) отредактировать содержимое файла d:\mapacces64.def, оставив в нем только имена экспортируемых функций:
4) выполнить в командной строке команду lib, для формирования библиотеки статической линковки.
3. Настройка внешних зависимостей проекта DLL
Для добавления внешних зависимостей в проект библиотеки DLL в ГИС «Панорама» необходимо:
1) скачать примеры разработки приложений в ГИС "Панорама" 12 по ссылке: sdk12.zip
2) скопировать папку include в папку проекта библиотеки DLL;
3) добавить библиотеку реализации интерфейса «MAPAPI» mapacces64.lib, как статическую библиотеку в проект, нажав в обозревателе решений : Решение —> Добавть —> Существующий элемент—>mapacces64.lib;
4) перейти в свойства проекта: Имя проекта—>Свойства и во вкладке «Каталоги VC++», выбрать «Каталоги включения», в выпадающем меню нажать «Изменить». В открывшемся окне, нажать кнопку «Создать строку» и выбрать путь к папке include;
5) один из основных файлов, содержащих определение типов данных для работы с картой, является mapapi.h, подключим его в проект;
4. Создание потоковой задачи
Потоковые задачи - это задачи, выполняемые в потоковом режиме без интерактивной работы пользователя с электронной картой. Например: конвертирование, трансформирование, сортировка, обновление и другие виды обработки данных.
Для вызова реализации таких задач в DLL библиотеке должны быть объявлены две функции:
1) функция сравнения версий библиотеки MAPACCES, используемой в DLL и в системе.
// Контроль версии библиотеки классов
extern "C"
{
long int __declspec(dllexport) WINAPI GetInterfaceVersion()
{
return MAPACCESSVERSION;
}
}
2) функция запуска выполнения прикладной задачи;
extern "C"
{
long int WINAPI CallMapFunctionEx(HMAP hmap, TASKPARMEX* parm)
{
// Текст прикладной задачи, работающей в потоковом режиме
// Например:
AfxMessageBox(TEXT("Здесь будет работать ваша потоковая задача!"));
}
}
5. Добавление собственной прикладной задачи к ГИС "Карта"
Для подключения задачи в ГИС «Карта» необходимо:
1) запустить программу и перейти в меню «Задачи»—>«Запуск приложений»;
2) в открывшемся окне выбрать или создать тему, в которую будет добавлена ваша задача. Затем нажать кнопку «Добавить задачу» и выбрать файл скомпилированной dll-библиотеки. Чтобы у вашей задачи была собственная иконка, создайте ее средствами Visual Studio, присвойте имя, совпадающее с именем dll-библиотеки, и поместите ее в ту же;
3) чтобы запустить задачу, необходимо выбрать её из списка двойным щелчком мыши.
Для написания текста прикладной задачи, работающей в потоковом режиме, можно ограничиться использованием только функций интерфейса MAPAPI.
Примеры прикладных потоковых задач ГИС "Карта"
Экспорт данных карты в базу PostgreSQL
Импорт данных из базы PostgreSQL