auto-sync: 2026-05-04 00:10:01

This commit is contained in:
Stream
2026-05-04 00:10:01 +03:00
parent d58c82fc3f
commit 989fc3537a
2 changed files with 22 additions and 23 deletions

View File

@@ -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")