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

Тоже догадался так сделать, но это же вручную всё. А хотелось чтобы getbound в автоматическом режиме.

беглый осмотр исходников показал, что noinner работает только в связке с onering

А с пустой строкой в чём дело? Плагин JOSM эти файлы не открывает без ручной правки.

Там должно быть имя контура

getbound всегда формировал poly с пустыми строками (насколько я помню), просто раньше плагин несколько проще к этому относился

Проверил, так и есть.

обновил getbound в своем репозитории: добавил формат poly-strict, отличается от poly отсутствием пустых строк и заменой ‘-’ на ‘!’ для внутренних контуров

getbound.pl -om poly-strict ...

Спасибо!
Пересобрал exe`шную версию. Вроде работает. Проверял так:
getbound.exe 108082 -onering -noinner -api op_kumi --offset 0.1 -om poly-strict -o RU-KDA.poly

Всем хорошего завершения выходного дня. Может кто подскажет в чём засада.
Запускаю –lt-yatr-key. И парадокс. На Linux перевод идет. А вот на Windows 10 yatr_ka_ru не переводится.
Добавляю приоритеты --lt-priority yatr_ka_ru… Под Linux без проблем. Под Windows выдаёт ошибку:

Loading configuration...
No transformer id=yatr_ka_ru found at C:/Perl64/lib/Getopt/Long.pm line 605.
  • конфиги в Linux и Windows одинаковые
  • на –lt-priority yatr_en_ru или –lt-priority yatr_de_ru ошибку не выдаёт и похоже переводит

Может кто сталкивался? Спасибо.

А какую версию osm2mp вы используете? Если Лёшину, оригинальную ( https://github.com/liosha/osm2mp/ ), то там используется устаревший метод определения языков в ЯПереводчике. Мне это пришлось в свое время допиливать ( https://github.com/cheshire-mouse/osm2mp ), функция _get_langs в YaTranslate.pm

Если коротко, то яндекс возвращает два массива: dirs - направления перевода и langs - языки . Dirs помечен как depricated, надо использовать langs, яндекс умеет переводить между любыми двумя языками из этого массива.

Спасибо! Действительно на Linux сборка ваша. На Windows после переустановки Perl шел прямым путем по линейке liosha/osm2mp…
Теперь проблемы перевода нет. В очередной раз помогли по полной.

Ещё спрошу для общего развития. В теле getbound.pl значится Log::Any::Adapter 0.11 (‘Stderr’) = у меня ничего не установлено. Или значится Math::Polygon::Tree 0.061 qw/ :all / = в PPM был доступен и я установил версию 0.08.
Всё работает. Файлы территории создаются. Следует ли ожидать подводные камни в этом случае?
Или, каковы преимущества getbound.pl в этой сборке https://github.com/cheshire-mouse/osm-getbound ?
Спасибо!

Библиотеки устанавливаю периодически заново, при обновлении perl. Беру те, что есть на текущий момент в репозитариях. Каких-то проблем не заметил, но и глубоких исследований на тему “что могло поменяться” я не проводил.
В getbound я добавлял опцию clip, она объединяет контур, состоящий из нескольких (операция UNION над полигонами). Это удобно, если для области, которая вам нужна, нет единого отношения. В остальном - фиксы по-мелочам и алиасы.

Помню как на заре была проблема с версиями отдельных модулей. В этот раз на удивление прошло как по маслу.
К вопросу. В этот раз поставил ActivePerl-5.20.3.2004-MSWin32-x64-300558. Порадовал. Все необходимые по умолчанию модули доступны в PPM. Но вот Math::Clipper отсутствует.

Прошу разъяснений и помощи!
Не могу создать poly-файл грницы со смещением (offset).
Раньше создавались без проблем, а сейчас ни в какую.
Может есть у кого готовое решение или это непорядок в моей системе или проект OSM уже не позволяет это сделать?

PS: Надоело создавать файлы вручную… :frowning:

А в чем заключается “сейчас ни в какую”?

В том, что раньше exe-шная версия прекрасно работала для получения границ со смещением, а сейча вообще никакая веряия не создаёт.
Perl-овская при создании вываливается в ошибку с указанием на Match::Clipper::offset.
Пробовал разные "Clipper"ы устанавливать, но в конечном итоге это ничего не даёт.
Папки Match/Clipper/offset (с файлом Clipper.pm) в наличии.
Вот и не пойму в чём дело…

Что-то намудрили, мне кажется, с библиотеками. Папки offset быть не должно. Должно быть как-то так Math/Clipper.pm

Проверьте, что библиотека подключена:

perl -le 'use Math::Clipper; print $Math::Clipper::VERSION'
1.23

А если скачать по ссылке в самом верху этой страницы? У меня она нормально отрабатывает все функции, в том числе и оффсет, которым пользуюсь постоянно.

gryphon Просил уже, но попробую ещё раз. А реально допилить getbound, чтобы из релейшена границы можно было вычитать другой релейшен? Пока только складывать их можно.
Пример: Хочу собрать границу Украины без Крыма, Границу Грузии без Абхазии и Южной Осетии и т.п.