You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OSRM特定道路限行时段配置无效问题排查及方案咨询

问题排查与解决方案

原代码的核心错误

  1. 车辆类型匹配错误:原代码用*会禁止所有车辆通行,不符合仅禁止出租车的需求,需明确指定taxi类型。
  2. 街道名匹配失效:目标街道是越南语的Cầu Giấy,原代码用无重音的Cau Giay无法匹配带重音的原名,导致规则根本没作用到目标道路上。
  3. OSRM API语法错误:直接赋值result.restriction不符合OSRM Lua脚本的权限配置规范,正确做法是通过access字段配置带时段条件的通行权限。

修正后的Lua脚本

function restrict(way, result)
    local name = way:get_value_by_key('name')
    if name then
        -- 标准化街道名:去掉重音、转小写,确保匹配到目标街道
        local normalized_name = string.gsub(string.lower(name), '[áàảãạăắằẳẵặâấầẩẫậéèẻẽẹêếềểễệíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵ]', function(c)
            local accent_map = {
                ['á']='a', ['à']='a', ['ả']='a', ['ã']='a', ['ạ']='a',
                ['ă']='a', ['ắ']='a', ['ằ']='a', ['ẳ']='a', ['ẵ']='a', ['ặ']='a',
                ['â']='a', ['ấ']='a', ['ầ']='a', ['ẩ']='a', ['ẫ']='a', ['ậ']='a',
                ['é']='e', ['è']='e', ['ẻ']='e', ['ẽ']='e', ['ẹ']='e',
                ['ê']='e', ['ế']='e', ['ề']='e', ['ể']='e', ['ễ']='e', ['ệ']='e',
                ['í']='i', ['ì']='i', ['ỉ']='i', ['ĩ']='i', ['ị']='i',
                ['ó']='o', ['ò']='o', ['ỏ']='o', ['õ']='o', ['ọ']='o',
                ['ô']='o', ['ố']='o', ['ồ']='o', ['ổ']='o', ['ỗ']='o', ['ộ']='o',
                ['ơ']='o', ['ớ']='o', ['ờ']='o', ['ở']='o', ['ỡ']='o', ['ợ']='o',
                ['ú']='u', ['ù']='u', ['ủ']='u', ['ũ']='u', ['ụ']='u',
                ['ư']='u', ['ứ']='u', ['ừ']='u', ['ử']='u', ['ữ']='u', ['ự']='u',
                ['ý']='y', ['ỳ']='y', ['ỷ']='y', ['ỹ']='y', ['ỵ']='y'
            }
            return accent_map[c] or c
        end)
        -- 匹配标准化后的街道名
        if string.find(normalized_name, 'cau giay') then
            -- 配置权限:出租车平时可通行,指定时段禁止通行
            result.access = (result.access or '') .. 'taxi: yes; taxi @ (Mo-Fr 16:00-19:00): no;'
        end
    end
end

function way_function(way)
    local result = {}
    restrict(way, result)
    return result
end

验证步骤

  1. 确认地图数据:用Overpass Turbo查询目标街道,确保其name字段确实为Cầu Giấy(或包含该名称)。
  2. 重建OSRM数据:修改脚本后,重新执行osrm-extract和osrm-contract命令生成新的路由数据。
  3. API测试:调用OSRM的路由API时,指定profile=taxi,并设置出发时间在16:00-19:00之间,检查路线是否绕开了Cau Giay街道。

内容的提问来源于stack exchange,提问作者the rocket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:06:06