首页 > 解决方案 > 在给定的边界框中使用 Overpass API 将交叉口过滤为(4 路交叉口、T 形交叉口和其他)

问题描述

这里有一个脚本可以处理来自 OSM 的数据以检测给定边界框中的交叉点。它的工作原理是在给定的边界框中获取所有路径,然后找到与这些道路共享公共节点的其他路径。这是执行此操作的查询,

way
  ["highway"]
  ["highway"!~"footway|cycleway|path|service|track|proposed"]
  (, , , )
  ->.relevant_ways;
foreach.relevant_ways->.this_way{
  node(w.this_way)->.this_ways_nodes;
  way(bn.this_ways_nodes)->.linked_ways;
  way.linked_ways
    ["highway"]
    ["highway"!~"footway|cycleway|path|service|track|proposed"]
    ->.linked_ways;
    (
        .linked_ways->.linked_ways;
        -
        .this_way->.this_way;
    )->.linked_ways_only;
    node(w.linked_ways_only)->.linked_ways_only_nodes;
    node.linked_ways_only_nodes.this_ways_nodes;
    out;
}

此查询返回所有类型的交叉口(4 路交叉口、T 形交叉口、...)。

问题:有没有办法进一步过滤掉交叉口到四向交叉口和丁字路口?

我的一个想法是检查公共节点是否是一种方式的端点,这会形成交叉口,如果公共节点位于道路中间,它将是一个 4 路交叉口。但我不确定如何编写执行此操作的查询。

任何帮助将不胜感激,谢谢。

标签: openstreetmapintersectionoverpass-api

解决方案


推荐阅读