Overpass API技术问询:如何查找车辆尽道路末端的楼梯?
解决车辆尽端路(行人可通行)末端带楼梯的Overpass查询问题
需求明确
- 检索伦敦地区内,对车辆而言是尽端路、但行人可通行的道路(类型为
residential或living_street) - 从上述道路中,筛选出末端连接楼梯(
highway=steps)的道路
示例场景:一条居住类道路走到头后,末端节点连接着一段楼梯供行人通行
原查询的问题
OpenStreetMap中没有统一的end或dead_end标签标记车辆尽端路,直接用这类标签筛选会失效,需要通过道路拓扑结构判断尽端路。
调整后的查询代码
[out:json]; area[name="London"]->.a; // 获取目标区域内的居住类道路 way(area.a)["highway"~"^(residential|living_street)$"]->.streets; // 遍历筛选车辆尽端路:仅1个节点连接同类型道路,判定为车辆尽端 foreach.streets->.street( node(w.street)->.nodes; node.nodes["highway"~"^(residential|living_street)$"](around:0)->.connected_nodes; if (count(connected_nodes) == 1) { .street->.dead_end_streets; } ); // 找出尽端路末端节点连接的楼梯 node(dead_end_streets)->.street_nodes; way(area.a)["highway"="steps"](node.street_nodes)->.connected_steps; // 输出结果:符合条件的尽端路 + 对应楼梯 (._; dead_end_streets;); (._;>;); out;
代码逻辑说明
- 先获取伦敦地区内所有
residential和living_street类型的道路 - 遍历每条道路,统计其节点连接的同类型道路数量:如果只有1个节点有同类型道路连接,说明这条道路对车辆是尽端路(行人仍可通过末端节点走楼梯)
- 提取这些尽端路的所有节点,找到连接这些节点的楼梯道路
- 最终输出符合条件的尽端路和对应的楼梯
内容的提问来源于stack exchange,提问作者root66
相关产品推荐
相关产品推荐

