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

Вот, как-то с Лешей общался, может, что полезное найдешь:

boris, 21.03.17 15:08:06:
Привет. Решил еще раз глянуть логику работы конвертера с разными языками. Если стоит только target-lang=ru и default-lang=, вроде бы сначала ищется ru, потом пробует перевести, затем en и коль ничего не получилось - транслитерация. А вот если поставить --namelist label=name:ru,name,name:en, то там, где был русский в названии улицы появляется транслитерация (в адресе остается русский). Если поставить так --namelist label=name,name:ru,name:en, то в названии опять русский. Если в таком порядке --namelist label=name,name:en,name:ru, тоже русский. Ну и если так --namelist label=name:en,name:ru,name, то будет на английском. Да, в исходном названии улицы присутствуют и русский и английский. На домах есть только name и оно на русском. Во всех вариантах там транслитерация.

boris, 15:08:39:
Это такое в Южной Осетии :slight_smile:

liosha, 15:09:54:
привет. всё правильно: ты говоришь, что название надо искать в name:ru, значит, другие языки он ищет в name:ru:ru

boris, 15:11:04:
Во как… То бишь попросить искать в чистом name не получится.

liosha, 15:11:23:
не надо использовать namelist

boris, 15:12:29:
А как сделать, если нет name:ru, то брать name?

liosha, 15:13:12:
default-lang=ru

boris, 15:14:56:
Да, но в названии улицы name не на русском, но есть name:ru.

liosha, 15:15:39:
ну да, сначала посмотрит name:ru, потом name

boris, 15:16:05:
Ща гляну, что получится.

boris, 15:20:31:
Действительно, так все сработало :-). Спасибо.

boris, 15:23:51:
А вообще сейчас namelist-ом что-то интересное можно достать?

liosha, 15:24:08:
не думаю

boris, 15:24:20:
Ясно, спасибо.

liosha, 15:24:26:
по идее он для old_name вместо name

а namelist - это то, что в конфиге label: ?

Это в .bat файле.

У меня немного другая ситуация, я в батнике в параметрах запуска не использую namelist.

Так Леша и сказал, что сейчас от namelist толку немного. Я это привел больше по поводу того, как name выковыривается.

Все равно как-то неправильно. Если мне нужна строгая последовательность выковыривания name и карта у меня делается на иностранном языке с транслитерацией, то мне уже ничего не поможет, name:ru все равно будет вытаскиваться там, где не надо…
Ладно. буду иметь ввиду.
Спасибо за информацию.

Обновленная версия конвертера с “github” порадовала простотой установки в Linux подобных системах. Позволила перейти на более современную ОС_ь. Установка модулей в Ubuntu 16.04 не напрягает - http://wiki.openstreetmap.org/wiki/RU:Osm2mp. Пришлось до установить 2-3 доп. модуля и всё заработало.
Однако не обошлось без отрицательных эмоций. Крайняя версия конвертера заметно больше требует ресурсов - оперативной памяти в первую очередь. Обработка значительно растянулась по времени. Что бы особенно как то добавилось информации в конечном формате, или что бы разрешились какие то процедурные проблемы не заметил.

  1. Это только на слабых ПК бросается в глаза или и на мощных железках отмечается подобное?
    Так и подрезает вернуть “старый” добрый вариант с Googl. Но он наверное потребует установки старых модулей Perl?! А главное не понятно - может всё же что то стало работать правильнее. Может ушли в небытие какие то ошибки?

  2. И вот интересно - https://github.com/liosha/osm2mp/ - не такая уже и новая версия = 2 года давности?!
    Хотя согласно http://wiki.openstreetmap.org/wiki/RU:Osm2mp протестировано на Ubuntu 16.04.
    Архив при этом закачался с датой основных файлов от 12 апреля этого года?! Что это? Особенность копирования на Linux подобных системах? Или действительно последние корректировки проведены 12 апреля?

Там от 12 апреля только файл README :).

Инструкция позволяет запустить osm2mp в простейшем варианте с настройками по-умолчанию. Если для каких-то режимов могут потребоваться дополнительные модули, хорошо бы добавить это на вики (в раздел “необязательные библиотеки”, например).

Странно. Каких-то больших изменений по сравнению с версией на гуглокоде не было. Если железо/конфиги/размеры исходных файлов те же, то остается только валить все на перл.

Смотрите историю изменений (commits), это будет нагляднее. То, что относится к гуглокоду, заканчивается 13-м годом

Подскажите пожалуйста, в каких случаях океан получается не вокруг острова, а внутри его? :slight_smile:
Что-то у меня не выходят Канарские острова, хотя Крит вполне правильно получается.
Заранее спасибо.

Честно ни разу не видел внутри. :slight_smile: А так для принудительного окружения водой тег --water-back

иногда бывают битые дампы, попробуйте открыть JOSM-мом исходый файлик и проверить цеостность костлайнов

–waterback я использую. Но вот результат не очень
https://www.dropbox.com/s/342wh33zrwktvxu/2017-05-03_%2820-36-03%29.jpg?dl=0
https://www.dropbox.com/s/fp7hg2kdyj58fj6/2017-05-03_%2820-36-27%29.jpg?dl=0

