- PVSM.RU - https://www.pvsm.ru -

Как вырезать сабсет города (любого отношения) из OSM данных

Однажды мне потребовалось получить из сырых ОСМ данных чистый сабсет города (потому что так удобно, компактно и просто красиво). К моему удивлению я не нашел готового рецепта, из-за чего для выполнения этой задачи потребовалось немного попотеть.

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

Кишинев OSM

Допустим я хочу получить сабсет Кишинёва (почему? … там тепло, там мой дом, там моя мама)

Planet.osm нас, конечно, не интересует, зато есть geofabrik, но там планета нарезана на достаточно крупные шматки — http://download.geofabrik.de/europe/moldova.html [1]

Значит, граница города есть в сырых данных [2].

Из отношения несложно получить полигон, делаем это либо руками, либо при помощи любой подходящей утилиты, например, этой [3].

Иии… теперь в игру вступает osmosis.

У нас есть осм всея Молдовы и ограничивающий полигон Кишинёва, этого вполне достаточно для получения сабсета города из сырого XML (OSM) файла:

osmosis --read-xml file="moldova.osm" --bounding-polygon file="kishinev.poly" --write-xml file="kishinev.osm"

Аналогично можно выковырять данные из PBF (Protocolbuffer Binary Format) файла:

osmosis --read-pbf file="moldova.osm.pbf --bounding-polygon file="kishinev.poly" --write-xml file="kishinev.osm"

Немногим больше про osmosis можно почитать здесь [4].

Ну а готовый сабсет нужно срочно открывать в JOSM или импортировать в личный проект!

Кишинев JOSM

Автор: sergpank

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/openstreetmap/326721

Ссылки в тексте:

[1] http://download.geofabrik.de/europe/moldova.html: http://download.geofabrik.de/europe/moldova.html

[2] сырых данных: https://www.openstreetmap.org/relation/1748490

[3] этой: http://polygons.openstreetmap.fr/index.py

[4] почитать здесь: https://wiki.openstreetmap.org/wiki/Osmosis/Polygon_Filter_File_Format

[5] Источник: https://habr.com/ru/post/463251/?utm_source=habrahabr&utm_medium=rss&utm_campaign=463251