www.map-info.ru :: Просмотр темы - разбор составного региона (с надеждой и утешением)
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
127.0.0.1



Зарегистрирован: 16.04.2009
Сообщения: 5

СообщениеДобавлено: Вт Окт 27, 2009 10:04 am    Заголовок сообщения: разбор составного региона (с надеждой и утешением) Добавить ответ со ссылкой на данный текст

Требуется разработать функцию загрузки простр.объектов в Oracle Spatail
(аналог EasyLoader, но функционально встроенную в корпоративную ГИС)
так вот, при загрузке объектов типа Region столкнулся с проблемой:

как отличать в составе составного региона MapInfo, внутренние контура от внешних.
Т.е. в общем случае, имеем регион состоящий из множества областей,
некоторые из которых имеют пустоты (возможно несколько пустот),
в пустотах располагаются внутренние области (возможно несколько областей),
в некоторых из них, в свою очередь, имеются внутренние области и т.д.

В Oracle Spatail например, такой площадной объект компонуется из множества контуров,
каждый из которых имеет признак внешний (его площадь прибавляется к площади объекта)
или внутренний (его площадь вычитается из площади объекта)

Как, все таки, при анализе региона MapInfo -- отличать внутренние контура от внешних?

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

таким образом, EasyLoader при разборе региона сразу формирует набор контуров с признаками внешний/внутренний

как узнать дивный алгоритм разбора региона в EasyLoader?

Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Окт 27, 2009 3:46 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Что с разгону пришло в голову - воссоздать по координатам 2 полигона, проверить их пространственным запросом на ПОЛНОЕ включение одного внутрь другого.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
127.0.0.1



Зарегистрирован: 16.04.2009
Сообщения: 5

СообщениеДобавлено: Вт Окт 27, 2009 5:03 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

2Андрей Могильный

представим земельный участок с озером, а в озере есть остров, в котором, наконец, есть пруд...
так вот, полигоны: "озеро", "остров" и "пруд" - полностью будут включены в полигон "земельный участок"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Окт 27, 2009 6:45 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Насколько я понял речь именно о составных полигонах, т.е. о многополигональных областях? Пустоты возможно только в таких объектах. А в рамках одного объекта можно перебрать его полигоны и проверить на включение одного в другой. Если включение есть, то это 100% дырка.
Если речь о разных областных объектах, то я не понял причем тут внутренние и внешние области, там все внешние.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Вт Окт 27, 2009 8:06 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

А вы какой уровень вложенности собираетесь проверять. В принципе - можно проверить все уровни, но если известно их ограничение, то алгоритм и время вычисления короче. Обычно, если следовать вашей аналогии, после озера на острове редко бывает дробление.
Теперь по самой процедуре, то если исходить из того, что это вложенные объекты чередующиеся в таком порядке плюс-минус-плюс-минус, и вы можете получать внешние контуры всех объектов (хотя бы из MIF-Файла), то это чистая рекурсивная задача над геометрическими объектами:
- объект с самой большой площадью - это плюс
- следующий за ним объект по площади - это минус
дальше аналогично, только выбирать надо те, которые вложены в исследуемый объект, т.к. для самого верхнего объекта - это условие выполняется автоматически.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru