Т.е. проблема решится простой подменой maptype.h и на maptype.hpp в vecexapi.h?
18.09.2017 14:56:12
Т.е. проблема решится простой подменой maptype.h и на maptype.hpp в vecexapi.h?
|
|
|
|
18.09.2017 16:50:22
Не совсем. Функции, объявленные в vecexapi.h будут конфликтовать с объявлениями в mapproc.hpp. Поэтому:
Так исторически сложилось, что компоненты GIS ToolKit написаны на Delphi. Все функции MAPAPI портируются в GIS ToolKit с их описанием на Delphi. Когда компоненты устанавливаются в Builder, автоматически генерируются файлы *.hpp, то есть описание типов данных будет в файле maptype.hpp, а описание функций в mapproc.hpp. Прототипы функций для Delphi описаны в одноименных файлах *.inc (для vecexapi.h - это vecexapi.inc), но после компиляции GIS ToolKit они будут находиться в mapproc.hpp. Появление прототипов функций в GIS ToolKit имеет некоторое отставание от их появления в ГИС-ядре. Функции, которые Вы планируете использовать, являются новыми. В текущей сборке GIS ToolKit их пока нет (хотя в библиотеках ядра они уже присутствуют). Однако, в ближайшее время они там появятся. Для решения проблемы подключить vecexapi.h, заменив что-то в нем, не получиться. Вообще мы рекомендуем функции не из основной библиотеки (gisuacces.dll / gisu64acces.dll) вызывать динамически (через LoadLibrary). Прототип для динамического вызова Вы можете описать самостоятельно, взяв за основу описание в vecexapi.h. Статически Вы также можете вызывать эти функции. Для этого Вам надо перенести к себе описания только этих (!) функций из vecexapi.h (тех, которые пока не описаны в mapproc.hpp). Однако, когда в следующей версии GIS ToolKit эти функции появятся в mapproc.hpp, у Вас вновь будет конфликт уже ваших прототипов с mapproc.hpp. Поэтому рекомендую использовать динамический вызов. |
|||||
|
|
18.09.2017 16:58:54
|
|||
|
|
20.09.2017 15:13:15
105, 1, CW24 Для которой я должен выполнить подмену из классификатора 50t05g.rsc - Код: 61210000, Ключ: L0061210000, Код семантики: 53 со значением: CW24 Как должен выглядеть XML файл? <code type="key"/> <fields> <item name="objectid">105</item> <item name="objectcode">L0061210000</item> </fields> <code type="digital"/> <fields> <item name="objectid">105</item> <item name="objectcode">61210000</item> </fields> <code type="text"/> <fields> <item name="objectid">105</item> <item name="objectcode">53</item> </fields> |
|||
|
|
20.09.2017 15:31:17
Нет. Не так. Внимательно читайте, что я Вам написал.
Семантики определяются по соответствию их ключей именам полей. То есть классификатором. |
|||||||
|
|
20.09.2017 16:50:27
Вся беда в том, что в классификаторе нет кодов которые записаны в .dbf, и простая подмена имен полей ни чего не даст.
И если в Panorama эти преобразования можно сделать вручную, то заказчик требует выполнять их в автомате. Как это сделать через MAPI я пока не нашёл.
Изменено: |
|
|
|
20.09.2017 17:21:49
В классификаторе RSC код объекта может быть задан:
1) кодом и локализацией (например, 12340000 LINE); код может повторяться в серии однотипных объектов, имеющих разные знаки в зависимости от одной или двух характеристик; 2) ключом (уникальная строка в пределах классификатора); 3) буквенно-цифровым кодом (аналог цифрового кода, но может содержать любой текст). Таблицей перехода служит сам классификатор. Вы можете настроить буквенно-цифровой код на значения из DBF, указать имя поля с этим значением и указать, что регистрация объекта выполняется по буквенно-цифровому коду. Пример вызова функций импорта из SHP в SDK12\Ready\Mapvectr\myform.cpp |
||||
|
|
|||
© КБ Панорама, 1991-2024 Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности |