環境:
Win10
ArcMap10.4(用於數據處理)
postgresql9.4
postgis2.2.3
pgRouting2.3(postgresql插件)
##附上本文配套素材下載地址:https://download.csdn.net/download/guzicheng1990/11830419
說明:
在做網絡分析中,最麻煩的莫過於數據的配合了。接口寫對了,但是數據沒做好還是查不出數據,讓網絡分析功能大打折扣。
網絡分析也是gis眾多分析功能中對數據要求最高的了,其中要建立好拓撲關系,點在線上、點在線節點上、點在線外等等都會出不同的結果。
這里先把功能寫完,后續繼續研究,繼續填坑。
步驟:
1、在ArcMap中新建線圖層,畫如圖網格
2、新增id字段,給id字段進行賦值:id = FID+1
#這里有個坑,后面shp文件用postgis自帶的shapefile導入工具導入postgis時,主鍵FID會變成gid,並且gid會比FID大1
#這樣在查看網絡分析得到的結果時,可以利用id在arcmap中搜索了
3、用ArcMap中,打開Advanced Editing工具,用其Line Intersection功能,將線兩兩打斷
4、線最終打斷結果(為了邏輯清晰,我在線上顯示了id的標注)
5、繼續新增一個點圖層,在每個斷點處設置個點,並新增Id字段(暫時不賦值,留着后面用)
## Id字段在后面Postgis里建立完拓撲以后賦值(紅色標識,與source和target有對應關系,表示線段的兩個端點編號),最終成品如下
6、打開Postgis Shapefile導入工具,設置完數據庫連接,選擇Add File找到處理完的線圖層,設置坐標系,將Options最后一項選中,最后執行Import!
7、如果導入時報錯“Shapefile type: Arc PostGIS type: LINESTRING[2] We have a Multilinestring with 2 parts, can’t use -S switch!錯誤”,可以在ArcGIS中,把線打斷。
數據管理工具→要素→要素轉線(Data Management Tools-->Features-->Feature To Line)
8、導進Postgis后,這批第一步驟可以算告一段落,接下來的操作多數在Postgis中。
后續:
在后續項目中,遇到了一個情況:我有批ArcGIS數據已經完成,這批數據是ArcSDE導入的,但是SDE導入的數據,沒有第六步檢驗是否有MULTI類型,導致后面pgRouting建拓撲時報錯。
而且ArcSDE里主鍵是objectid,圖形字段是shape;postgis導入工具導入主鍵是gid,圖形字段是geom。