1. 程式人生 > >ArcGIS中多段線(MultiPart Polyline)的座標提取及重繪

ArcGIS中多段線(MultiPart Polyline)的座標提取及重繪

前段時間在專案中需要將Shp檔案中的多線段(Polyline)的座標提取出來,存成座標序列檔案如XML,方便前端應用中展示。

於是直接將Polyline強轉為IPointCollection介面,進而獲取點座標序列,寫成XML檔案。思路清晰,實現也很簡單。

經過一段時間應用,發現一個問題,獲取出的座標序列重繪時會出現亂的連線。


原來ArcGIS中多段線(Polyline)有一部分是結構相當複雜的,也就是看似是一條直線,包括多個部分,如下圖:


這條線段是一個feature,在屬性表中只有一條記錄,但是這條線段包括26段,見上圖左邊表,各段大小不一,有的只有幾個點,有點有幾千個點。更要命的是,各段線間不連續,這樣,如果直接以PointCollection讀取出的點座標序列是無法區分哪一部分是斷開的,使用此點序列重繪的圖形也是不對的。此外,在多段線中各個part中,點座標的序列的方向也不一樣,可能以某一節點為連線點的兩段線在點座標序列中記錄的方向完全是相反的,此時直接以PointCollection讀取出的點座標序列,將會出現前面提到的亂的連線,首尾相接地方出現混亂。


針對這種多段線資料的處理,首先要以IGeometryCollection獲取要素的空間shape欄位值,再遍歷其中的各Geometry,一個Geometry就對應其中的一個part,獲取到正確地分段座標後,再根據應用需求對座標組織方式進行處理,滿足實際的應用需求。

在ArcGIS中有一個開發介面是Isegment,這個介面主要是針對只有兩個點的線段和弧段,是不能處理上面這種多個多點的Part的複雜多線段的。