На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Конвертер SXF ->SHP

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 След.
RSS
Конвертер SXF ->SHP
 

Добрый день.


На сколько я понял, единственная возможность конвертации карты в shp из пользовательского приложения это вызов соответствующей функции,
которая откроет соответствующую форму Экспорт в формат Shape?

На манер как вызывается форма для Преобразование проекции векторной карты?


Modify(mvMap.MapHandle, @parm);                                                         // ТОЛЬКО НУЖНО ПРИМЕНИТЬ ДРУГУЮ MapAPI функцию

Просьба подсказать какую?

 
Цитата
Сергей Викторович написал:
Добрый день.  
На сколько я понял, единственная возможность конвертации карты в shp из пользовательского приложения это вызов соответствующей функции,
которая откроет соответствующую форму Экспорт в формат Shape?
 На манер как вызывается форма для Преобразование проекции векторной карты?  
Modify(mvMap.MapHandle, @parm);                                                         // ТОЛЬКО НУЖНО ПРИМЕНИТЬ ДРУГУЮ MapAPI функцию  Просьба подсказать какую?

На данный момент в перечне  функций MAPAPI доступны только функции импорта из SHP:
Код
  // Импорт данных Shape (исходные данные выбираются из диалогового окна открытия файла)
  // hmap       - идентификатор открытых данных
  // parm       - параметры задачи, описание структуры TASKPARM в maptype.h.
  // При ошибке возвращает ноль

_MAPIMP long int WINAPI CallImportShp(HMAP hmap, TASKPARMEX * parm);

  // Импорт набора данных Shape (исходные данные выбираются из диалогового окна выбора директории)
  // hmap       - идентификатор открытых данных
  // parm       - параметры задачи, описание структуры TASKPARM в maptype.h.
  // При ошибке возвращает ноль

_MAPIMP long int WINAPI ImportShpSet(HMAP hmap, TASKPARMEX * parm);

Изменено: Елена Кузнецова - 07.08.2017 19:18:27
 
см. vectrapi.h, функции библиотек gisuvectr.dll (x32 версия 12), gisu64vectr.dll (x64 версия 12):

 // Импорт данных Shape (исходные данные выбираются из диалогового окна открытия файла)
 // hmap       - идентификатор открытых данных
 // parm       - параметры задачи, описание структуры TASKPARM в maptype.h.
 // При ошибке возвращает ноль

_MAPIMP long int WINAPI CallImportShp(HMAP hmap, TASKPARMEX * parm);

 // Импорт набора данных Shape (исходные данные выбираются из диалогового окна выбора директории)
 // hmap       - идентификатор открытых данных
 // parm       - параметры задачи, описание структуры TASKPARM в maptype.h.
 // При ошибке возвращает ноль

_MAPIMP long int WINAPI ImportShpSet(HMAP hmap, TASKPARMEX * parm);
 
Для импорта файлов SHP без диалогов доступны функции из библиотеки gisu64vecex.dll:
Код
 //========================================================================
 //   Функции импорта формата SHP
 //========================================================================

typedef struct SETTING
{
  int   IsUpdate;           // Признак обновления карты
  int   Code;               // Тип регистрации объекта (1 - по цифровому коду, 2 - по буквенно-цифровому коду, 3 - по символьному ключу)
  int   Charset;            // Кодировка DBF (0 - ANSI, 1 - UTF-8, 2 - OEM-DOS, 3 - ANSI-LATIN)
  int   Isdirect;           // Выполнять контроль направления цифрования

  int   Isdivision;         // Признак обработки подобъектов 0 - создать мультиполигон,  1 - создать подобъекты
  int   Isosm;              // Признак обработки объектов OSM
  int   IsBL;               // Признак обработки геодезических координат
  int   IsSorted;           // Признак необходиости сортировки

  WCHAR NumberField[16];
  WCHAR LabelField[16];
  WCHAR AngleField[16];
  WCHAR CodeField[16];
}
  SETTING;

typedef struct  RECORDLIST     // Структура соответствия семантик
{
  WCHAR  value1[1024];
  WCHAR  value2[1024];
  WCHAR  value3[1024];
  WCHAR  value4[1024];
}
  RECORDLIST;

typedef struct  SEMFIELDS
{
  WCHAR     name[1024];
  int       code;
  int       zero;
}
  SEMFIELDS;

