# 处理分隔式道路 分隔式道路指中间设有隔离带,两侧各有若干单向车道的道路。在 OpenStreetMap 中,分隔式道路以两条单向道路(`way` 对象)表示。这会导致识别路口时出现问题。`tpov_match.py` 中的 `divided_process` 函数与 `process_divided` 参数列表控制了是否在识别路口时包括或排除某些道路。 ## 分隔式道路路口示例 下图展示了一条从双向变为分隔式的道路,与另一条分隔式道路以一个倾斜的丁字路口相交。行驶方向如下(**此图默认右行交通**): - 路1(东西向): - G -> H -> J -> K(橙) - D -> C -> B -> A(红) - 路2(南北向): - P -> N -> M -> J -> F -> C(蓝 -> 紫) - B -> E -> H -> L -> N -> P(青 -> 蓝) 所有后续文档将参考下图。 ![分隔式道路路口示例](../../media/divided_diagram.png) *分隔式道路路口示例* ## `process_divided` 参数 `process_divided` 参数列表适用于所有分隔式道路处理案例。 - `angle` - 分隔式道路两侧的最大角度差(例如 `GH` 与 `BA`)。如果角度差大于此值,两侧将被视为两条不同的道路。 - `length` - 分隔式道路两侧的最大距离(例如 `BEH` 或 `CFJ`)。如果距离大于此值,两侧将被视为两条不同的道路。 - `same_name` - 如 `True`,分隔式道路两侧必须同名才能被视为同一条道路。 - `apply_filter` - 如 `True`,将在分隔式道路处理中使用 `exit_filter` 函数([文档](match_params.md)),例如一个一侧是辅路的十字路口被视为丁字路口。 - `enabled_cases` - 一个包含启用的案例(见下文)的列表。目前有 **4** 个案例。 ## 案例1: 排除通向分隔式道路对侧的短支路 行驶路径:G -> H -> J -> K 合理的路口表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | H | | J | L | 直行 | 纯逻辑表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | H | | J | L | 直行 | | J | F | K | | 直行 | 案例1排除了支路 `JFC`,因为它只通向分隔式道路的对侧。 参数: - `angle`:`HJ` 与 `CB` - `length`:`JFC` ## 案例2: 排除在转弯时通向分隔式道路对侧的出口 行驶路径:D -> C -> B -> E -> H -> L 合理的路口表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | B | E | A | | 左转 | 纯逻辑表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | B | E | A | | 左转 | | H | J | L | | 直行 | 案例2排除了分隔式道路对侧路段 `HJ`。 参数: - `angle`:`CB` 与 `HJ` - `length`:`BEH` ## 案例3: 在丁字路口远侧转弯(右行交通中的左转)到分隔式道路时添加出口 行驶路径:M -> J -> F -> C -> B -> A 合理的路口表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | F | | J | K | 直行 | | C | B | | | 左转 | 纯逻辑表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | F | | J | K | 直行 | 案例3为了显示左转添加了一行,尽管因为只有一个行驶方向 `C` 处并没有路口。 参数: - 角度(两者都要满足): - `prev_angle`:`MJ` 与 `JF` - `angle`:`JK` 与 `CB` - `length`:`JFC` ## 案例4: 当分隔式道路合并回双向道路时排除“路口” 行驶路径:H -> L -> N -> P 合理的路口表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | | | | | | 纯逻辑表示: | 当前 | 左侧 | 直行 | 右侧 | 方向 | | :-: | :-: | :-: | :-: | :-: | | N | M | P | | 直行 | 案例4排除了掉头回同一条道路的路段 `NM`。 参数: - `angle`:`HL` 与 `MJ`(**目前未使用**) - 距离(两者都要满足): - `dist`:`LM` - `dist2`:`HJ`