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

Попробуй. Пока в отдельной ветке testing.
https://github.com/cheshire-mouse/osm-getbound/tree/testing

Принцип простой: все отрицательные id-шники, которые добавлены в алиас, будут вычитаться из контура (по факту, просто инвертироваться outer → inner и наоборот). Немного поменялся алгоритм обработки ключа clip, раньше он работал немного неправильно (в 99% случаев это не будет заметно).

Спасибо, всё работает. Правда немного не разобрался как подсунуть свой файл .yml, сработало только когда отредактировал osm-getbound-aliases.yml

там две опции для подключения алиасов: aliases для отдельного файла, aliasesdir для каталога с файлами
у меня выглядит как-то так:

getbound.pl -api op_ru -singlerequest -aliases /garmin/getbound/etc/osm-getbound-aliases.yml -aliasesdir /garmin/getbound/aliases.d ....

Ну это в целом и так понятно было.
Вы ответили так, как будто бы самого ответа на вопрос(ы) вовсе и нет. :sunglasses:
Мои вопросы остались совершенно незамеченными:

Это отношение какое-то?
И относительно чего отношение?
Напрмер имеется полигон 100х100 метров.
Так вот… как понимать скажем число 0.016, 3.5 или 9 по отношению к данному размеру (площади) полигона?
Число 9 - это что?
В 9 раз мешьше?
В 9 раз больше?
Это масштаб производной отношения S/9?
И так далее…
И второй “незамеченный” вопрос - чем такая запись отличается по сравнению с примененнм level_*= * по отношению этого же самого полигона?
Неужели трудно вразумительно и конкретно ответить? :confused:

О финальном релизе, информация будет?

Про цифры - трудно. Все это было настроено настолько давно, что уже забылось за ненадобностью. Может быть есть в начальной части темы, а может я у Леши в аське интересовался…

Одна строка определяет сразу все варианты.

Если не путаю, то это квадратные километры (Землю считаем шаром)

Тут нет таких понятий, как релизы. Мне что-то понадобилось - добавляю и заливаю в репозитарий. Отдельная ветка сделана, т.к. не был уверен, в каком виде это впиливать, но раз у Kostik все заработало, наверное, так и оставлю.

Ну а что касается документации в целом, то “программа подробно задокументирована на языке perl” (c)
К сожалению, кроме https://wiki.openstreetmap.org/wiki/RU:Osm2mp , ничего нет. Т.е. если вам действительно приглянулся этот конвертер, чтобы разобраться во всех тонких моментах, иногда придется погружаться в чтение исходников. Ну а если вы узнали что-то новое и можете пополнить этим wiki, будет замечательно.

gryphon
Пытался на днях собрать карту Египта и столкнулся с вылетом конвертора. Причём и границу и osm дамп пробовал делать по разному, osmosisом, osmconvertом, по границе и просто конвертировать из pbf. Ни в какую. Вылет после:

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

Loading configuration...

Loading OSM data from file data/Maps/Egypt/Egypt.osm...

Initialising bounds from file data/Maps/Egypt/bounds/Egypt.poly...
  1792 segments

Loading search areas...

.pl версия при этом никаких ошибок в лог не пишет, .exe`шная версия пишет следующее:

Unrecognized character \x90; marked by <-- HERE after MZ<-- HERE near column 3 at osm2mp.exe line 1.

и тоже вылетает.

В чём может быть дело?

Собрал exe`шную версию getbound.

PS; dll`ки вроде не нужны, но закинул на всякий случай.

Мда. Выглядит не очень. Ошибка гуглится, но толку мало.
Если другие дампы на этих скриптах и конфигах собираются, надо искать, где косяк в данных (может, имя тега на арабском или что-то подобное)
У меня Египет собирался меньше месяца назад, но по кусочкам.

Недавно столкнулся с какой-то непоняткой при конвертации Крыма. Конвертер вылетел на этапе “Loading search areas…”. При этом перед этим Беларусь сконвертилась без проблем. Ради интереса проверил дома, такая же фигня. На следующий день дома скачал новый дамп, думал с ним что-то не то. Запустил чисто проверить на “клопе” (слабеньком нетбуке), увидел, что конвертация это место прошла. Остановил и включил большой комп, но на нем опять вылет. Опять запустил на “клопе” и он все, хоть и долго, но сделал. Взял этот же дамп на работу, опять вылет. Тут я уже совсем ничего не понял. Как умудрился все сделать маленький нетбук, когда два мощных компа вылетают :(.

Очевидно, запускается

perl osm2mp.exe

Запускается как и .pl версия.


chcp 65001
osm2mp.pl --config=cfg-navitel\navitel-ru-utf8.cfg --bpoly=poly/Egypt.poly --default-country=EG --default-region="Egypt" --mapname="Egypt" --default-lang=ar --target-lang=en --water-back --addrinterpolation --shorelines --disableuturns --output=Maps/mp/Egypt.mp  Maps/osm/Egypt.osm


Другие то страны нормально собираются.

Хорошая штука!
Мне, ну… очень понравилась. Всё чётко работает!
Спасибо!
Скажи… эта сборка с исправленной работой ключа “clip”, о чём говорил “gryphon”?

PS: На будущее - желательно анонсировать особенности, изменения сборки.

Потестите, пожалуйста, как работает опция clip в последней версии https://github.com/cheshire-mouse/osm-getbound

В прошлой слишком намудрил с объединениями полигонов

gryphon ИМХО что то не то. Вот так вот например получается полигон Молдовы без Приднестровья. Кусок всё равно на месте, в прошлой такого не было.

perl getbound.pl md -clip -onering -o data/Maps/Moldova/bounds/moldova.poly

PS: Кстати стал наблюдать такую ошибку в твоей сборке osm2mp, чего раньше не было:

Writing crossroads...     Use of uninitialized value in hash element at script/osm2mp.pl line 1362.
Use of uninitialized value in hash element at script/osm2mp.pl line 1376.
Use of uninitialized value in hash element at script/osm2mp.pl line 1362.
Use of uninitialized value in hash element at script/osm2mp.pl line 1367.
Use of uninitialized value in hash element at script/osm2mp.pl line 1376.
Use of uninitialized value in hash element at script/osm2mp.pl line 1376.
42311 restrictions, 0 signs

All done!!

Издалека выглядит странно, но если приблизить, то, похоже, все сделано правильно (хотя и немного кривовато): Приднестровье честно вырезано, но там есть маленький кусочек Молдавии

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

Вот преждняя версия getboud:

А вот новая:

Ключи в обоих случаях одинаковые. Старый вариант меня устраивает больше.

Если ты применяешь эти две границы для osmconvert и osm2mp, результат отличается?