一、根据城市名获取对应ID
1、先从OSM官网搜索想要获取的城市名称,获取其在OSM中的标准格式
2、进入 Overpss API,点击第二栏的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=“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前加上360后得到的数字。点击右侧的Query按钮,即可将结果从浏览器下载到本地,文件名为interprept,打开后即可得到路网数据。
解释:ID仅仅为所查询城市的行政区边界,如果想得到该市边界内所有的地图数据,我们需要在该id号基础上加3,600,000,000,得到最终的ID值;
三、OSM下载数据转为ESRI .shp数据
选择Vector File to…,上传对应的interprept,然后输出格式选择ESRI Shapefile (.shp),待转换结束后下载到电脑就行。
四、数据示例
将下载好的数据解压,可以看到数据中包括四个图层。接下来展示一下自己下载好的武汉市的数据。
Lines.shp包括道路线和水系线.
highway用于识别任何类型的道路、街道或小路。该值有助于表明公路在整个公路网中的重要性。waterway包括河流、运河和小溪等线状水系,以及湖泊、水库和码头等水域。相关功能包括船闸、堰、坝和急流等航行障碍。属性的意义可在ARCGIS上查询:
multilinestrings.shp包括各种路线,如公交线路、地铁线路等等,具体的属性在Other_tags中有详细描述。
multipolygon.shp包括各种面。按type可分为 ‘ ’、boundary、multipolygon三个类别。其中boundary是行政边界,更具体的等级属性由admin_leve给出。‘ ’ 中包括了很多建筑类型,如居民地、商业建筑等。此外other_tags中还包括了许多属性,如高度或楼层数。multipolygon包括除以上两种之外其它的多边形,如池塘、公园等。