利用OpenStreetMap获取城市路网数据

OpenStreetMap简介

OpenStreetMap社区是一个由地图制作爱好者组成的社区,这些爱好者提供并维护世界各地关于道路、小道、咖啡馆、铁路车站等各种各样的数据。

OpenStreetMap开源项目可以让程序开发更加灵活,图源更加丰富,例如可以使用谷歌地图,以解决国内无法使用谷歌服务的尴尬。

国内户外导航软件,例如:行者户外帮小狼信标都使用了OpenStreetMap


​ OpenStreetMap网址:https://www.openstreetmap.org/

​ 这篇博客主要是围绕如何在该网站上获取某个城市的路网信息,关于路网信息的解析目前还在探索中,待填坑

1.根据城市名称获取城市ID

  • 进入http://www.overpass-api.de/index.html

  • 点击第二栏的Query -> Query and Convert Forms在这里插入图片描述

  • 在Overpass API Query Form下方的输入框中输入代码:

    <osm-script>
      <query type="relation">
        <has-kv k="boundary" v="administrative"/>
    	<has-kv k="name:zh" v="延安市"/>
      </query>
      <print/>
     </osm-script>

在这里插入图片描述

  • 点击右侧的Query按钮,将名为interprept的文件从浏览器下载到本地,然后用记事本之类的软件打开该文件,找到<relation id="xxx">, 即可拿到所要查询市的ID。如延安市的ID是3020001
  • 在这里插入图片描述

2.根据城市ID获取路网信息

  • 上面的输入框中的代码替换为如下:

    <osm-script timeout="1800" element-limit="100000000">
      <union>
        <area-query ref="3603020001"/>
        <recurse type="node-relation" into="rels"/>
        <recurse type="node-way"/>
        <recurse type="way-relation"/>
      </union>
      <union>
        <item/>
        <recurse type="way-node"/>
      </union>
      <print mode="body"/>
    </osm-script>

在这里插入图片描述
其中<area-query ref="3603020001"/>3603020001是第一步中拿到的ID加上360000000后得到的值。

  • 点击Query按钮,下载名为interprept的文件即可,该文件即是路网数据。
  • 15
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值