typedef HANDLE HSHPLOAD;

 // Проверить, что файл zip содержит файлы SHP                                                          // 31/07/17
 // Возвращает число найденных файлов SHP в архиве
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpCheckZipContents(const WCHAR * shpzip);

 // Выполнить импорт наборов данных SHP из папки, запакованной в ZIP, в один лист карты                 // 27/07/17
 // hmap      - идентификатор карты, в которую дописываются листы или 0
 //             (если hmap != 0, то mapname, rscname, iscreate игнорируются)
 // handle    - идентификатор обработчика сообщений о ходе выполнения импорта данных
 // shpzip    - имя файла zip, содержащего слои листа карты в формате SHP (любой вложенности)
 // mapname   - имя файла создаваемой/обновляемой карты
 // rscname   - имя файла классификатора, с которым создается карта, или 0 (если карта существует)
 // epsgcode  - код системы координат создаваемой карты или 0 (если карта существует или создается по PRJ)
 // iscreate  - признак создания карты или 0 (если карта существует)
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpLoadSheetFromZip(HMAP hmap, HMESSAGE handle, const WCHAR * shpzip,
                                             const WCHAR * mapname, const WCHAR * rscname,
                                             long int epsgcode, long int iscreate,  long int * error);

 // Выполнить импорт наборов данных SHP из папки в один лист карты                 // 27/07/17
 // hmap      - идентификатор карты, в которую дописываются листы или 0
 //             (если hmap != 0, то mapname, rscname, iscreate игнорируются)
 // handle    - идентификатор обработчика сообщений о ходе выполнения импорта данных
 // shpfolder - имя папки, в которой размещены слои листа карты в формате SHP (любой вложенности)
 // mapname   - имя файла создаваемой/обновляемой карты
 // rscname   - имя файла классификатора, с которым создается карта, или 0 (если карта существует)
 // epsgcode  - код системы координат создаваемой карты или 0 (если карта существует или создается по PRJ)
 // iscreate  - признак создания карты или 0 (если карта существует)
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpLoadSheetFromFolder(HMAP hmap, HMESSAGE handle, const WCHAR * shpfolder,
                                                const WCHAR * mapname, const WCHAR * rscname,
                                                long int epsgcode, long int iscreate);

 // Определить параметры системы координат из файла PRJ
 // Если задана геодезическая система координат в градусах, то возвращает 2
 // Для координат в метрах возвращает 1
 // Если параметры не были определены и координаты в метрах - возвращает -1
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpShapeProcReadPrj(const WCHAR * prjname,
                                             MAPREGISTEREX * mapreg, ELLIPSOIDPARAM * ellparm, DATUMPARAM * datumparm,
                                             WCHAR * csname, long int size);

 // Создать объект для импорта файлов SHP
 // handle - идентификатор получателя сообщений WM_ERROR и WM_OBJECT
 // mapname - имя паспорта создаваемой\обновляемой карты
 // rscname - имя классификатора создаваемой карты или 0 (если имя не задано, то карта обновляется)
 // name    - имя района (листа) карты
 // mapreg, ellparm, datumparm - параметры системы координат исходных данных и создаваемой карты (если карта создается)
 // nomenclature - номенклатура листа или 0 (используется и для формирования имени файлов листов карт с рамкой)
 // recitem - список обрабатываемых атрибутов (имена полей DBF и их ключи в классификаторе - если они разные)
 // semitem - список обрабатываемых полей атрибутов или 0 (если нужно обрабатывать не все поля DBF)
 // ismap   - признак создания карты (1- многолистовая карта MAP, иначе 0)
 // epsgcode - код системы координат, в которой создается карта или 0 (если система совпадает с системой исходных данных)
 // При ошибке возвращает ноль

_VECIMP HSHPLOAD _VECAPI shpShapeProcSheetInitEx(HMESSAGE handle, const WCHAR * mapname, const WCHAR * rscname,
                                                 const WCHAR * name,
                                                 MAPREGISTEREX * mapreg, ELLIPSOIDPARAM * ellparm, DATUMPARAM * datumparm,
                                                 const WCHAR * nomenclature,
                                                 RECORDLIST * recitem, long int recount,
                                                 SEMFIELDS  * semitem, long int semcount, long int ismap, long int epsgcode);

_VECIMP HSHPLOAD _VECAPI shpShapeProcSheetInit(HMESSAGE handle, const WCHAR * mapname, const WCHAR * rscname,
                                               const WCHAR * name,
                                               MAPREGISTEREX * mapreg, ELLIPSOIDPARAM * ellparm, DATUMPARAM * datumparm,
                                               const WCHAR * nomenclature,
                                               RECORDLIST * recitem, long int recount,
                                               SEMFIELDS  * semitem, long int semcount, long int ismap);

_VECIMP HSHPLOAD _VECAPI shpShapeProcInit(HMESSAGE handle, const WCHAR * mapname, const WCHAR * rscname,
                                          const WCHAR * name,
                                          MAPREGISTEREX * mapreg, ELLIPSOIDPARAM * ellparm, DATUMPARAM * datumparm,
                                          RECORDLIST * recitem, long int recount,
                                          SEMFIELDS  * semitem, long int semcount);

 // Создать объект для импорта файлов SHP
 // hmap    - идентификатор карты, в которую дописываются листы
 // handle  - идентификатор получателя сообщений WM_ERROR и WM_OBJECT
 // nomenclature - номенклатура листа или 0 (используется и для формирования имени файлов листов карт с рамкой)
 // mapreg, ellparm, datumparm - параметры системы координат исходных данных (если они отличаются от параметров карты)
 // recitem - список обрабатываемых файлов SHP 
 // semitem - список обрабатываемых полей атрибутов
 // При ошибке возвращает ноль

