1. 程式人生 > >arcgis+openstreetmap實踐(需要注意的地方)

arcgis+openstreetmap實踐(需要注意的地方)

作者:WenWu_Both
出處:http://blog.csdn.net/wenwu_both/article/
版權:本文版權歸作者和CSDN部落格共有
轉載:歡迎轉載,但未經作者同意,必須保留此段宣告;必須在文章中給出原文連結;否則必究法律責任

1. 資料的獲取

資料獲取方面,主要包括3種途徑:
(1)python的osmnx包;
安裝osmnx包,可以獲取相應的shp檔案,具體可以看osmnx的相關介紹:osmnx的GitHub

conda install -c conda-forge osmnx
or
pip install osmnx

注意的是,osmnx依賴於其他包,所以安裝的時候可能會報錯,根據報錯原因將其他幾個包安裝好即可。
包的玩法可以參考:

http://blog.csdn.net/wywywywywywy123456/article/details/71367664
http://www.chinacloud.cn/show.aspx?id=24693&cid=16

(2)openstreetmap.org 網站本身提供地圖資料的下載服務
注意的是:範圍不能過大,否則會報錯,大區域的地圖資料需要切片下載,然後拼接。
優點:資料格式為.osm,本質上就是xml文件,所以可以將其解析,製作自定義的arcgis檔案,可操作性較強,且獲取的資訊最豐富;
缺點:需要一定的程式設計基礎,有門檻。

(3)第三方網站打包下載
全球範圍:
主站:

http://planet.openstreetmap.org/ 一週左右更新一次,一般是在週二。
其他下載點:http://wiki.openstreetmap.org/wiki/Planet.osm#Mirrors

非全球範圍:
對於不需要全球範圍資料的使用者,可使用Planet extracts找到需要的部分然後下載。
比較好的一個:http://downloads.cloudmade.com/

優點:簡單方便,資料批量下載,易於管理;
缺點:需要自行切割,資料資訊缺失等。

3種資料獲取方式各有優缺點,實際應用時看具體專案的要求。

2. 資料的處理
(1)對於第二種資料獲取方式,需要解析下載的osm文件,提取地圖相應的拓撲資訊。
推薦使用python的xml.dom.*包;

import xml.dom.minidom 

(2)點、線、面的shp檔案生成
具體可以參見部落格:百度地圖API+ArcGIS軟體—城市出行時空資料視覺化

3. 網路分析

建立好路網拓撲後,可以運用arcgis的網路分析模組進行資料的挖掘分析,如最短路徑、服務區、最近設定點、OD成本矩陣等,具體分析的過程就不多說了,網上非常多的教程,主要記錄一下自己在實踐的過程中遇到的問題:

(1)OD成本矩陣的距離是行駛距離,而非直線距離,其大小與最短路徑是一致的。
在建立OD成本矩陣時,雖然圖上的線型是直線,但其距離是行駛距離,所以可以用其求解1到n,n到n之間的行駛距離矩陣。

(2)線要素一定要有型別為文字型別的屬性,即道路的Name
這樣才能夠在構建網路資料集的時候新增方向設定,否則構建的網路資料集中將不包含方向指南。因此這裡我們添加了道路的名稱,目的用於之後生成方向指南。

(3)各要素要指定空間參考,否則無法設定方向屬性
API呼叫網路分析服務時,directions方向資料為null,這個也是當初困擾筆者很久的問題,明明屬性欄位裡有name道路名稱,呼叫得到了Route資料,為什麼directions資料為空呢。direction資料是我們網路分析結果必須要用到的,指示了整個Route怎麼走的。後面網上查了下,是因為原始道路網資料必須設定空間參考

方法:ArcToolbox-資料管理工具-投影和變換-定義投影
一般投影選擇“WGS 1984”,跟具體座標系一致即可。