打开街道地图 - 按城市划分的街道

时间:2011-06-09 10:16:07

标签: geolocation openstreetmap


我正在开发一个基于从OSM(Open Street Map)收集数据的系统。

当我(从OSM数据库)获取一个覆盖多个城市的区域时,我有没有办法弄清楚哪条街(来自庞大的xml列表)属于哪个城市?试图使用OSM服务器端脚本,但没有找到我对该手册的兴趣点。

看起来我可以采取属于该方式的任何(地址)节点并解析它以从中获取街道名称和城市名称。
但真正的问题是,有些街道没有地址节点。所以看起来我有一大堆街道,城市,但是无法决定哪条街道属于哪个城市?

我很乐意阅读任何有用的答案。

1 个答案:

答案 0 :(得分:5)

您可以使用立交桥api下载整个城市。您应该首先找到定义城市的关系的id(如果您的系统中没有它,您可以通过overpass api查询它)。例如,Vuppertal有62478.然后将3600000000添加到id并发送以下POST请求并发送到http://www.overpass-api.de

<union>
  <area-query ref="3600062478"/>
  <recurse type="node-relation" into="rels"/>
  <recurse type="node-way"/>
  <recurse type="way-relation"/>
</union>
<print mode="body"/>

您还可以使用theis api查看各个点所属的城市下载街道的位置,以获取更多信息see

更新:要查找城市关系,请将以下POST请求发送至http://overpass-api.de/api/interpreter

   <query type="relation">
     <has-kv k="name" v="Wuppertal"/>
     <has-kv k="type" v="boundary"/>
   </query>
   <print mode="body"/>

如果你想要限制更多,你可以添加更多的过滤器,如de:place = city如果你只看Germanz或admin_level =某些东西等。如果你想获得更多的结果,你只能使用名称:< / p>

   <query type="relation">
     <has-kv k="name" v="Wuppertal"/>
   </query>
   <print mode="body"/>

这取决于你,你认为“一个城市”是什么。