Подскажите как создать замкнутый объект карты. Имеются список координат. Как одиночный объект создать - понятно Как создать объект из нескольких контуров (причем одни должны добавляться, другие вычитаться из ранее заданных) Например две непересекающиеся баранки - 4 замкнутые контура?
Администратор
Сообщений: Регистрация: 09.06.2008
04.07.2025 10:26:37
Уточняющий вопрос: эту процедуру Вы хотите сделать через ГИС-АПИ или в ГИС Панорама?
Пользователь
Сообщений: Регистрация: 18.10.2022
15.07.2025 12:04:05
Добрый день!
Да через через ГИС-АПИ
Администратор
Сообщений: Регистрация: 10.06.2008
15.07.2025 16:04:14
Добрый день!
Немного теории. Замкнутый объект - это, как правило, объект площадной. Если Вы при создании объекта регистрируете его как площадной, то при его сохранении ГИС-ядро само замкнёт его метрику. Все объекты могут иметь несколько контуров - первый контур считается основным, остальные - подобъектами. Площадные объекты также могут иметь подобъекты, при этом подобъекты, находящиеся вне основного контура, являются внешними, а подобъекты, находящиеся внутри основного контура или внутри внешних подобъектов, - внутренними. Площадной объект, имеющий внешние полигоны, является мультиполигоном. Контура одного объекта не могут пересекаться (такой объект сохраниться, но будет вырожденным).
1. Создать объект (), либо почистить ранее созданный (). 2. Зарегистрировать объект как площадной - (info, код_из_RSC, LOCAL_SQUARE); 3. Добавить метрику в основной контур ( или или ) 4. Добавить подобъект () и заполнить его метрику (см. п.3). 5. Повторить п.4 по остальным подобъектам. 6. Перед сохранением площадного объекта, который может быть мультиполигоном, надо вызывать функцию mapSetMultiPolygonAndCheckObject (параметры multi, isautoset и ischeckobject задать значением 1, - тогда вычисление внешних и внутренних контуров будет автоматически выполнено)
Код
// Установить/Сбросить признак мультиполигона
// info - идентификатор объекта карты в памяти
// multi - признак мультиполигона 0/1
// isautoset - признак автоматической расстановки флага размещения (входимости) 0/1
// При первой установке признака мультиполигона может выполняться автоматическая
// расстановка флага размещения подобъекта по первой точке метрики подобъекта -
// поиск входимости одних подобъектов в другие
// Если установку флагов размещения выполняет внешняя функция, то
// признак мультиполигона может устанавливаться после завершения создания
// объекта и всех подобъектов без автоматической расстановки,
// затем выполняется установка флагов подобъектов в функции mapSetSubjectMultiFlag
// ischeckobject - проверить, что объект не входит в какой-либо подобъект и
// перенести этот подобъект перед объектом при необходимости (сделать главным),
// если в главном (нулевом) контуре меньше 4 точек, то он удаляется.
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSetMultiPolygonAndCheckObject(HOBJ info, long int multi,
long int isautoset, long int ischeckobject);
7. После чего сохранить объект (). 8. Когда HOBJ уже не нужен, освободить его ().
Пользователь
Сообщений: Регистрация: 18.10.2022
18.07.2025 09:40:28
Спасибо за подробный ответ. Я попробую, о результате сообщу...