Graphhopper
OSRM перестал быть единственным презентабельным движком построения маршрутов по OpenStreetMap. Вчера выпустили первую публичную версию Graphhopper: java-библиотеки, способной работать не только под Apache Tomcat и в составе офлайновых java-приложений, но и под Android. В отличие от OSRM, для Graphhopper крайне важна экономия памяти, поэтому ей хватает 32 мегабайт на роутинг по Германии.
Сайт Graphhopper строит маршруты для машин, велосипедов и пешеходов по всей планете. Тестовый маршрут Глазго — Магадан посчитался за полторы секунды, пешеходный маршрут на полторы тысячи километров короче автомобильного и включает множество паромов, отмеченных route=ferry, foot=yes. Один лишь недочёт: маршрут не скачать.
Он же GraphHopper :)
Сайт, надеюсь, дотянут со временем...
И это первый раз, когда я обратил на это внимание :) Спасибо, поправил везде.
Peter from GraphHopper here. Thanks for mentioning the release. Regarding the missing save option: feel free to contribute ;) or create an issue maybe someone (including me) needs the feature and is willing to spend some time on it.
BTW: In the URL it is still grasshopper :)
Не работает в Opera 9.62 и IE 8.
Зато OSRM работает во всех браузерах, большой респект за кроссбраузерность :)
Ещё один роутер, который не поддерживает way в via у restriction-ов. :)
Или он вообще restriction-ы не обрабатывает?
Вроде бы поддержки рестрикшенов нет. Но добавить на первый взгляд не сложно.
Еще, судя по
public interface RoutingAlgorithm
....
Path calcPath( int from, int to );
Пока поддерживаются только алгоритмы возвращающие 1 путь.
Что-то на сайте выглядит слишком быстро для 32мб RAM, не верится для точного роутинга :) Для 32мб все-таки надо загружать и выгружать достаточно прилично, особенно для любого(!) маршрута через всю Германию, тем более он на java написан.
В любом случае, у них есть backend для OsmAnd. Единственное, что не договорились о передачи информации о дорогах, в смысле маршрут без полос и т. п. Но пойду потесриую
Но честно говоря, чудес не жду :)
Предлагает поворачивать на Невский с Литейного :(
Потестировал, даже впечатлен. На Android маршруты 500 км считает до 5 секунд (не Германия, а Польша), что конечно очень хороший результат, особенно для plain Java с ограничениями 30Мб. С другой стороны, опять же недостатки contraction hierarchy.
Если представить себе, что можно записать в файл расстояния между точками, то рассчет маршрута занимал бы доли секунды, но файл был бы гигантский.
Так вот к чему я, Польша роутинг данные (без названий) занимает 100Мб, что на самом деле многовато, но петрушка в том, что для Car/Bicycle/Pedestrian должен быть свой файл, то есть 300Мб. И опять же невозможно повесить опции для типа avoid something, prefer. Я слышал Dennis собирался как-то пофиксить это в contraction hierarchies алгоритме и включить информацию по пробкам, но воз и ныне там.
Возможно я не понимаю до конца CH алгоритма, но мне кажется в этом есть концептуальная проблема. Надеюсь на удачное разрешение вопроса динамического роутинга и сравнительный размер файла :) Для сайтов без динамики подходит более чем! Для узконаправленных мобильных решений подходит однозначно!
Работает быстро, но без restriction’ов и промежуточных точек как-то очень грустно. Зато для великов считает, для меня это огромный плюс в сравнении с OSRM (он по грунтовкам не хочет роутить).
Надеюсь будет развиваться.
Виктор! ждём OsmAnd 1.6 !!! ;)
Что-то он из Владивостока в Новосибирск через Китай ведёт:
http://graphhopper.com/maps/?point=43.112262%2C131.935501&point=55.027038%2C82.937508&vehicle=CAR
Плюс как-то не учитывает уровни дорог — ведёт по городу, вместо того, чтобы вести по хорошей (на уровень выше) объездной:
http://graphhopper.com/maps/?point=43.541705%2C131.974297&point=44.041699%2C132.036438&vehicle=CAR
Хотя наверно всё это мелочи.