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

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

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, чтобы из релейшена границы можно было вычитать другой релейшен? Пока только складывать их можно.
Пример: Хочу собрать границу Украины без Крыма, Границу Грузии без Абхазии и Южной Осетии и т.п.

Не проходит у меня данная проверка (ни с одинарными ни с двойными кавычками).
Файл Clipper.pm уже куда только не “размножил”, но результата нет.
Пробовал подключить данный модуль через cpan, но это так же ничего не изменило (хотя на экране что-то там мелькало зелёным текстом и достаточно долго - более 1 минуты).

Ну конечно же пробовал. Данная сборка у меня вообще ничего не отрабатывает, поэтому пользуюсь Perl-овской.
И что самое интересное - раньше на 32-й сборке Perl и ехе-шника всё работало, а вот с переходом на Win7+Perl64, стало как-то не совсем так.

**PS: **А можно вообще где-то ознакомиться со всеми ключами и их применением? Что-то справки я не нашёл в файлах (не вызывается).

Kostik - спасибо огромное!
Как всегда выручили. :smiley:
Разобрался… Для работы Вашей “ехе-шной” сборки у меня в папке была лишняя ненужная папка “OsmGetbound” (так и не понял как и когда я её туда отправил/создал :confused: ).
Удалил - и всё стало ОК!

Вопрос-1: как создать один общий полифайл из 2.3 и т.д. смежных?
Например иметь один общий полигон на 3 смежные области?

Вопрос-2: какие ограничения и с какой кратностью можно задавать параметр “N” при получении расширенных (оффсетных) границ?

PS: Повторюсь - может где есть подробная справка по ключам и краткому разъяснених их применения?

В теории, можно. На практике… надо подумать. Такой подход с вычитанием выглядит несколько противоестественно, у меня пока не сложилось в голове, как это можно органично вписать.

У меня такой потребности как-то и не возникало. Практически любую область нестандартной конфигурации можно составить из кучи маленьких регионов

Я посмотрю

  1. сделайте файл с алиасом в формате yaml, в нем текстовому имени ставится в соответствие идентификатор отношения или же массив идентификаторов, как то так
myregion: [12345, 12346] 

(вот еще пример https://github.com/cheshire-mouse/osm-getbound/blob/master/aliases.d/finland.yml )
далее загружайте границу уже по этому имени, а не по id, указав ваш файл через опцию aliases

getbound.pl --aliases myaliases.yml myregion

полезными буду опции clip (сложить все полигоны) и onering (все полигоны одной линией, типа рисуем “не отрывая карандаша от бумаги”)

  1. N - это отступ в “градусах”, как таковых ограничений нет ( 1, 0.001, 0.00005, …)

  2. Если запустить getbound без параметров, он должен выдать список всех опций с краткими пояснениями