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

Создание объекта

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Создание объекта, Особенности создания объектов
 
Подскажите как создать замкнутый объект карты.
Имеются список координат.
Как одиночный объект создать - понятно
Как создать объект из нескольких контуров (причем одни должны добавляться, другие вычитаться из ранее заданных)
Например две непересекающиеся баранки - 4 замкнутые контура?
 
Уточняющий вопрос: эту процедуру Вы хотите сделать через ГИС-АПИ или в ГИС Панорама?
 
Добрый день!

Да через через ГИС-АПИ  
 
Добрый день!

Немного теории.
Замкнутый объект - это, как правило, объект площадной.
Если Вы при создании объекта регистрируете его как площадной, то при его сохранении ГИС-ядро само замкнёт его метрику.
Все объекты могут иметь несколько контуров - первый контур считается основным, остальные - подобъектами.
Площадные объекты также могут иметь подобъекты, при этом подобъекты, находящиеся вне основного контура, являются внешними, а подобъекты, находящиеся внутри основного контура или внутри внешних подобъектов, - внутренними.
Площадной объект, имеющий внешние полигоны, является мультиполигоном.
Контура одного объекта не могут пересекаться (такой объект сохраниться, но будет вырожденным).

1. Создать объект (mapCreateObject), либо почистить ранее созданный (mapClearObject).
2. Зарегистрировать объект как площадной - mapRegisterObject(info, код_из_RSC, LOCAL_SQUARE);
3. Добавить метрику в основной контур (mapAppendPointPlane или mapAppendPointGeo или mapAppendPointGeoWGS84)
4. Добавить подобъект (mapAppendSubject) и заполнить его метрику (см. п.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. После чего сохранить объект (mapCommitObject).
8. Когда HOBJ уже не нужен, освободить его (mapFreeObject).
 
Спасибо за подробный ответ.
Я попробую, о результате сообщу...
Страницы: 1
Читают тему (гостей: 1)



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

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