Конвертер OSM -> MP

А вы думаете проблема только с водными объектами? Вопрос в этой теме о том как силами конвертера обеспечить адекватную реакцию на большие полигоны, попавшие на границу регионов. Как исключить пропадание полигонов на примере водного - большое озеро.

Что до правил, то их надо менять. Во всяком правиле могут и должны быть исключения. Пишите в Вики, никто не усомнится и лишь начнут исполнять. (Мнение.)

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

Ну замечательное предложение на мой дилетантский манер. Спасибо. Отписался по этому поводу в профильной теме. Посмотрим что скажут.
Но по прежнему никто не высказывается про возможности конвертера?! Или их нет?

Есть скрипт, который восстанавливает неполные мультиполигоны.
https://github.com/liosha/osm2mp-garmin-build/blob/master/getbrokenrelations.py

Спасибо. Вот если бы ссылку где прочитать или пример (образец) запуска… Поиском в инете нашел только упоминание этого скрипта. А как на практике?

На практике выглядит так (Linux/Unix):


python getbrokenrelations.py < in.osm >out.osm

в файле out.osm окажутся только мультиполигоны “natural”,“landuse”,“waterway” (со всеми линиями и точками), которые были не полностью загружены в in.osm

ну и получение полного MP файлика выглядит примерно так


osmconvert --out-osm src/ru.karel.osm.pbf | perl osm2mp/osm2mp.pl --config open-cfg/garmin-ru.cfg - -o 00400010.mp 
osmconvert --out-osm src/ru.karel.osm.pbf | python getbrokenrelations.py | perl osm2mp/osm2mp.pl --config open-cfg/garmin-ru-brokenmpoly.cfg - >> 00400010.mp

Т.е. сначала создается основной файлик, а потом в него доливаются недостающие полигоны
Конфиги garmin-ru.cfg и garmin-ru-brokenmpoly.cfg отличаются опцией background: он включен только в одном из них, чтобы не задвоился

Спасибо за поддержку.

Не могу получить результат для Ладожского озера. Онежское, не вопрос. Работает скрипт. Ладожское, ни в какую. Не теряю надежды - покручу, поверчу. Но может кто то из практиков скажет - есть или аналогично нет положительного результата при восстановлении скриптом именно Ладожского озера?! Спасибо.

С Ладожским тоже работает, озеро в out.osm я вижу. А вот osm2mp почему-то его отбрасывает. Может быть связано с играми в coastline. Озеро постоянно переделывают то multipoligon->coastline, то coastline->multipoligon. На данный момент это мультиполигон с ошмётками coastline’ов.

Вроде скорей оно постоянно остается мультиполигоном (по крайней мере уже несколько лет), к которому то добавляют, то удаляют coastline.

Я не великий специалист, но - полигон не замкнут. Чуть ниже выступа в северо-западной части границы, на территории Карелии. У меня ни технических возможностей, ни достаточных знаний/навыков.

Где конкретно-то? http://overpass-turbo.eu/s/fCx - тут не вижу проблем.

https://yadi.sk/i/EVo5S5zsqwHyb
https://yadi.sk/i/2sY4diVmqwHym
https://yadi.sk/i/ZtvpdLE2qwHyw
https://yadi.sk/i/1LJiAWDpqwHzH
Координаты на картинках. Как говорится за что купил…

Человек уже исправил. Сейчас JOSM восхищается полигоном.

White_54, для облегчения поиска проблемных мест: в JOSM выбираете объект, на который подозрение (или где-то там рядом), и жмёте CTRL+SHIFT+I, он выдаст линк в браузере (скопировать из адресной строки остаётся).
Именно на тот кусок, что на скринах, ругался валидатор.

Была и ошибка в базе OSM. Отличная работа. Скрипт - решение проблем! Спасибо.

Спасибо. Фишки ускоряющие работу всегда полезны.

overpass.osm.rambler.ru - похоже не доступен со вчерашнего дня?!
Можно ли подставить иной адрес в таком случае?

Да, можешь подставить любой http://wiki.openstreetmap.org/wiki/Platform_Status, хотя показано, что всё ОК.

ой-ой
серверу действительно не очень

добавил репорт на вики (как я понял, ошибки надо слать туда)
http://wiki.openstreetmap.org/wiki/Overpass_API/status

Задача - вытащить “old_name = *”. Возможно ли это?
Скажем - Украина. Украина претерпевает масштабное переименование улиц (городов). Люди не поспевают перестроиться. Путаются в названиях. Возможно будет востребовано на выходе конвертации получить:
CityName=name (old_name)
CountryName=name (old_name)
RegionName=name (old_name)
StreetDesc=name (old_name)

Возможно обсуждалось. Возможно идея бредовая. Возможно решение уже есть?

Так ведь вытащатся сразу все имеющиеся old_name. Каша ж будет из дореволюционных, довоенных, послевоенных и позднесоветских названий.

Лучше придумать, как хранить в осме старые названия разной давности (единственного тега old_name недостаточно) и в дальнейшем вытаскивать только те, что надо.