OSM OpenStreetMap 获取城市路网数据及转为ESRI shp数据的方法
目錄
?
一、OSM簡介
二、獲取OSM數據方法
方法1:官網下載
方法2:通過ArcGIS Editor for OpenStreetMap插件下載
方法3:通過QGIS下載
三、獲取OSM城市路網數據方法
方法2:從china-latest.shp.zip中裁剪出某城市的路網數據
第一步,從http://download.geofabrik.de/中下載china-latest.shp.zip
第二步,裁剪
方法2:用overpass工具下載某城市的路網
第一步,根據城市名獲取對應ID
第二步,根據城市ID獲取路網數據
附:OSM道路分類
四、OSM數據轉為ESRI shp數據
方法1:網頁版GeoConverter工具
方法2:通過ArcGIS Editor for OpenStreetMap插件
方法3:借助QGIS
-
一、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地圖矢量數據
打開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城市路網數據方法
方法2:從china-latest.shp.zip中裁剪出某城市的路網數據
該方法的優點:①下載的直接是shp文件,無需從osm文件轉為shp文件;②china-latest.shp.zip中有分好類的road數據
該方法的缺點:①china-latest.shp.zip文件過大 1G左右,下載可能較慢;②要有城市的邊界shp或是研究區域的邊界shp文件,方便裁剪
適用范圍:已有研究區域邊界的情況下,用這種方法真的很方便,第一步下載,第二步裁剪,裁剪完就能用,不用再格式轉換和分類。
第一步,從http://download.geofabrik.de/中下載china-latest.shp.zip
該shp包中包含了分好類的各類shp:
第二步,裁剪
在ArcMap或QGIS等GIS軟件中裁剪即可
?
方法2:用overpass工具下載某城市的路網
通過OpenStreetMap獲取城市道路網數據難點在于:取數據的框一般都是矩形框:,很難劃定城市邊界,以及如何從眾多圖層中只獲得路網數據。
轉換一下思路,從以下兩個步驟中獲取數據:
- 根據城市名獲取對應ID
- 據城市ID獲取路網數據?
該方法的優點:無需城市行政區劃邊界,即可下載到某城市的路網
該方法的缺點:①下載下來的并不單單是road,而是road、water、waterway等數據混到一起的,仍需要提取出road;②下載下來的數據類型是osm,往往還要將其轉換為shp
適用范圍:無城市行政區劃邊界的情況下,下載城市路網
第一步,根據城市名獲取對應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
感謝這位博主提供的openstreetmap道路網數據對應中國道路速度:https://blog.csdn.net/u011994016/article/details/56831190
?
-
四、OSM數據轉為ESRI shp數據
-
方法1:網頁版GeoConverter工具
方便快捷,使用簡單,網址鏈接:https://geoconverter.hsr.ch/
但是使用網頁版GeoConverter轉換出來的數據編碼不對,所以會出現亂碼,或者全是????????????,使用方法3-QGIS轉換時候指定編碼為utf8就可以解決轉換為shp出現的亂碼問題(感謝評論里的大神提供的解決方案!)
-
方法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 OpenStreetMap 获取城市路网数据及转为ESRI shp数据的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python-用Map, Filter,
- 下一篇: python pip国内镜像