_VECIMP HSHPLOAD _VECAPI shpShapeProcSheetForMap(HMAP hmap, HMESSAGE handle,
                                                 MAPREGISTEREX * mapreg, ELLIPSOIDPARAM * ellparm, DATUMPARAM * datumparm,
                                                 const WCHAR * nomenclature,  RECORDLIST * recitem, long int recount,
                                                 SEMFIELDS  * semitem, long int semcount);

 // Запросить идентификатор открытой карты
 // hshpload - идентификатор объекта загрузки SHP
 // При ошибке возвращает ноль

_VECIMP HMAP _VECAPI shpGetShapeProcMapHandle(HSHPLOAD hshpload);

 // Загрузка  SHP-файла
 // hshpload - идентификатор объекта загрузки SHP
 // shpname  - имя входного файла SHP
 // type     - тип объекта в наборе данных
 // code     - код зарегистрированного объекта
 // setting  - указатель на структуру настроек диалога SETTING (myform.h)
 // error    - код ошибки при создании объектов
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpShapeProcLoad(HSHPLOAD hshpload, const WCHAR * shpfilename, long int code, SETTING * setting, long int * error);
 
 // Загрузить список Shape файлов
 // hshpload - идентификатор объекта загрузки SHP
 // shplist  - список указателей на имена shp-файлов
 // count    - число файлов в списке
 // code     - массив кодов объектов для списка shp-файлов
 // setting  - указатель на структуру настроек диалога SETTING (myform.h)
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpShapeProcLoadList(HSHPLOAD hshpload, const WCHAR ** shplist, long int count, int * code, SETTING * setting);

 // Удалить объект для импорта файлов SHP
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpShapeProcClose(HSHPLOAD hshpload);

 // Проверить совпадение параметров систем координат (PRJ) в разных папках (листах) с наборами SHP
 // name - имя корневой папки с файлами SHP или с набором папок, содержащих отдельные листы карты
 // Если файлы SHP расположены в корневой папке, то сравнивает файлы PRJ в корневой папке,
 // если есть набор папок, то сравнивает по одному файлу PRJ в каждой папке, чтобы найти
 // разные параметры СК (например, разные зоны)
 // При совпадении параметров возвращает 1, иначе - нулевое значение

_VECIMP long int _VECAPI shpCheckSheetProjectEquivalent(const WCHAR * name);

 // Запросить общие габариты набора файлов SHP в заданной папке, включая вложенные папки  // 24/07/17
 // frame - габариты, запрашиваются в радианах в системе WGS-84
 // Возвращает общее число объектов во всех файлах SHP
 // Если для SHP не заданы параметры проекции (PRJ) - возвращает ноль
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI shpGetShpBorderInFolder(const WCHAR * folder, DFRAME * frame); 
 
Олег Валентинович, добрый день.
А что же экспорта нет?
Пользователю нужно выгрузить карту, с которой он работает
для передачи ее в другую организацию в shape формате.
 
Цитата
Сергей Викторович написал:
Олег Валентинович, добрый день.
А что же экспорта нет?
Пользователю нужно выгрузить карту, с которой он работает
для передачи ее в другую организацию в shape формате.
На данный момент такая возможность есть только в программе ГИС "Панорама".
 
Цитата
Oleg Belenkov написал:
Для импорта файлов SHP без диалогов доступны функции из библиотеки gisu64vecex.dll:
Подскажите пожалуйста, где лежит .h файл для этой ddl'ки.
По содержимому для 32-х и 64-х они совпадают?
 
Цитата
Алексей Антонов написал:
Цитата
 Oleg Belenkov  написал:
Для импорта файлов SHP без диалогов доступны функции из библиотеки gisu64vecex.dll:
Подскажите пожалуйста, где лежит .h файл для этой ddl'ки.
По содержимому для 32-х и 64-х они совпадают?
Функция содержится в файле vecexapi.h.
 
При попытке собрать простейшее приложение (на форме положен компонент TMapView и подключен vecexapi.h)
Выдаёт вот такое сообщение -

[bcc32 Error] maptype.h(475): E2015 Ambiguity between 'HRSC' and 'Maptype::HRSC'
 Full parser context
   Unit1.cpp(6): #include Unit1.h
   Unit1.h(14): #include C:\Program Files (x86)\Panorama\GisTool12\Dll\Include\vecexapi.h
   vecexapi.h(37): #include C:\Program Files (x86)\Panorama\GisTool12\Dll\Include\mmstruct.h
   mmstruct.h(23): #include C:\Program Files (x86)\Panorama\GisTool12\Dll\Include\maptype.h
   maptype.h(458): class POLYDATAEX

Т.е. использовать визуальные компоненты и функции MAPI одновременно невозможно?  
 
Цитата
Алексей Антонов написал:
E2015 Ambiguity between 'HRSC' and 'Maptype::HRSC'

Поиск по форуму. Похожий вопрос.

Заголовочные файлы ГИС-ядра не допускается использовать совместно с компонентами GIS ToolKit.
Следует использовать объявления в файлах maptype.hpp и mapproc.hpp (вместо *.h).

Заголовочные файлы *.h (maptype.h и пр.) следует использовать, когда разработка выполняется на чистом MAPAPI буз использования компонент.
Страницы: Пред. 1 2 3 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности