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

заверните человеку осм2мп.пл с перлом в докер :slight_smile:

Успокоился, собрался и, вроде, разобрался. :slight_smile:

Качнул Strawberry perl, установил.
В папку C:\Strawberry\perl\bin\ закинул батник со следующим содержимым:

call cpan -T -i Config::Std
call cpan -i Template Text::Unidecode List::MoreUtils Encode::Locale Getopt::Long PerlIO::encoding
call cpan -i YAML  Data::Dump  Geo::Shapefile::Writer Geo::Openstreetmap::Parser Tree::R Math::Polygon
call cpan -i PerlIO::via::Unidecode PerlIO::via::PrepareCP1251 Inline::C
call cpan -i match::smart
call cpan -i Math::Polygon::Tree
call cpan -i Log::Any Log::Any::Adapter

Запустил.
В таком порядке строк в батнике всё установилось с первого раза (ждал 15-20 минут).

В результате Osm2mp.pl перестал ругаться на ошибки и нормально запускается. :sunglasses:
Сегодня вечером попробую в деле.

В любом случае огромное спасибо автору скрипта !!!

PS: Ещё: перед запуском батника пришлось вручную скачать модуль DBD::XBase и закинуть содержимое архива в папку *C:\Strawberry\perl* (содержимое папки bin - в папку bin, папки lib - в папку lib и т.д.)
Иначе не будет работать экспорт в шейпы.

Я так понимаю, что http://garmin.gis-lab.info/files/ru.moscow.mp.7z не обновляется?

Полностью поддерживаю вышесказанное!
Ещё бы getbound внешние узлы на дорожном графе ставил - вообще бы цены не было программке…

Может быть есть возможность формировать границу методом слияния/вычитания полигонов границ по средствам закачки и + с использованием локальных полигонов уже присутствующих на домашнем ПК.

Поясню - скажем в какой то момент оказалась разрушена граница Хабаровского края (вот сейчас такой случай). Впридачу границы прилегающего региона, соответствующих районов регионов. Но на ПК есть живое отношение границы разрушенного региона. Сочетая локальный файл границы и живые границы районов региона можно было бы нарезать регион на необходимые части без потери данных?!
Спасибо!

Если разрушена граница то её нужно починить! :wink: Я всегда по такому принципу действую.
Правило вычитания полигонов я просил для случаев политических, где трогать границу нельзя, но и использовать то что есть тоже не хочется.

Граница починена по моему запросу тем кто сломал . Собственно там война откатов… А при откате вылезают бяки.
Однако если можно то лишним не будет. Особо убиваться по этой просьбе не надо. Выход всегда найдется (тем более если это единичный эпизод).
А вот на счет упрощения линий подумать было бы более желательно. OSMconvert не хочет работать с границами перенасыщенными точками вершин (если я это правильно называю) - слишком близко расположенными точками. Особенно это вылезает если граница идет по линии побережья скрупулёзно огибая все изгибы волны и берега. :smiley: Их надо чуть чуть проредить.
Убился резать Приморский край в районе Владивостока. Граница там на столько замысловата, что конвертер просто таки кричит - файл или отсутствует, или слишком большой.

Пока так и пришлось руками допиливать нарезку. А режу я по причине убогости ПК. Не справляется он с разбухшими регионами.

Параметр --offset 0.01 с минимальным значением очень сильно упрощает линию. Я нарезаю по границам с --offset, а карты конвертирую уже по точным.

Понятно. Спасибо. Как то не запал мне этот параметр. Теперь думаю должен отложиться в голове.

Всем хорошей погоды на выходные.
Скажите, никто не сталкивался на Windows системе с нештатной отработкой osmconverter.exe 0.8.10. Работает вроде хорошо, но выходной файл бракуется в osm2mp. Выходит ошибка parser.
Обработал исходник в osmconvert.exe 0.8.7 и osm2mp перестал ругаться?

Аха! Оказывается завершение процесса не полноценное. Проблемы памяти. Применение параметра – hash-memory решает проблему osmconvert.exe на версии 0.8.10.

Яндекс уведомил:

И бесплатного перевода судя по всему не предвидится:
https://cloud.yandex.ru/services/translate?utm_source=emailing&utm_campaign=links&utm_content=yandex-translate

Что можно выжать из osm2mp?

--lt-priority <id>=<val>  set tranformer priority                   
 --lt-dump                 list registered transformers              
 --lt-equal <lang>=<langs> set language alias (comma-separated list) 
 --lt-gme <data>           GME table, data is <from_lang>-<to_lang>:<file>

Как этим воспользоваться? Как сделать таблицу в формате gme, и подключить её с помощью --lt-gme? Какое применение предполагает --lt-equal? Поискал, не нашел развернутого ответа. Может плохо искал.

Ещё раз перечитал что есть по Language options, отложилось следующее:
!!! на примере Украины !!!

--target-lang ru --default-lang ru

вытянут “name:ru”, где нет “name” что как правило соответствует “name:uk” (Перевод не предусмотрен)

--target-lang ru --default-lang uk

вытянут “name:ru”, где нет “name:uk”, где нет иное “name:ХХ” и если совсем ничего нет - “name”.
В этом случае доступен перевод (транслитерация):

--lt-dump

покажет “Список” зарегистрированных трансформеров, заложены в файле “Subst.pm”. Судя по всему можно корректировать.
К сожалению ссылки на ru.wikipedia.org устарели. Посему понять откуда ноги трудно.

--lt-yatr-key (--lt-yatr-cache-dir --lt-priority)

обеспечивали подключение к API Яндек.Пепеводчика. Перевод был не ахти какой, но был. Главное можно было вносить коррективы в словарь (базу sql) ручками. Канет в лето в ближайшие дни. Собственно платный вариант останется.

--lt-gme=uk-ru:trans-uk-ru.dat 
  • обеспечивает транслитерацию из собственного файла. Пример файла можно взять в GPSMapEdit.
    Нет четкого понимания можно ли использовать для полноценного перевода т.е. вместо символов прописывать целые слова и даже фразы?! Короткая практика применения не дает пока однозначного ответа.

Если есть дополнения или замечания по изложенному буду признателен. Спасибо!

Привет. Заметил что getbound стал выдавать ошибку при попытке скачать границу:


C:\osm-getbound-master>getbound.pl 51490 -o 51490.poly
Downloading relation ID=51490
GET https://www.openstreetmap.org/api/0.6/relation/51490/full
Download failed: 500 Can't connect to www.openstreetmap.org:443
Failed, trying by parts
GET https://www.openstreetmap.org/api/0.6/relation/51490
Download failed: 500 Can't connect to www.openstreetmap.org:443
Failed to get relation ID=ARRAY(0x4179d78) at C:/osm-getbound-master/lib/App/OsmGetbound/OsmApiClient.pm line 92.

Это что то у меня поломалось или в консерватории? :slight_smile: exe версия отрабатывает без ошибок.

Только, что попробовал perl-овским - скачивается всё идеально…

Вопрос конкретно про версию с этого репозитория. У меня в exe её более старая редакция.

Именно с указанного Вами репозитория!

PS: Сейчас специально зашёл, скачал и сравнил файлы - один в один (ну кроме добавления в алиасы Твери).
Из практики… Смотрите, что и где были изменения в Perl.
С предыдущей версией так же голову ломал, почему либо только ехе-шная версия работает, либо только perl-овская.
Сейчас совершенно одинаково работают и та и другая.
“Вылечилось” переустановкой Perl и не только самой перестановкой, а подборкой версии.
Как-то всё это непонятно и очень “капризно” порой…

Я думаю это проблема из-за TLS 1.3, недавно активировали на серверах ОСМ. А старый софт в него не умеет. Какое-то время назад у меня перестал работать номинатим, и не работал пока я не стал форсировать соединения по 1.2

В том то и прикол что Perl не трогал, не обновлял. Всё работало и перестало. :slight_smile:

Не могу проверить. Днём бы раньше, сейчас на выезде. И главное на прошлой недели обновлял карты. Границы не обновлял.
Хотя не совсем так. Грузию и Абхазию обрабатывал от и до. А толку? Может там и была ошибка да не заметил. Границы остались старые и остальные обработки прошли по маслу.

Надо делать доступ к ПК по удалёнке. Посмотреть дату границ и было бы ясно. Опять же у меня Linux. Может и отработало нормально.