OSMNX图类型判定及无向边拆分相关技术问询
关于OSMNX图结构与路径规划的疑问
我正在基于OSMNX获取的图求解ATSP(不对称旅行商问题)和混合乡村邮递员问题(需访问图的部分边与弧),但对边的oneway属性存在疑问:原本认为oneway为True/False对应弧/边,却发现部分oneway为False的边存在(u,v)与(v,u)的完全副本,形似弧的形式。示例边数据如下:
u 29643182 v 29642967 key 0 osmid 4666441 oneway False lanes NaN ref NaN highway residential maxspeed 30 reversed True length 101.755 geometry LINESTRING (6.5082881 52.9963783, 6.5079751 52... bridge NaN name Zeeltstraat junction NaN access NaN area NaN
u 29642967 v 29643182 key 0 osmid 4666441 oneway False lanes NaN ref NaN highway residential maxspeed 30 reversed False length 101.755 geometry LINESTRING (6.5079751 52.9972738, 6.5082881 52... bridge NaN name Zeeltstraat junction NaN access NaN area NaN
核心疑问:
- OSMNX生成的是有向图还是混合图?
- 当(u,v)的
oneway为False时,计算最短路径等场景下是否可双向通行?还是实际存在(u,v)与(v,u)两条弧? - 若将位于边(u,v)上的配送地址i拆分出(u,i)和(i,v)两条边,是否意味着只能从u到达i?
解答
OSMNX默认生成的是有向图:
它会根据OpenStreetMap的道路属性构建边的方向:oneway=True的道路只生成一条单向有向边;oneway=False的双向道路则生成两条方向相反的对称有向边,这就是你看到的“完全副本”的原因。oneway=False时的通行逻辑:
实际确实存在(u,v)和(v,u)两条弧,但这是OSMNX模拟双向通行的实现方式。计算最短路径时完全支持双向通行——从u到v走(u,v)弧,从v到u走(v,u)弧,效果和无向边一致,只是底层用两条有向边实现。拆分边后的通行问题:
如果只拆分出(u,i)和(i,v)两条边,那确实只能从u到i再到v,反向无法通行。但原边是双向的,正确的拆分应该同时生成反向的两条边:(v,i)和(i,u),这样才能保留原道路的双向通行属性,支持从v到达i。
内容的提问来源于stack exchange,提问作者kGame
相关产品推荐
相关产品推荐

