OpenStreetMap

Цель: использование OSM карты в случае отсутствия доступа к сети Интернет.

Для достижения данной цели можно поднять стек OSM, но это связано с определёнными трудностями.

Известно, что вся база картографических данных OSM хранится в файле планеты: http://wiki.openstreetmap.org/wiki/Planet.osm. Поэтому, используя данный файл и программы для его обработки можно решать большое количество задач, связанных с:

  1. просмотром данных отдельных участков карты;

  2. рендером отдельных участков карты для печати;

  3. изменением данных в файле планеты.

Размер файла планеты в pbf формате на 08.07.2017 составляет около 36 Гб, в формате osm - 58 Гб.

Указанные ниже команды успешно выполняются в ОС Windows и Linux (Ubuntu).

Задача 1. Выборка участка карты по указанным координатам

Для решения этой задачи выполните следующую команду: ### osmconvert planet-latest.osm.pbf -b=41.9376,55.5247,42.1429,55.6311 -o=Murom.osm.pbf

В результате будут вырезаны данные города Муром Владимирской области. Более подробное описание программы OsmConvert находится по этой ссылке: http://wiki.openstreetmap.org/wiki/Osmconvert. В качестве альтернативы можно использовать программу osmosis. Политическая карта мира, с помощью которой можно определиться с координатам выбираемых данных находится по адресу: https://github.com/GEOF-OSGL/OSMPoliticalMap.

Задача 2. Правка карты

Для правки карты можно использовать ПО JOSM (http://josm.ru/). JOSM позволяет загружать и просматривать локальные файлы в формате pbf и osm. После правки файлы также можно сохранить на диск в формате pbf и osm. Если попытаться открыть pbf файл, который был создан в JOSM, будет выдано сообщение об ошибке. Это связано с тем, что элементам карты, которые были созданы, не были присвоены идентификаторы. Эти идентификаторы присваивает сервер OSM при загрузке на него правки. Если использовать для хранения данных формат osm, такой ошибки не возникнет. Для конвертации pbf файла в osm можно использовать следующую команду:

osmconvert Murom.osm.pbf -o=Murom.osm

Данная программа успешно конвертирует данные из pbf в osm даже если в pbf находятся отрицательные идентификаторы.

Примечание. Команда по выборке данных из файла планеты успешно работает, даже если в файле планеты находятся элементы карты с отрицательными идентификаторами.

Задача 3. Добавление обновлённого участка карты в файл планеты

Следующая команда добавляет файл MuromNew.osm.pbf к файлу планеты planet-latest.osm.pbf

osmconvert MuromNew.osm.pbf –out-o5m | osmconvert - planet-latest.osm.pbf -o=planet-latestNew.osm.pbf

Файл MuromNew.osm.pbf хранит новые данные, которых не было в planet-latest.osm.pbf.

Результат добавления можно проверить следующим образом:

osmconvert planet-latestNew.osm.pbf -b=41.9376,55.5247,42.1429,55.6311 -o=MuromOneMoreNew.osm.pbf

osmconvert MuromOneMoreNew.osm.pbf -o=MuromOneMoreNew.osm

Файл MuromOneMoreNew.osm можно посмотреть в JOSM или Maperitive.

Задача 4. Рендеринг выбранного участка карты

Решение задачи рендеринга под ОС Windows выполняется с использованием Maperitive (http://maperitive.net/). Эта программа может открывать файлы .osm и .pbf, а затем экспортировать их в формат png для последующей печати. Maperitive успешно открывает osm и pbf файлы даже если в этих файлах есть элементы карты с отрицательными идентификаторами.

Задача 5. Использование карты с мобильным приложением

Для создания карты для мобильного приложения OsmAnd можно использовать программу OsmAndMapCreator: http://wiki.openstreetmap.org/wiki/OsmAndMapCreator. Инструкция по созданию карт для Maps.Me (http://maps.me/ru/home) находится по данной ссылке: https://github.com/mapsme/omim/blob/master/docs/MAPS.md.

По данной ссылке https://github.com/iagsav/osm_script находится скрипт, который на вход получает osm файл, отредактированный локально и содержащий отрицательные идентификаторы, и переопределяет отрицательные идентификаторы в положительные. Переопределение выполняется с учётом максимального значения положительного идентификатора в файле. Особенность данного скрипта в том, что результат его работы не может использоваться для объединения с файлом планеты, т.к. файл планеты может содержать идентификаторы элементов, которые были добавлены в локальный файл после обработки, в результате чего может произойти конфликт идентификаторов.

Благодарности: при написании скрипта огромную помощь оказал АрПи: telegram.me/Vsehposlav.

Discussion

Comment from freeExec on 10 July 2017 at 09:05

osmconvert и будет скачаны данные города Муром не соответствует действительности. Вот данные будут вырезаны - верно.

Comment from iagsav on 22 July 2017 at 13:36

Спасибо за замечание!

Log in to leave a comment