Полигон из отношения

Нужно из отношения получить полигон.
role=outer - внешняя граница.
role=inner - внутренние (дырки)

Вопросы:

  1. В списке members все way-и, относящиеся к outer располагаются обязательно последовательно друг за другом?
  2. Каждый inner, это отдельная дырка?
  1. нет
  2. нет

Получить полигон где? Своя программулина или postgis?

  1. С outer вроде всё более-менее понятно. Внешняя граница одна так что нужно просто сцепить все way-и с role=outer и получим внешний полигон.
  2. Не особо понятно, как тогда получить внутренние контуры (дырки). Т.е. есть, к примеру, есть набор линий. Они могут относиться к разным дыркам. Алгоритм определения контуров дырок получаеся слишком уж заумный, либо я что-то не так понял в вашем ответе

Своя.

Shasoft, последняя точка одной линии должна быть началом другой. Вот сортируй и получишь замкнутую линию.

в теории outer тоже может быть не один.

Нет, не одна. Это мультиполигон :slight_smile:
Всё надо самостоятельно сортировать и раскладывать по контурам, как внутренним, так и внешним.

Что-то я не могу вообразить полигон с двумя внешними контурами. Хотя, это же мультиполигон. Сначало все линии нужно рассортировать по контурам. Потом по контурам создать полигоны. А потом ещё рассортировать дырки по внешним границам?

Ага. Единственно, что утешает, так это что, то дырки из внешних контуров вылазить не должны. Да и внешние контуры не должны пересекаться (и касаться).
Но могут встретиться :slight_smile: , равно как и незамкнутые контуры — ошибки в данных. Их надо или пропускать, или отказываться с ними работать.

Однако :slight_smile:
А я то думал, что до вечер сделаю эту хрень. Спасибо за разъяснение. Пойду сортировать линии.

p.s.

  1. А может быть дырка в дырке?
  2. Может ли быть member = relation? Т.е. сложная дырка?

Да.
Например: Площадь - газон - памятник.

Это считается ошибкой. Там вообще всякого рода ошибок туева хуча может быть. Именно поэтому мультиполигоны так часто ломаются.

Это уже разные мультиполигоны должны быть.

Это к вопросу: “2. Может ли быть member = relation?”.

нет
нет

Sergey Astakhov прав, нужно ожидать любого рода ошибку, в т.ч. inner в inner-е

Зеленоград и Москва - два outer’а мультиполигона place. Так ведь, вроде…

Поделитесь, если у кого есть, примером физической сущности, оформленной мультиполигоном со множественными outer. Дом, лес, остров?

Shasoft
http://wiki.openstreetmap.org/wiki/Multipolygon
:wink:

а может.
http://wiki.openstreetmap.org/wiki/Relation:multipolygon (секция Island within a hole)

Спасибо, но я не то имел в виду ))
Попробую уточнить - нужен пример на карте, где физическая сущность обозначена мультиполигоном, у которого есть несколько внешних замкнутых “колец”.

Ага. Вот это вроде как раз то, что надо. А то я нашел вот это http://wiki.openstreetmap.org/wiki/RU:Relation:boundary, но там слишком заморочено. По вашей ссылке более подробно.

http://www.openstreetmap.org/browse/relation/1446701
Болото - три составных outer и несколько inner