You are not logged in.
- Topics: Active | Unanswered
Announcement
#1 2013-07-09 11:38:26
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Сборка OSRM - построение маршрутов
Иногда нужно бывает протестировать построение маршрутов, не дожидаясь обновления данных на серверах (или просто нет интернета). Или хочется поднять свой сервер, а Linux-а под руками нет...
С июня 2014 код подержки Visual Studio 2013 (включая Express) нашими совместными усилиями c Деннисом находится в основной ветке разработки
https://github.com/DennisOSRM/Project-OSRM/tree/develop
Автогенерируемые бинарные сборки вот тут: http://build.project-osrm.org
(графический интерфейс и батники обработки не включены, 64 бит Win7 и новее)
Полная "официальная" сборка с веб-интерфейсом (из файлов http://build.project-osrm.org и GIT-репозиториев):
osrm-win64.zip
Сборка Visual Studio 64 бит с дополнительной поддержкой Windows XP:
OSRM-win64xp.zip
32-битная сборка, совместимая с WinXP:
OSRM-win32.zip
(собрана MinGW, медленнее у меня примерно в 2 раза)
Использование описано в readme.txt (если кратко - кладем файл с картой в папку datа, запускаем Extract.bat , Server.bat и получаем в браузере локальную копию http://map.project-osrm.org/)
P.S. Кому хочется упаковывать из интернета самому и чаще меня - вот мой сборочный комплект (нужен только Git for Windows, запускать pack.bat, результат в папке OSRM и архиве):
OSRM-builder.zip
Откомпилировал свежий OSRM ( http://map.project-osrm.org/ http://project-osrm.org/ ) под Windows (VS2012) и решил поделиться с сообществом - иногда нужно бывает протестировать построение маршрутов, не дожидаясь обновления данных на серверах (или просто нет интернета).
Delevop-сборка: https://dl.dropboxusercontent.com/u/633 … ws-New.zip
Старая 64бит: OSRM-Windows.zip
32бит: OSRM-Windows32.zip
Last edited by akks (2014-06-13 17:10:57)
Offline
#2 2013-07-09 12:06:04
- Nikolya
- Member
- From: Краснодар
- Registered: 2010-08-17
- Posts: 937
Re: Сборка OSRM - построение маршрутов
под Windows 32 бы))
Offline
#3 2013-07-09 12:11:47
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
под Windows 32 бы))
Оно столько памяти жрёт, что win32 не поможет, наверное Но на всякий случай попробую.
Offline
#4 2013-07-09 13:17:22
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Добавил Win32 - вдруг подойдёт (пересобрал весь зоопарк еще раз, cmake рулит).
Offline
#5 2013-07-09 14:17:43
- Vitalts
- Member
- From: Estonia
- Registered: 2010-12-30
- Posts: 1,440
Re: Сборка OSRM - построение маршрутов
MSVCR110.dll бы для x64...
Offline
#6 2013-07-09 17:27:02
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
MSVCR110.dll бы для x64...
ОК, добавил в обе сборки. Не у всех же Windows 8
Если ругается при запуске - правьте data/.stxxl блокнотом - путь к временному файлу и объём в Мб должны быть правильными (по умолчанию 10 гб в d:/temp).
Кстати - извиняюсь, под Windows XP не заработает (VS2012 требует для этого отдельных танцев с бубном, завтра попробую).
Last edited by akks (2013-07-09 17:29:19)
Offline
#7 2013-07-09 17:32:32
- Vitalts
- Member
- From: Estonia
- Registered: 2010-12-30
- Posts: 1,440
Re: Сборка OSRM - построение маршрутов
Спасибо, по сохраненкам из JOSM работает отлично.
Offline
#8 2013-07-10 10:42:59
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Обновил архивы до версии develop от 2 июля: https://github.com/DennisOSRM/Project-O … ts/develop
+ возможно, теперь заработает на XP (но если будет ругаться на dll - значит с XP все совсем глухо).
Last edited by akks (2013-07-10 10:58:30)
Offline
#9 2013-07-10 12:36:55
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
К моему сожалению, похоже, что отредактированные выгрузки из JOSM правильно не обрабатываются - в них отрицательные ID узлов и линий...
Offline
#10 2013-07-10 14:18:49
- KonTur
- Member
- From: SPB
- Registered: 2010-03-10
- Posts: 1,645
Re: Сборка OSRM - построение маршрутов
в них отрицательные ID узлов и линий...
Отрицательные iD - пока данные на сервер не зальются, id назначается сервером. Залить, скачать, сохранить.
Offline
#11 2013-07-17 10:34:13
- Niker
- Member
- From: Нск
- Registered: 2013-07-17
- Posts: 10
Re: Сборка OSRM - построение маршрутов
А где можно увидеть исправления в коде, позволившие такую компиляцию?
И какие версии библиотек использовались?
Просто я сам пытался откомпилить, и даже откомпилилось после плясок с бубном, но не заработало В итоге было принято политическое решение оставаться на линухе.
Если учесть, что мне нужна собственная версия с модифицированным кодом - буду весьма признателен за необходимые патчи к оригиналу.
Offline
#12 2013-07-17 10:54:54
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
А где можно увидеть исправления в коде, позволившие такую компиляцию?
И какие версии библиотек использовались?
Просто я сам пытался откомпилить, и даже откомпилилось после плясок с бубном, но не заработалоВ итоге было принято политическое решение оставаться на линухе.
Если учесть, что мне нужна собственная версия с модифицированным кодом - буду весьма признателен за необходимые патчи к оригиналу.
Да, секрета никакого. Дела обстоят так:
Собирал Visual Studion 2012, начинал с https://github.com/DennisOSRM/Project-O … ompilation , но очень многое там уже устарело, да и код потерял совместимость...
Создал карточку с патчем (v4) и форк репозитория:
https://github.com/DennisOSRM/Project-OSRM/issues/646
https://github.com/alex85k/Project-OSRM
(там же есть совмеcтимые варианты Osmium и Taginfo)
Dennis обещал внедрить, когда доберётся до чьей-нибудь машины c Visual Studio
Библиотеки:
* Boost (лучше свежий, инструкции по сборке VS в сети есть)
* libz, bzip2 и libxml2 (дистрибутивы и инструкции с оф. сайтов, проблем не было)
* Google Protobuf 2.5 (в комплекте есть проект Visual Studio)
* stxxl (только c svn!) - есть makefile-ы и проект, в настройках врубаем boost и прописываем BOOST_ROOT
* osmpbf - либо вручную, либо моим cmake-вариантом (нужно сказать, где лежит protobuf): https://github.com/alex85k/OSM-binary
(если ругается - закомментировать строчку add_subdirectory(tools) в CMakeLists.txt)
* lua 5.2 : https://github.com/LuaDist/lua , сборка через cmake
* luabind : заработало с обновленным сторонним вариантом https://github.com/Oberon00/luabind
(сборка через cmake, ссылаемся на .lib и include от Lua и прописываем BOOST_ROOT и при необходимости Boost_USE_STATIC_LIBS )
Скомпилированыые библиотеки складываем в какую-то папку (CMake - запускаем проект INSTALL, предварительно CMAKE INSTALL DIR в cmake-gui).
Сам OSRM с исправленным кодом собирается тоже CMake-ом с ручным указанием всех путей к библиотекам в cmake-gui . Он на них по очереди ругается и мы в ответ прописываем путь к include и lib файлам вручную (стандартных путей для них под Windows не предусмотрено, так что - ко всем 9 библиотекам). При сборке около 500 Warning-ов (в основном stxxl)
Под Linux-ом или FreeBSD всё намного легче, но luabind и stxxl всё равно иногда приходится собирать руками (если в репозиториях их нет или они ругаются прир компиляции из-за протухания).
А не работает откомпиленный OSRM обычно из-за отсутствия файлика .stxxl с указанием временного файла или папки profile . Ну и раньше 64-бит ID из xml неправильно читало.
Last edited by akks (2013-07-17 11:09:54)
Offline
#13 2013-07-17 12:08:46
- Niker
- Member
- From: Нск
- Registered: 2013-07-17
- Posts: 10
Re: Сборка OSRM - построение маршрутов
Спасибо!
У меня как раз на stxxl падал, где-то в потрохах. Про версию (только c svn!) - это существенно. C файлом ".stxxl" я разобрался достаточно быстро, патч 64-bit ID вы сделали уже давно. Но все равно падало.
luabind тоже много крови попил, этот форк я не находил.
Кстати, быстродействие виндовой версии не сверяли с линуксом на таком же железе?
Offline
#14 2013-07-17 12:17:41
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Спасибо!
У меня как раз на stxxl падал, где-то в потрохах. Про версию (только c svn!) - это существенно. C файлом ".stxxl" я разобрался достаточно быстро, патч 64-bit ID вы сделали уже давно. Но все равно падало.
luabind тоже много крови попил, этот форк я не находил.Кстати, быстродействие виндовой версии не сверяли с линуксом на таком же железе?
У меня FreeBSD на виртуалке, но работает примерно с той же скоростью... В Ubuntu перезагрузиться и всё пересобрать пока некогда...
Кстати, для скорости можно ещё поставить luajit (с недавних пор поддерживается) и скомпилировать stxxl с параллельностью (но я уже не стал мучаться). И компилятор Intel, наверное, помог бы (под Linux тоже, кстати, там он даже бесплатный/non-commercial есть)...
Last edited by akks (2013-07-17 12:20:36)
Offline
#15 2013-07-17 13:49:22
- Niker
- Member
- From: Нск
- Registered: 2013-07-17
- Posts: 10
Re: Сборка OSRM - построение маршрутов
Lua там только в экстракте участвует, для роутинга не нужен, как я понимаю.
stxxl с параллельностью большого прироста не даст - алгоритмы линейные.
А вот скорость работы с диском может от оси зависеть очень сильно.
Насчет интела не уверен - вроде в каких-то тестах vc2012 его даже делал.
На виртуалке у меня был ubuntu server, вживую - ubuntu 13.04. Живой линух виртуалку раза в 1.5 превосходит. При этом на машине 8 гиг, виртуалке давал 6.
Offline
#16 2013-07-18 00:26:01
- Niker
- Member
- From: Нск
- Registered: 2013-07-17
- Posts: 10
Re: Сборка OSRM - построение маршрутов
Откомпилил, однако... Надо было сначала проверить.
Не работает роутинг под виндой. Вот этот "маршрут" и под линуксом, и на основном сервере показывается совершенно нормально.
http://map.project-osrm.org/?hl=ru&loc= … ,83.147780
Под виндой же - что попало. Причем если брать данные, сконверченные на линухе - все равно что попало, т.е. ошибка именно в роутинге. И на моем бинарнике, и на вашем.
А если в дебагере гнать, то и ошибки сыпятся где-то в потрохах не то буста, не то stxxl.
Если интересно - вот на этих данных проверял: http://be.gis-lab.info/data/osm_dump/du … VS.osm.pbf
Offline
#17 2013-07-18 06:21:37
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Да, печально. Проверил - всё так и есть (уезжает разворачиваться куда попало). C debug-ом там вообще тяжело, библиотеки же отладочные надо (+рабочая папка меняется)...
Иногда неправильно строит даже на крохотном кусочке карты без единого тега oneway, access и без ограничений на поворот. 64-битных ID тоже нет (максимальный - 1859717407): https://dl.dropboxusercontent.com/u/633 … t2.osm.pbf
Offline
#18 2013-07-18 06:35:41
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Под виндой же - что попало. Причем если брать данные, сконверченные на линухе - все равно что попало, т.е. ошибка именно в роутинге. И на моем бинарнике, и на вашем
Можно для гарантии проверить osrm-routed под Linux, собранный из Windows-совместимых исходников... (проверяю на BSD)
(Может, патч кривоват? Вряд ли, конечно. Скорее всего, какое-нибудь преобразование типов по-другому сработало...)
Last edited by akks (2013-07-18 06:37:40)
Offline
#19 2013-07-18 06:59:13
- Niker
- Member
- From: Нск
- Registered: 2013-07-17
- Posts: 10
Re: Сборка OSRM - построение маршрутов
Мне кажется, либо преобразование типов, либо среди библиотек что-то совсем win32 затесалось.
Под линухом код проверю.
ЗЫ: Можно продолжить по скайпу. Мой nredko
Offline
#20 2013-07-18 07:20:42
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
ЗЫ: Можно продолжить по скайпу. Мой nredko
Можно, только у меня микрофона и камеры нет )
Мой код, оказывается, не был в репозитории, теперь вот:
https://github.com/alex85k/Project-OSRM … evelop-win
Last edited by akks (2013-07-18 07:46:58)
Offline
#21 2013-07-22 09:54:15
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Если кто-то из заинтересованных спецов С++ может найти ошибку или несовместимость c VisualStudio в коде OSRM, приводящую к странным маршрутам - добро пожаловать!
https://github.com/DennisOSRM/Project-OSRM/issues/671
Из-за этого глюка OSRM под Windows неюзабелен... (мне казалось, что в ранней сборке ошибок не было, но это, наверное, не так). У автора нет доступа к VisualStudio (палёным в их краях не пользуются), так что вся надежда на вас )
Last edited by akks (2013-07-22 09:55:17)
Offline
#22 2013-07-22 13:42:27
- Mixail
- Member
- From: Беларусь, Минский район
- Registered: 2009-07-13
- Posts: 105
- Website
Re: Сборка OSRM - построение маршрутов
У автора нет доступа к VisualStudio (палёным в их краях не пользуются), так что вся надежда на вас )
Express же, нет?
Offline
#23 2013-07-22 14:55:25
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
akks wrote:У автора нет доступа к VisualStudio (палёным в их краях не пользуются), так что вся надежда на вас )
Express же, нет?
Хмм, наверное - да, спасибо ) Даже консольный Windows 7 SDK может прокатить...
P.S. Уже кормлю его Boost-ом...
Last edited by akks (2013-07-22 15:01:32)
Offline
#24 2013-07-22 18:56:53
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Пересобрал ещё раз с помощью Windows 7 SDK из консоли (вот мои батники: https://dl.dropboxusercontent.com/u/633 … d_OSRM.zip ) .
extract и prepare стали иногда вылетать, но баг в routed, кажется, куда-то испарился ))
Сборная сборка (2 старых exe +1 новый) на дропбоксе (32 бит не обновлял).
Автору OSRM доложил, он собирается всё проверить и починить.
Last edited by akks (2013-07-22 18:57:09)
Offline
#25 2013-07-23 07:49:47
- akks
- Member
- From: Ufa
- Registered: 2010-06-11
- Posts: 1,728
Re: Сборка OSRM - построение маршрутов
Да, баг пропал. Оказалось,
abs((long long) id1 -id2 )
был неудачным решением с беззнаковыми длинными числами (long long добавил я из-за ошибки компилятора VS2012)...
Старый бесплатный компилятор из Windows 7 SDK этого не переварил и заставил исправить.
Итог - сборка работает (снова VS2012), Dennis перепроверяет для включения патчей в основную ветку.
P.S. 32бит тоже пересобрал. Желающие могут пособирать и сами - вот скрипты (нужен только ms-компилятор, git, svn, cmake и собранный boost)
Last edited by akks (2013-07-23 09:13:35)
Offline