auto-sync: 2026-05-04 00:10:01
This commit is contained in:
Binary file not shown.
@@ -1,12 +1,11 @@
|
|||||||
-- enduro.lua — OSRM профиль для эндуро-роутинга "Дикий путь"
|
-- enduro.lua — OSRM профиль для эндуро-роутинга "Дикий путь"
|
||||||
-- Стратегия: weight = distance_meters * penalty
|
-- weight = штраф для выбора маршрута (грунтовки дешевле асфальта)
|
||||||
-- Грунтовки penalty=1, асфальт penalty=10+
|
-- duration = реальное время (для ETA)
|
||||||
-- OSRM минимизирует суммарный weight → выбирает грунтовки
|
-- Разделены явно через result.weight и result.duration
|
||||||
|
|
||||||
api_version = 4
|
api_version = 4
|
||||||
|
|
||||||
-- Штраф за метр пути (меньше = предпочтительнее)
|
-- Штраф за метр пути (меньше = предпочтительнее)
|
||||||
-- Грунтовки ~1, асфальт ~10+
|
|
||||||
local highway_penalty = {
|
local highway_penalty = {
|
||||||
track = 1.0,
|
track = 1.0,
|
||||||
bridleway = 1.2,
|
bridleway = 1.2,
|
||||||
@@ -16,19 +15,19 @@ local highway_penalty = {
|
|||||||
unclassified = 3.0,
|
unclassified = 3.0,
|
||||||
residential = 5.0,
|
residential = 5.0,
|
||||||
service = 6.0,
|
service = 6.0,
|
||||||
tertiary = 12.0,
|
tertiary = 15.0,
|
||||||
tertiary_link= 12.0,
|
tertiary_link= 15.0,
|
||||||
secondary = 18.0,
|
secondary = 25.0,
|
||||||
secondary_link = 18.0,
|
secondary_link = 25.0,
|
||||||
primary = 25.0,
|
primary = 40.0,
|
||||||
primary_link = 25.0,
|
primary_link = 40.0,
|
||||||
trunk = 40.0,
|
trunk = 60.0,
|
||||||
trunk_link = 40.0,
|
trunk_link = 60.0,
|
||||||
motorway = 999.0,
|
motorway = 999.0,
|
||||||
motorway_link= 999.0,
|
motorway_link= 999.0,
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Скорости (км/ч) — только для ETA, не влияют на выбор маршрута
|
-- Скорости (км/ч) — только для ETA
|
||||||
local highway_speeds = {
|
local highway_speeds = {
|
||||||
track = 30,
|
track = 30,
|
||||||
bridleway = 20,
|
bridleway = 20,
|
||||||
@@ -50,7 +49,7 @@ local highway_speeds = {
|
|||||||
motorway_link= 90,
|
motorway_link= 90,
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Мультипликатор по качеству грунтовки (grade1=лучший, grade5=тяжёлый)
|
-- Мультипликатор по качеству грунтовки
|
||||||
local tracktype_multiplier = {
|
local tracktype_multiplier = {
|
||||||
grade1 = 1.0,
|
grade1 = 1.0,
|
||||||
grade2 = 1.1,
|
grade2 = 1.1,
|
||||||
@@ -62,7 +61,7 @@ local tracktype_multiplier = {
|
|||||||
function setup()
|
function setup()
|
||||||
return {
|
return {
|
||||||
properties = {
|
properties = {
|
||||||
weight_name = 'duration',
|
weight_name = 'routability',
|
||||||
max_speed_for_map_matching = 30/3.6,
|
max_speed_for_map_matching = 30/3.6,
|
||||||
call_tagless_node_function = false,
|
call_tagless_node_function = false,
|
||||||
traffic_light_penalty = 2,
|
traffic_light_penalty = 2,
|
||||||
@@ -89,7 +88,7 @@ function process_way(profile, way, result)
|
|||||||
|
|
||||||
local speed = highway_speeds[highway] or 30
|
local speed = highway_speeds[highway] or 30
|
||||||
|
|
||||||
-- Мультипликатор по tracktype для грунтовок
|
-- Мультипликатор по tracktype
|
||||||
local tracktype = way:get_value_by_key("tracktype")
|
local tracktype = way:get_value_by_key("tracktype")
|
||||||
if tracktype and tracktype_multiplier[tracktype] then
|
if tracktype and tracktype_multiplier[tracktype] then
|
||||||
penalty = penalty * tracktype_multiplier[tracktype]
|
penalty = penalty * tracktype_multiplier[tracktype]
|
||||||
@@ -97,16 +96,16 @@ function process_way(profile, way, result)
|
|||||||
|
|
||||||
result.forward_mode = mode.driving
|
result.forward_mode = mode.driving
|
||||||
result.backward_mode = mode.driving
|
result.backward_mode = mode.driving
|
||||||
|
|
||||||
|
-- duration = реальное время (секунды на метр)
|
||||||
|
local speed_mps = speed / 3.6
|
||||||
result.forward_speed = speed
|
result.forward_speed = speed
|
||||||
result.backward_speed = speed
|
result.backward_speed = speed
|
||||||
|
|
||||||
-- duration = реальное время (секунды) — используется для ETA
|
-- weight = штраф для роутера (penalty на метр)
|
||||||
-- weight = штраф для роутера — грунтовки дешевле асфальта
|
-- forward_rate/backward_rate задают weight_per_meter
|
||||||
-- Задаём rate: weight_per_meter = penalty / speed_mps
|
result.forward_rate = penalty
|
||||||
-- OSRM считает weight = rate * distance
|
result.backward_rate = penalty
|
||||||
local speed_mps = speed / 3.6
|
|
||||||
result.forward_rate = penalty / speed_mps
|
|
||||||
result.backward_rate = penalty / speed_mps
|
|
||||||
|
|
||||||
-- Одностороннее движение
|
-- Одностороннее движение
|
||||||
local oneway = way:get_value_by_key("oneway")
|
local oneway = way:get_value_by_key("oneway")
|
||||||
|
|||||||
Reference in New Issue
Block a user