How to extract intersections in the OpenStreetMap? I need the longitude and latitude of the intersections, thanks!
问问题
7291 次
3 回答
5
这里有一个类似的问题。没有直接的 API 调用来检索交叉点。但是您可以查询给定边界框中的所有方式(例如直接通过API或通过Overpass API)并查找由两种或多种方式共享的节点,如另一个答案中所述。
于 2012-09-03T13:38:31.483 回答
5
尝试 GeoNames findNearestIntersectionOSM
API:
http ://api.geonames.org/findNearestIntersectionOSMJSON?lat=37.451&lng=-122.18&username=demo
输入是位置的 lng 和 lat,响应包含最近交点的 lng 和 lat:
{"intersection":{...,"lng":"-122.1808293","lat":"37.4506505"}}
它由GeoNames提供,但似乎基于OpenStreetMap
于 2015-08-04T10:16:22.213 回答
1
正如@scai 完美解释的那样,您必须自己处理原始 OSM 数据才能找到方式的交集节点。
您可以先使用OverpassAPI尝试不同的算法,而不是编写自己的程序。
- 根据您感兴趣的方式,将不应该算作交集的方式类型添加到regv属性(在两个脚本部分)。可以在这里找到方式的类型:高速公路标签。
- BoundingBox 是您在 Overpass-tourbo 网站上查看的地图的一部分。
- 该脚本基于另一个问题回复中的脚本链接,但我重写了它以使其更具可读性并添加了评论(包括此处和原始回复)。
示例脚本:
<!-- Only select the type of ways you are interested in -->
<query type="way" into="relevant_ways">
<has-kv k="highway"/>
<has-kv k="highway" modv="not" regv="footway|cycleway|path|service|track"/>
<bbox-query {{bbox}}/>
</query>
<!-- Now find all intersection nodes for each way independently -->
<foreach from="relevant_ways" into="this_way">
<!-- Get all ways which are linked to this way -->
<recurse from="this_way" type="way-node" into="this_ways_nodes"/>
<recurse from="this_ways_nodes" type="node-way" into="linked_ways"/>
<!-- Again, only select the ways you are interested in, see beginning -->
<query type="way" into="linked_ways">
<item set="linked_ways"/>
<has-kv k="highway"/>
<has-kv k="highway" modv="not" regv="footway|cycleway|path|service|track"/>
</query>
<!-- Get all linked ways without the current way -->
<difference into="linked_ways_only">
<item set="linked_ways"/>
<item set="this_way"/>
</difference>
<recurse from="linked_ways_only" type="way-node" into="linked_ways_only_nodes"/>
<!-- Return all intersection nodes -->
<query type="node">
<item set="linked_ways_only_nodes"/>
<item set="this_ways_nodes"/>
</query>
<print/>
</foreach>
于 2018-04-24T09:43:38.227 回答