我正在使用Overpass API查询附近路段的Open Street Maps。我很确定我的查询正在返回所有附近nodes
的{{1}} ...但我只想附近 {{1附近的way
。
In the documentation it references this problem:
一般而言,您对完整数据不仅仅感兴趣 单一类型的元素。首先,有几个有效的定义 什么“完整的地图数据”的意思。第一个不明确的主题是什么 处理边界框外的节点,这些节点是方式的成员 部分位于边界框内。
同样的问题重复了关系。如果你等了转 限制,您可能更愿意获得关系的所有元素 包括在内。如果你的边界框击中了俄罗斯的边界, 你可能不想下载数万公里的边界 大约一半的世界。
但我看了后面的例子,但没有看到解决方案。
基本上,在他们的例子中,我如何限制返回到边界框中的元素(而不是返回俄罗斯的整个边界)?
我当前的查询是
nodes
我想也许我需要将其更改为way
,然后向上递归到way (around:100,50.746,7.154) [highway~"^(secondary|tertiary)$"];
>;
out ids geom;
以查询高速公路标签,但我不确定我是否在正确的轨道上
答案 0 :(得分:2)
实际上,它甚至有点复杂,因为你需要100米距离内所有节点的集合交集以及那些属于相关方式之一的节点。以下是您的查询的外观:根据需要调整距离,标记。
请注意,根据标记的不同,您无法保证在一定距离内找到一个节点,尤其是道路往往相当直和长。这肯定会影响您的结果,因此可能需要尝试使用合适的半径。
// Find nodes up to 100m around center point
// (center is overpass turbo specific for center point lat/lon in current map view)
node(around:100,{{center}})->.aroundnodes;
// recurse up to ways with highway = secondary/tertiary
way(bn.aroundnodes)[highway~"^(secondary|tertiary)$"]->.allways;
// determine nodes belonging to found ways
node(w.allways)->.waynodes;
(
// determine intersection of all ways' nodes and nodes around center point
node.waynodes.aroundnodes;
// and return ways (intersection is just a workaround for a bug)
way.allways.allways;
);
out;
在立交桥turbo中查看:http://overpass-turbo.eu/s/hPV