Составные полигоны

MapInfo, MapBasic
Ответить
el_inca
Новоприбывший
Сообщения: 8
Зарегистрирован: 06 сен 2011, 13:44
Репутация: 0

Составные полигоны

Сообщение el_inca »

MapInfo v10.5
Windows Xp sp3
Геобъекты: составные полигоны

Задан составной полигон ( полигон с "дыркой").
Как в MapBasice в составном полигоне определить какой из полигонов внешний, а какой вложенный ?
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Составные полигоны

Сообщение Boris »

внешний - это тот, который содержит внутренние. один из режимов "разбора" полигонов позволяет превращать дырки в новые полигоны. вот те из них, что полностью внутри других и будут ответом на вопрос. мапинфо - сама определяет вложенность полигонов.
el_inca
Новоприбывший
Сообщения: 8
Зарегистрирован: 06 сен 2011, 13:44
Репутация: 0

Re: Составные полигоны

Сообщение el_inca »

Давайте на примере полигона. Пусть есть внешний полигон с 4-мя вершинами(узлами). В этом полигоне есть вложенный из 3-х узлов. Если создать объект NewObject и присвоить ему данный полигон, и воспользоваться командой ObjectInfo( NewObject, OBJ_INFO_NPOLYGONs+N) в следующем виде:
ObjectInfo(NewObject,21)
ObjectInfo(NewObject,22)
ObjectInfo(NewObject,23)
на выходе получится:
2 - полигон состоит из 2-х объектов
5 - кол-во узлов в 1-ом объекте+1
4 - кол-во узлов во 2-ом объекте+1

Если теперь преобразовать этот полигон, сделав внешним полигон из 3-х узлов, а вложенным полигон из 4-х узлов, и вывести ObjectInfo, то на выходе снова будет:
2
5
4

То есть Мапинфо вложенность всегда выводит ту, которая была определена при создании объекта, и не учитывает дальнейшее редактирование объекта. Вот вопрос в том, можно ли это как-то учесть, если можно , то как?
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Составные полигоны

Сообщение gamm »

el_inca писал(а): Если теперь преобразовать этот полигон, сделав внешним полигон из 3-х узлов, а вложенным полигон из 4-х узлов,
расскажите, как вам удалось это сделать :roll:
el_inca
Новоприбывший
Сообщения: 8
Зарегистрирован: 06 сен 2011, 13:44
Репутация: 0

Re: Составные полигоны

Сообщение el_inca »

для данного примера в Мапинфо в "пенале"(toolbar с элементами рисования) кнопкой "форма". Она переключает в редактирование узлов. Ну а там дальше узлы вложенного полигона просто перетаскиваются за границы внешнего полигона.
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Составные полигоны

Сообщение reasonat »

видимо таким образом никто и никогда не редактирует объекты, перемещая дырку наружу. Обычно вокруг 4хугольника рисуют треугольник, например, и вырезают четырехугольник из треугольника. Тогда на выходе будет
2
4
5
если в четырехугольнике уже существует треугольный внутренний контур, который не нужен, его не перемещают наружу, а удаляют узлы внутреннего контура для ликвидации дырки.
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Составные полигоны

Сообщение gamm »

el_inca писал(а):для данного примера в Мапинфо в "пенале"(toolbar с элементами рисования) кнопкой "форма". Она переключает в редактирование узлов. Ну а там дальше узлы вложенного полигона просто перетаскиваются за границы внешнего полигона.
тогда вопрос: с чего вы решили, что порядок полигонов в выводе имеет какое-то отношение к вложенности? вы нарисовать его пробовали с заливкой? мышкой потыкать (с буквой i)?

в любом случае, топологию (даже одного полигона) лучше перестроить после редактирования, преобразовав сначала в линии, а потом обратно в полигон
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Составные полигоны

Сообщение reasonat »

в мапинфо нумерация полигонов вроде всегда с внешнего начинается. вот когда контуры невложенные комбинируются (типа опор ЛЭП), тогда действительно, за порядком этих контуров не уследить.
el_inca
Новоприбывший
Сообщения: 8
Зарегистрирован: 06 сен 2011, 13:44
Репутация: 0

Re: Составные полигоны

Сообщение el_inca »

gamm писал(а): тогда вопрос: с чего вы решили, что порядок полигонов в выводе имеет какое-то отношение к вложенности? вы нарисовать его пробовали с заливкой? мышкой потыкать (с буквой i)?

в любом случае, топологию (даже одного полигона) лучше перестроить после редактирования, преобразовав сначала в линии, а потом обратно в полигон
При работе с МапИнфо порядок и вложенность действительно не важны. Но для перевода объектов, например, из МапИнфо в базу данных (например, PostGIS ) порядок полигонов имеет значение, так как в ней другая структура хранения объектов.
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Составные полигоны

Сообщение gamm »

reasonat писал(а):в мапинфо нумерация полигонов вроде всегда с внешнего начинается.
Мапинфе все равно, в каком порядке идут полигоны. Я проделал операцию, описанную топикастером (вытащил внутреннюю границу наружу), полученный полигон и рисуется, и распознается нормально. И вообще, лучше посмотреть в GDAL/OGR, что там на самом деле хранится, и есть ли там зависимость от порядка, а не заниматься непонятными опытами :D

То, что обычно порядок получаются описанным вами, есть скорее всего следствие "внутренних работ" мапинфы по построению топологии объектов.
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей