Комментарии 6
С мультиполигонами и водой кстати реально проблема. Может кто-то знает, как ее обойти?
Вот делаю я экспорт области с куском береговой линии. И берег в итоге я получаю просто как незамкнутую линию, которая была куском мультиполигона моря, состоящую из частей, попавших в мою область.
Как мне замкнуть эту линию, чтобы получить область воды в пределах моей области в виде простого полигона?
Нельзя просто соединить начало и конец линии, замкнув полигон. Это будет работать для выпуклых водоемов, но не сработает со всякими островами. На картинке под катом изобразил примеры.
Не выйдет добавить в полигон границы участка — так как просто непонятно, с какой стороны от линии берега собственно вода находится.
Варианты экспорта берегов
Может кто-то что-то подсказать?
0
Если замыкать по границе внешнего прямоугольника — по ее точкам пересечения с линиями полигонов? Тип заливки несет в себе сама граница, от нее и распространять заливку в полигоне?
0
замыкание прямой линией упрощенный вариант, со своими косяками упрощения.
полноценный алгоритм: докачать неполный мультиполигон и правильно его нашинковать.
ксати отношение-мультиполигон может с несколькими оутерами и кучей иннеров, вот где будет красота.
полноценный алгоритм: докачать неполный мультиполигон и правильно его нашинковать.
ксати отношение-мультиполигон может с несколькими оутерами и кучей иннеров, вот где будет красота.
0
так как просто непонятно, с какой стороны от линии берега собственно вода находится.
В случае coastline всё просто — «land is on the left side and water on the right side of the way (when viewing in the direction of the way arrows)»
В случе просто водяных объектов (озёр/рек) сложнее — нужно при обрезке оставлять граничные объекты целиком (параметр completeWays/completeRelations у osmosis) и затем при конвертации делать геометрическую обрезку (intersection) объекта полигона с прямоугольником обрезки.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Дмитрий Лебедев: «Несколько лет назад я явно понимал, что еще чуть-чуть и OpenStreetMap пойдет ко дну»