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

Не собирается Мультиполигон

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Не собирается Мультиполигон, Не собирается Мультиполигон
 
Здравствуйте!

Собираем объект и подобъекты его, в Мультиполигон следующим образом:

Скрытый текст


Все работает хорошо тогда, когда подобъекты стандартные, т.е. находятся внутри объекта или касаются.
Но если подобъект находится на расстоянии от объекта, то такой код не срабатывает, т.е. объект наносится на карту,
а вот подобъект его нет.
QGis показывает, что это Многоконтурный объект, на скриншоте он красным цветом.
Как решить вопрос?
ScreenSort7.PNG (151.54 КБ)
Изменено: Денис Вицко - 26.01.2023 19:48:47 (формат кода)
 
Для работы с мультиполигонами есть дополнительный набор функций:
Скрытый текст


Проще всего после создания всех подобъектов и заполнения их метрики перед записью объекта вызвать mapSetMultiPolygonAndCheckObject, тогда все признаки будут установлены автоматически.
Но вызов этой функции влечет за собой пространственный анализ взаимного расположения контуров объектов, что при потоковом нанесении множества объектов вызовет значительные задержки.

Поэтому, если Вам заранее известно, какой контур основной, какие внешние, а какие внутренние и внутри каких внешних, - то рекомендуется установить эти признаки самостоятельно: вызвать функцию mapSetMultiPolygonAndCheckObject с флагом autoset=0, а для подобъектов вызвать mapSetSubjectMultiFlag (для внешних подобъектов с flag=-1, для внутренних flag=номеру контура, куда он входит).
Делать это также надо после заполнения метрики всех подобъектов.

Если в обычный полигон добавить подобъект, не попадающий внутрь основного контура, не указав при этом признак мультиполигона для объекта, при сохранении такой подобъект может быть просто удален как вырожденный.

PS
Просьба на будущее:
1. При размещении кусков кода программы использовать форматирование.
2. Всегда сообщать версию используемого инструментария и среду разработки.
 
Цитата
Денис Вицко написал:
mapSetMultiPolygonAndCheckObject
Установили вызов рекомендованную Денисом функцию.
Многоконтурный объект собирается хорошо с подобъектами.
Но площадь ГИС Панорама такого объекта показывает не верную 1105 кв.м.
Ожидается 7480 кв.м согласно публичной карты, и отдельные замеры площади тоже показывают 7480 кв.м
У нас есть контрольный пример с исходником на DelphiXE 5, картой и одним xml файлом.
Просим вас рассмотреть его и сообщить, почему площадь созданного многоконтурного объекта рассчитана не правильно?  
 
Для проверки работы функции просьба выслать Ваш контрольный пример с картой на gisga@yandex.ru.
 
Приложение х32 или х64?
 
Цитата
Andrey Gheleznyakov написал:
Приложение х32 или х64?
Мы работаем только в x32
 
Проверили Вашу карту. Для объекта (номер 29) из диалога на картинке не установлен признак мультиполигона (можно проверить и изменить в диалоге на закладке метрика по правой кнопке мыши).
 
Цитата
Andrey Gheleznyakov написал:
Проверили Вашу карту. Для объекта (номер 29) из диалога на картинке не установлен признак мультиполигона (можно проверить и изменить в диалоге на закладке метрика по правой кнопке мыши).
Понятно. Как это указать в исходнике моего приложения?

Сейчас этот так:
mapSetMultiPolygonAndCheckObject(form_main.mvMap.MapHandle,1,1,0);
mapCommitObject(hObjKPT);
mapFreeObject(hObjKPT);
form_main.mvMap.Repaint;
Изменено: Сергей Викторович - 09.06.2023 11:56:59
 
Что возвращает mapSetMultiPolygonAndCheckObject(form_main.mvMap.MapHandle,1,1,0);?
Не уверен, что form_main.mvMap.MapHandle и hObjKPT это одно и тоже!
 
Цитата
Andrey Gheleznyakov написал:
hObjKPT
Да, ларчик просто открывался.
Прошу прощения за свою невнимательность.
Спасибо.
Страницы: 1
Читают тему (гостей: 1)



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

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