Traffic - sayr777/osrm-backend GitHub Wiki
Изменение данных о трафике
В версии OSRM 4.9.0
добавлена экспериментальная поддержка динамического трафика (пробковый сервис). Это достигается путем обновления модуляosrm-contract
и предоставления дополнительного текстового файла с расширением csv, в котором определяется вес каждого ребра дороги. Вес ребра дороги описывается построчно в следующем формате:
from_osm_id,to_osm_id,edge_speed_in_km_h
.
где:
*from_osm_id
и to_osm_id
- начальная (А) и конечные (В) точки прямолинейного пути.
*edge_speed_in_km_h
- скорость на прямолинейном пути.
Пример содержимого текстового файла приведен ниже:
425656,425655,14
50267,27780,32
25296,25295,24
34491,34494,3
Обратите внимание, что важен порядок описания начальной и конечной точек пути. Если если скорость возрастает, то описывается в виде
A,B,new_speed_forward
.
Если скорость падает то в виде
B,A,new_speed_backward
.
Чтобы обновить информацию о трафике выполните следующие команды:
./osrm-extract data.osm.pbf -p profile.lua --generate-edge-lookup
./osrm-contract data.osrm --segment-speed-file updates.csv
# первоначальная загрузка updates.csv
./osrm-contract data.osrm --segment-speed-file updates.csv
# периодическое обновление updates.csv (каждые 2-5 минут)
Для больших объемов данных Вы можете назначать частичное сокращение использования с помощью параметра --core
. Параметр core значительно увеличивает время запроса. Как результат построение альтернативных маршрутов сильно замедляется. Обратитет внимание что сервис viaroute
расчитывает альтернативные пути по умолчанию, поэтому следует позаботиться чтобы отключить их в каждом запросе на добавление &alternative=false
. Если Вы это не сделаете, ответ будет очень медленным.
./osrm-extract data.osm.pbf -p profile.lua --generate-edge-lookup
# about x8 speedup wrt to --core 1.0
./osrm-contract data.osrm --segment-speed-file updates.csv --core 0.8
# первоначальная загрузка updates.csv
./osrm-contract data.osrm --segment-speed-file updates.csv --core 0.8
# периодическое обновление updates.csv (каждые 2-5 минут)
Для большего ускорения используйте --level-cache
опцию:
./osrm-extract data.osm.pbf -p profile.lua --generate-edge-lookup
# For the first run a core of 1.0 is required
./osrm-contract data.osrm --segment-speed-file updates.csv --core 1.0
# первоначальная загрузка updates.csv
./osrm-contract data.osrm --segment-speed-file updates.csv --core 0.8 --level-cache true
# периодическое обновление updates.csv (каждые 2-5 минут)
Первоначальная загрузка кэша должна ыть выполнена с полной иерархией (core=1.0). После начальной загрузки, иерархию кэша ядра можно менять.