G I S   T o o l K i t
Справочник программиста

Главная | MAPAPI | PANAPI | Примеры
 

СОЗДАНИЕ ПРИКЛАДНОЙ ПОТОКОВОЙ ЗАДАЧИ ГИС «КАРТА» В СРЕДЕ VC++

Автор: Дарья Лунченко

 

Собственные прикладные задачи для ГИС "Карта" и других прикладных систем "Панорама" создаются в виде dll-библиотек на основе функционала интерфейсов «PANAPI» и «MAPAPI». Интерфейс "PANAPI" обеспечивает пользователя средствами взаимодействия с управляющей оболочкой ГИС, интерактивного выбора данных и указания способов обработки, а "MAPAPI" предоставляет средства для непосредственной обработки данных карты. Существует два типа прикладных задач: первый - потоковые задачи без интерактивной работы пользователя, второй - интерактивные задачи, позволяющие оператору выполнять операции по изменинию и редактированию карты. Ниже показаны основные шаги, которые должен сделать C++ разработчик, чтобы начать создание прикладной задачи ГИС "Карта" в среде Microsoft Visual Studio. Если вы создаете прикладную задачу учебных целях, то можно воспользоваться также бесплатным учебным пакетом Microsoft Visual Studio Community.

 

  1. Создание нового проекта DLL

Для создания проекта библиотеки 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

 
 

Касьянов О.В.
info@panorama.kharkov.ua

bigmir)net TOP 100