在我们研究交通现象时,往往离不开路网数据。以往获取路网拓扑结构数据多是购买gis地图。现如今常用的电子地图为国内的百度/高德地图API,以及国外的谷歌地图。然而,这些电子地图的API开放权限不仅很小而且访问频次受到限制。
本文推荐一款开源地图—openstreetmap,简称为OSM。其包含图层主要有高速公路、铁路、水系、水域、建筑、边界、建筑物等图层。我们不仅能够免费下载城市数据还可以下载全球数据。网址为https://www.openstreetmap.org/
OSM提供四种主题地图,分别对应着标准地图、自行车地图、交通地图和Humanitarian地图,根据自己的需求选择对应的主题地图。
在网站的首页上有编辑、历史和导出3个按钮,下载数据时,我们则使用导出,这里我们以获取北京市的gis数据为例,进行演示。
OSM主要提供Simple、Overpass API、OSM星球和Geofabrik下载等四种下载方式。
- Simple 直接导出框中数据
- Overpass API 提供按照bbox方法的数据下载
- OSM星球 提供整个OSM数据下载,但是下载的数据量较大
- Geofabrik下载 提供各大洲、国家和特定城市数据
Way1 Simple:网站左侧提供矩阵框方法作为最简单的下载方法,进行框选区域的数据下载,此时下载的数据结构是XML格式,而不是矢量数据。该方法不支持非规则区域和过大区域的数据导出。
Way2 Overpass API:使用Overpass API方法下载数据,数据的选择方式同way1,下载时点击Overpass API下载。该方法是way1的补充,可以进行更大区域的数据获取
Way3: OSM星球:下载全球数据,数据量达到几十G,通常情况用不到全球数据,不推荐使用。
Way4 Geofabrik下载:首页点击Geofabrik下载,跳转后出现的是洲级别的数据集,而且大部分数据集不提供shp格式,在sub region中选择研究区域对应的大洲本文以亚洲为例演示。
跳转至该大洲内包含的国家级的数据集,选择对应的国家,点击进入。
注意事项:当研究区域涉及到国家边界和领土问题时,OSM数据存在争议的,一定不要使用OSM数据。
在中国中选择shp格式的china-latest-free.shp.zip直接下载,下载的数据的坐标系为WGS84。
“Way5:其他方法。
实际科研中,我们往往需要获取某个市或某个区的路网数据,但其形状多为不规则。采用以上方法获取的数据全面,而且繁杂。下面将提供一种通过查询的方法来获取路网数据。
Query 法:主要分为两个步骤:
1.获取城市对应的ID,
2.根据城市ID获取路网数据。
下面将以获取成都市的路网数据为例进行演示。
- 首先获取城市ID:
-
http://www.overpass-api.de/index.html 中,选择Query and Convert Forms
-
在Overpass API Query Form下方的输入框中输入代码:
…
<pre style="background:#E4EAEF"><osm-script></pre>
<pre style="background:#E4EAEF"> <query type="relation"></pre>
<pre style="background:#E4EAEF"> <has-kv k="boundary" v="administrative"/></pre>
<pre style="background:#E4EAEF"> <has-kv k="name:zh" v="成都市"/></pre>
<pre style="background:#E4EAEF"> </query></pre>
<pre style="background:#E4EAEF"> <print/></osm-script></pre>
…
其中name:zh 代表中文地址。根据需要调整为对应的城市
点击右侧的Query按钮,即可将结果从浏览器下载到本地,文件名为interprept
, 用记事本打开该文件,找到<relation id="2110264">
, 即可拿到成都市的ID为2110264
- 其次根据城市ID获取城市路网数据,
- 上面的输入框中的代码替换为如下:
…
<pre style="background:#E4EAEF"><osm-script timeout="1800" element-limit="100000000"></pre>
<pre style="background:#E4EAEF"> <union></pre>
<pre style="background:#E4EAEF"> <area-query ref="3602110264"/></pre>
<pre style="background:#E4EAEF"> <recurse type="node-relation" into="rels"/></pre>
<pre style="background:#E4EAEF"> <recurse type="node-way"/></pre>
<pre style="background:#E4EAEF"> <recurse type="way-relation"/></pre>
<pre style="background:#E4EAEF"> </union></pre>
<pre style="background:#E4EAEF"> <union></pre>
<pre style="background:#E4EAEF"> <item/></pre>
<pre style="background:#E4EAEF"> <recurse type="way-node"/></pre>
<pre style="background:#E4EAEF"> </union></pre>
<pre style="background:#E4EAEF"> <print mode="body"/></pre>
<pre style="background:#E4EAEF"></osm-script></pre>
…
其中<area-query ref="3602110264"/>中3602110264是上一步骤中拿到的ID加上360000000后得到的数字。 - 点击右侧的Query按钮,即可将结果从浏览器下载到本地,文件名为interprept,打开后即可得到路网数据。
我们是一个有灵魂的团队,坚持探索,致力于分享交流学习经验。
想获取更多交通建模,论文写作,开源资料等科研信息的小伙伴就请关注
微信公众号【交通科研Lab】 (所有信息均在公众号第一时间发布)
文章内容,欢迎转发交流!
如果内容对您有用,不要吝啬文末的点赞!!!
参考文献:
GIS大师兄:干货|OSM(openstreetmap)矢量数据下载方法(水系,铁路,道路,建筑物)
http://www.mapboxx.cn/article/osm-way/
网友评论