Создание и поддержка своего набора данных для графа дорожной сети

Добрый день.
Подскажите, пожалуйста, куда копать и реально ли это вообще…
Мы по работе используем прокладку маршрутов на базе GraphHopper. Как это происходит:

  1. Периодически качаем дамп OSM для России (раз в месяц)
  2. GraphHopper конвертирует его в свой формат (минут 30)
  3. В дальнейшем GraphHopper использует уже свои готовые данные и не требуется переконвертация.
    Но, клиентам иногда требуется вносить быстрые и временные правки (например, перекрытие дороги, ремонт и т.д), чтобы прокладка маршрутов велась по актуальным данным.
    И вот тут два пути видится:
  4. Вносить правки в общий дамп OSM через редакторы - но это некрасиво и не факт, что кто-нибудь их не откатит.
  5. Вносить правки в какой-то свой “слой правок”, делать слияние “основного слоя” (загруженный дамп) и “слоя правок” (свои наработки), после чего подсовывать уже “слитый” дамп GraphHopper - у.

Коллеги, подскажите, как правильнее и удобнее делать такие вещи?

Если там действительно ремонт или ещё что, то почему нет.

Это-то понятно - такие вещи не грех и вынести на общую карту, но бывают краткосрочные модификации, которые всем остальным будут только мешать, а клиенту - нужны.

  1. Завести отдельный топик на этом форуме с названием типа “как поддерживать актуальность дорожного графа после выгрузки из ОСМ?”. Потому как вы попали в топик по Екатеринбургу, его мало кто смотрит, а вопрос глобален.

  2. По существу

Если эти правки соответствуют состоянию местности на момент внесения, то и вносите их прямо в базу ОСМ. Мы все за актуальность. Делайте робота по ежедневной конвертации и всем будет хорошо.

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

Теоритически (ну то есть он их открывает) josm-ом можно создать (а может и нет) файл правки и потом накатить его на дамп как обновление.

Видимо нет, но его очень легко создать вручную если допустим просто поставить на точке дороги теги “барьера”.

Например?

Добрый день.
Подскажите, пожалуйста, куда копать и реально ли это вообще…
Мы по работе используем прокладку маршрутов на базе GraphHopper. Как это происходит:

  1. Периодически качаем дамп OSM для России (раз в месяц)
  2. GraphHopper конвертирует его в свой формат (минут 30)
  3. В дальнейшем GraphHopper использует уже свои готовые данные и не требуется переконвертация.
    Но, клиентам иногда требуется вносить быстрые и временные правки (например, перекрытие дороги, ремонт и т.д), чтобы прокладка маршрутов велась по актуальным данным.
    И вот тут два пути видится:
  4. Вносить правки в общий дамп OSM через редакторы - но это некрасиво и не факт, что кто-нибудь их не откатит.
  5. Вносить правки в какой-то свой “слой правок”, делать слияние “основного слоя” (загруженный дамп) и “слоя правок” (свои наработки), после чего подсовывать уже “слитый” дамп GraphHopper - у.

Коллеги, подскажите, как правильнее и удобнее делать такие вещи?

Вот была такая мысль тоже, но мозг уже поломался от JOSM-а. Как именно такое сделать? 8)
Кстати - создал новую тему:
http://forum.openstreetmap.org/viewtopic.php?id=29655

Эмулируйте вот такие файлы изменений и накатывайте их osmupdate на файл дампа.

Например - некоторым автомобилям можно проезжать по некоторым частным дорогам, а остальным - нет.

Подскажите, как создавать такие файлы?

Блокнотом :slight_smile: Вам нужно найти нужную точку (её id), прикинуть её версию в вашем дампе и увеличив на единицу дописать теги (не забыв старые, а то они пропадут).

Блокнотом конечно классно, но клиент не поймет…

Ох. В общую базу такое нельзя, конечно. А отдельно вы намучаетесь поддерживать базу этих разрешений. То есть была, скажем, в базе ОСМ дорога №213651276, и вы знали, что ей нужно перед конвертацией вкатить такие-то разрешения. А я ее разрезал пополам, и в худшем случае появилось две новых дороги с новыми номерами. Любому другому навигатору это нормально, т.к. связность осталась, а вам придется или вручную отслеживать такие правки и добавлять два новых правила, или робота писать, который анализируя местоположение дорог в графе или на местности автоматически вкатывает нужные разрешения.

А есть какие-то формальные правила доступа (принадлежность к организации, тип ТС или т.п.).
Если есть, то можно замутить препроцессор на базе тегов access/operator/network и т.п.

Клиенты не разрешат такие данные выносить в общий дамп, к сожалению.

Похоже, вы правы. Начинаю понимать суть проблемы.

Что именно не разрешат?
К примеру, если нужно разрешение доступа для конкретных типов транспорта, то общую базу можно вообще не трогать.
Или, к примеру, если дорога принадлежит/обслуживается какой-то организацией, и нужно разрешить доступ к ней машинам этой организации - то в общую базу на дорогу достаточно только поставить тег operator с названием этой организации (ничего секретного).

trincoru
Посмотрите это, может подойдет.
http://shtosm.ru/2012/03/30/3/

Это вы еще не всю проблему поняли :slight_smile: Граф ОСМ свободный, бесплатный и в среднем довольно неплохой, но никто не гарантирует его связность в любой момент времени. Вандалы или новички его частенько портят то тут, то там. Есть валидаторы, но они только показывают потенциальные проблемы, в надежде что когда-нибудь активные участники заметят это и исправят. Сами валидаторы ничего не правят. Поэтому вы можете в какой-то момент нарваться на ситуацию, когда маршрут не находится, или находится с огромным объездом - просто потому, что в графе потерялась склейка двух дорог.