Попробую. Но валидатор коастлайна никаких проблем не показывает.

Что то странное пошло в июне с Яндекс переводчиком. Сначала стал ругаться на JSON. До этого этой проблемы не было. Доустановил через CPAN. А как оно до этого работало?! Вроде пошло без ругани. Но нет:

yatr: failed request en-ru for 384870 at /.../lib/LangTransform/YaTranslate.pm line 109.
...
Wide character in warn at /.../lib/LangTransform/YaTranslate.pm line 109.
yatr: failed request en-ru for 2А at /.../LangTransform/YaTranslate.pm line 109.

Что бы это значило:

malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at /.../lib/LangTransform/YaTranslate.pm line 68.
No transformer id=yatr_en_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.
No transformer id=yatr_ka_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.

Хронология такова, ещё до смены системы (соответственно и Perl) переход на более свежие конфиги отметился ростом времени обработки данных. Переход потребовал доустановки модулей. Ничего не меняя вернулся на прежний вариант. А вот уже со сменой системы пробую, на сколько позволяет время, возврат к гугл конфигам.
Есть “perlbrew”. Пробовал параллельно поставить Perl-5.14.4. Пока не смог развести два разных Perl на независимые рельса. Так что проверить ещё раз не получается. Сейчас главное с “yatr” разобраться. Думал "perlbrew"ом навредил, ан нет - переустановка системы не помогла.

Что то клин какой то: Linux Mint 18.1 (т.е. Ubuntu 16.04). Ставил по инструкции. Не хватило модулей, доставил. Все заработало. Выпустил набор Украины и по мелочам для пробы с переводом на Русский.
Две недели пауза:

$ perl osm2mp/osm2mp.pl --config=osm2mp/cfg-navitel/navitel-ab.cfg --bpoly=MAPS/AB/POLY/AB-1.poly --lt-yatr-key @me.key --lt-priority yatr_en_ru=4 --lt-priority yatr_ka_ru=3 --lt-yatr-cache-dir osm2mp/cachedir --default-country=AB --default-region="Гагрский район" --mapname="Абхазия Гагрский район" --output=MAPS/AB/MP/AB-1.mp MAPS/AB/OSM/AB-1.osm

  ---|   OSM -> MP converter  1.03   (c) 2008-2013 liosha, xliosha@gmail.com

Loading configuration...
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at /home/alvi/7W/osm2mp/lib/LangTransform/YaTranslate.pm line 68.
No transformer id=yatr_en_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.
No transformer id=yatr_ka_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.

Loading OSM data from file MAPS/AB/OSM/AB-1.osm...

Пробовал сборки:
https://github.com/cheshire-mouse/osm2mp
https://github.com/liosha/osm2mp/
разницы нет. Перевода с Яндекса нет. Переводит из ранее созданной базы --lt-yatr-cache-dir ! Ключ активен. Систему переустановил. Не помогает. Как будто был мираж нормальной работы. Мысли закончились. Переписку выше прочитал. Все работает. Затык с Яндекс переводом.
Может я в прочитанном что то не уловил? Похожее там было - https://forum.openstreetmap.org/viewtopic.php?pid=638429#p638429

Бред. В очередной переставил систему. Модули решил поставить под рут. Всё прекрасно работает, но перевод… Может на Яндексе что творится?!
Изменил некоторые написания, бац прошло без тревоги:

$ perl osm2mp/osm2mp.pl --config=osm2mp/cfg-navitel/navitel-ab.cfg --bpoly=MAPS/AB/POLY/AB-1.poly --target-lang=ru --default-lang=en --default-country=AB --default-region="Гагрский район" --mapname="Абхазия Гагрский район" --output=MAPS/AB/MP/AB-1.mp --lt-yatr-key=@me.key --lt-yatr-cache-dir=osm2mp/cachedir MAPS/AB/OSM/AB-1.osm

  ---|   OSM -> MP converter  1.03   (c) 2008-2013 liosha, xliosha@gmail.com

Loading configuration...

Loading OSM data from file MAPS/AB/OSM/AB-1.osm...

Initialising bounds from file MAPS/AB/POLY/AB-1.poly...

Что называется найдите хотя бы одно отличие. Тут ;е перезапускаю JSON уже ругается типа на пустую строку:

$ perl osm2mp/osm2mp.pl --config=osm2mp/cfg-navitel/navitel-ab.cfg --bpoly=MAPS/AB/POLY/AB-1.poly --target-lang=ru --default-lang=en --default-country=AB --default-region="Гагрский район" --mapname="Абхазия Гагрский район" --output=MAPS/AB/MP/AB-1.mp --lt-yatr-key=@me.key --lt-yatr-cache-dir=osm2mp/cachedir MAPS/AB/OSM/AB-1.osm

  ---|   OSM -> MP converter  1.03   (c) 2008-2013 liosha, xliosha@gmail.com

Loading configuration...
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at /home/alvi/7W/osm2mp/lib/LangTransform/YaTranslate.pm line 68.

Loading OSM data from file MAPS/AB/OSM/AB-1.osm...

Бред. И почему я не учил программирование.

  • подумалось, что может пустая строка приехала?

Может вы из разных папок, пропишите полные пути.