Страница 1 из 1

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

Добавлено: 27 дек 2011, 06:32
el_inca
MapInfo v10.5
Windows Xp sp3
Геобъекты: составные полигоны

Задан составной полигон ( полигон с "дыркой").
Как в MapBasice в составном полигоне определить какой из полигонов внешний, а какой вложенный ?

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

Добавлено: 27 дек 2011, 19:00
Boris
внешний - это тот, который содержит внутренние. один из режимов "разбора" полигонов позволяет превращать дырки в новые полигоны. вот те из них, что полностью внутри других и будут ответом на вопрос. мапинфо - сама определяет вложенность полигонов.

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

Добавлено: 11 янв 2012, 07:07
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

То есть Мапинфо вложенность всегда выводит ту, которая была определена при создании объекта, и не учитывает дальнейшее редактирование объекта. Вот вопрос в том, можно ли это как-то учесть, если можно , то как?

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

Добавлено: 11 янв 2012, 19:53
gamm
el_inca писал(а): Если теперь преобразовать этот полигон, сделав внешним полигон из 3-х узлов, а вложенным полигон из 4-х узлов,
расскажите, как вам удалось это сделать :roll:

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

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

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

Добавлено: 12 янв 2012, 06:56
reasonat
видимо таким образом никто и никогда не редактирует объекты, перемещая дырку наружу. Обычно вокруг 4хугольника рисуют треугольник, например, и вырезают четырехугольник из треугольника. Тогда на выходе будет
2
4
5
если в четырехугольнике уже существует треугольный внутренний контур, который не нужен, его не перемещают наружу, а удаляют узлы внутреннего контура для ликвидации дырки.

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

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

в любом случае, топологию (даже одного полигона) лучше перестроить после редактирования, преобразовав сначала в линии, а потом обратно в полигон

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

Добавлено: 12 янв 2012, 07:52
reasonat
в мапинфо нумерация полигонов вроде всегда с внешнего начинается. вот когда контуры невложенные комбинируются (типа опор ЛЭП), тогда действительно, за порядком этих контуров не уследить.

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

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

в любом случае, топологию (даже одного полигона) лучше перестроить после редактирования, преобразовав сначала в линии, а потом обратно в полигон
При работе с МапИнфо порядок и вложенность действительно не важны. Но для перевода объектов, например, из МапИнфо в базу данных (например, PostGIS ) порядок полигонов имеет значение, так как в ней другая структура хранения объектов.

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

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

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