OSM OpenStreetMap 获取城市路网数据及转为ESRI shp数据的方法

  • OSM简介

OpenStreetMap(OSM)号称地图界的维基百科。是在2004年7月由史蒂夫·克斯特始创。2006年4月,OpenStreetMap基金会成立,鼓励自由地理数据的增长,发展和分布,并向所有人提供地理数据以供使用及分享。

OSM官方介绍网页:

http://wiki.openstreetmap.org/wiki/Zh-ant:Map_Features#.E9.81.93.E8.B7.AF_.28highway.29

WikiProject China

OSM数据分类:

  • 获取OSM数据方法

获取OSM数据方法有许多,可以直接在OpenStreetMap官网下载,可以用QGIS软件下载,也可以下载ArcGIS Editor for OpenStreetMap插件进行下载。

ArcGIS10.2 ArcGIS Editor for OpenStreetMap插件下载链接(百度网盘):https://pan.baidu.com/s/1qXK7rB2?fid=771029154063284&errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=

其他版本ArcGIS10.2.x下载链接:http://www.arcgis.com/home/item.html?id=16970017f81349548d0a9eead0ebba39

  • 方法1:官网下载

1.直接在地图上画矩形框下载框内的数据,网上有很多介绍,在此不赘述。

2.下载世界各地的OpenStreetMap地图矢量数据

扫描二维码关注公众号,回复: 8548354 查看本文章

打开OpenStreeetMap首页OpenStreetMap 。然后单击下图右上角的导出,可以看到有许多数据来源的网站,选择Geofabrik 下载就可以进入下载了。http://download.geofabrik.de/

 以中国为例,在表格内选择Asia,单击,然后在Sub Region内选择China,选择.shp.zip数据,单击直接下载,解压后,就可以在ArcGIS直接打开了。数据量很庞大,需要自己先整理。OSM数据定期更新。单击China按钮,可以查看数据的更新时间,也可以下载china-latest.shp.zip。

  • 方法2:通过ArcGIS Editor for OpenStreetMap插件下载

在ArcToolbox-OpenStreetMap Toolbox的工具,单击Download OSM data就可以下载地图数据,既可以以经纬度确定范围,只需在Top、Bottom、Left、Right输入经纬度即可,但是范围不能过大,否则无法下载,会提示【Extend of download】超过范围。也可以用原有的矢量图(shp文件)进行框定范围,进行下载,同样对范围有所限制,比如为了下载某市的数据,将该市地图切成几十块,分块下载。

  • 方法3:通过QGIS下载

在QGIS软件菜单栏选址Vector-再点击Openstreetmap-Download Data,打开OSM网站,选择范围,选择Manual填写范围下载。

  • 获取OSM城市路网数据方法

通过OpenStreetMap获取城市道路网数据难点在于取数据的框一般都是矩形框如何划定城市边界,以及如何从众多图层中只获得路网数据。

转换一下思路,从以下两个步骤中获取数据:

  • 根据城市名获取对应ID
  • 据城市ID获取路网数据 

根据城市名获取对应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>
其中name:zh代表中文地址,否则使用name即可 当然,如果你不喜欢输出格式为XML,也可以将<osm-script>修改为<osm-script output="json">定义输出数据格式为JSON。

点击右侧的Query按钮,即可将结果从浏览器下载到本地,文件名为interprept, 用记事本打开该文件,找到<relation id="2782246">, 即可拿到成都市的ID为2782246

根据城市ID获取路网数据

再次在主界面的Overpass API Query Form(即第一个查询框中)输入如下代码

<osm-script timeout="1800" element-limit="100000000">
  <union>
    <area-query ref="3602782246"/>
    <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="3602782246"/>3602782246是上一步骤中拿到的ID加上360000000后得到的数字。ID仅仅为所查询城市的行政区边界,如果想得到该市边界内所有的地图数据,我们需要在该id号基础上加3,600,000,000,得到最终的ID值为3603076268;

点击右侧的Query按钮,即可将结果从浏览器下载到本地,文件名为interprept,打开后即可得到路网数据。

此时数据格式仍为OSM标准的格式,需要转换为常用的shp格式,详见下一部分。

  • OSM道路分类

OSM道路分类:https://wiki.openstreetmap.org/wiki/Key:highway

  • OSM下载数据转为ESRI shp数据

  • 方法1:网页版GeoConverter工具

方便快捷,使用简单,网址链接:https://geoconverter.hsr.ch/

  • 方法2:通过ArcGIS Editor for OpenStreetMap插件

本地新建一个文件地理数据库,使用OpenStreetMap Toolbox.tbx工具中的Load OSM File功能,将生成结果输出到刚刚新建的文件地理数据库,之后用ArcGIS随意转换需要的shp等格式。

  • 方法3:借助QGIS

将下载的数据拖入到QGIS软件中,直接显示(如果不显示则如要导入投影坐标系),然后再QGIS的内容列表选择数据右键单击-选择Geometry Tools-单击Export/Add geometry colums导出为shp后缀的数据,即可在ArcGIS软件中编辑使用。

  • OSM下载数据出现中文乱码

可用https://geoconverter.hsr.ch/里的转换工具将原文件转换为GDB文件将其打开后,中文信息就显示完整了,仅供参考。

发布了89 篇原创文章 · 获赞 68 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/symoriaty/article/details/103946796