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). После начальной загрузки, иерархию кэша ядра можно менять.