于中偉
(沈陽市勘察測繪研究院,遼寧 沈陽 110004)
地理信息系統以其強大的數據管理和空間分析能力,在城市管網信息化建設中得到廣泛應用[1]。目前,北京、太原等城市相繼建立了城市地下管線信息系統[2],隨著管線信息化建設的推進,諸多基于GIS的管線信息系統也應運而生,如王軍等提出的基于ArcEngine的管線信息系統[3],李花提出的基于Arcengine的供水管網三維可視化系統[4],李姍姍提出的基于GIS的地下管線查詢與應急管理系統[5],這些系統均實現了地下管網的信息查詢與分析,然而多數系統在橫截面信息查詢與可視化方面比較粗糙,難以與管網業務模型相結合,屬性信息不專業,尤其是單純運用ArcEngine的二次開發在可視化方面受限,在縱橫斷面分析中略顯不足[6]。為了解決以上問題,ArcEngine組件需要與其他繪圖方法相結合,才能實現更精準的縱橫斷面分析。本文在C#語言開發環境下,基于ArcEngine組件和GDI+,實現了城市地下管網的橫斷面分析,旨在提高管線信息系統橫斷面分析的科學性和專業性,為管線管理提供一種科學有效的分析方法。
橫斷面分析是利用一條橫斷面線確定橫斷面,該面與多條地下管線相交并產生交點,通過該斷面分析地下管線分布狀況,進而獲取管線斷面的尺寸、高程、管線的間距等數據[8]。如圖1所示,展示了橫斷面分析算法圖,其過程是先繪制斷面線,然后依次與相交的管線確定相交關系,之后進行斷面分析計算,并調用相交管線的屬性表,繪制橫斷面圖。

圖1 橫斷面分析算法圖
根據2.1所描述的橫斷面算法與已有數據,在ArcEngine組件中繪制橫斷面圖需要解決三個問題,第一是繪制斷面線并求出與其相交的管線,提取屬性信息;第二是計算管線間距、地面高程和管線高程;第三是利用GDI+繪制管線橫斷面圖。
(1)求取斷面相交集
在ArcEngine中,繪制斷面線繪制可采用IPolyLine接口實現,通過ITopologicalOperator拓撲操作符,實現其與IPolyLine對象的交點求取,再利用這些交點,實現各種不同類型管線屬性信息的提取,這些屬性包括表1所示的種類、埋深等。需要指出的是,地面高程、管線高程、間距三個屬性不是直接獲取的,而是通過計算獲得。
(2)屬性計算
在ArcEngine組件技術編程中,地面高程、管線高程、間距的計算過程是,首先建立一個IFeature對象與IPolyLine對象,其中IPolyLine對象表示斷面線,由鼠標點擊拾取,IFeature對象用于存儲與IPolyLine對象相交的所有管線對象,然后獲得各交點坐標集合(xj,yj),據此搜索數據庫,獲得各類管線的起點與終點,并獲取對應的起點高程(Hq)和終點高程(Hz)以及起始管線(頂或底)高程(Gq)和終止管線(頂或底)高程(GZ)。根據內插原理[9],由(xj,yj)、(xq,yq)、(xz,yz)、Hq、HzGq、GZ,利用式(1)分別計算地面高程Hj和管線高程Gj。最后,根據IPolyLine對象的起終點坐標及坐標集合(xj,yj),根據坐標反算原理計算管線間距。
(1)
(3)GDI+橫面圖繪制
管線橫斷面圖繪制關鍵點是坐標軸繪制與管線截面圖繪制。由于管線的埋深一般小于管線間距,如果繪制時橫、縱軸采用相同比例,會形成狹長帶狀圖面,視覺效果較差。因此,橫斷面圖繪制時必須設計縱橫坐標不同比例,增強視覺效果。管線的截面繪制同樣重要,由于在ArcEngine中交點是以坐標串形式存在的,因此管線的截面必須以此坐標為幾何中心,應用GDI+函數繪制出規則幾何圖形,該圖形可依據實際管徑繪制,為了便于可視化,也可將管徑放大繪制。
赫芬頓郵報采用A/B測試,確立網站頭條新聞標題的寫法。讀者的請求達到服務器后,服務器會通過自動分流技術,為不同的用戶分配不同的版本。同一新聞內容的報道,讀者會被隨機分配到不同的標題版本,服務器會記錄和收集讀者的閱讀行為數據,閱讀行為數據優異的標題將成為這條新聞的最終標題。“進行A/B測試時,測試用戶的選取是十分關鍵的環節,為保證試驗結果的準確性,一是要保證一定的樣本數量,二是要考慮用戶細分”。[8]
基于ArcEngine的管線系統最大優點是管線的屬性保存在數據庫中,在繪圖時,這些屬性也相應繪制成圖表。在管線種類、埋深、管徑、地面高程、管線高程、間距六類屬性中,后三者為隱含屬性,需利用式(1)計算后求取,因此ArcEngine的屬性表不能直接導出表格,需要對該表重新讀入,加入地面高程、管線高程、間距屬性信息,形成地下管線截面屬性表。
在Visual Studio集成開發環境中,選擇C#作為開發語言,基于ArcEngine組件進行橫斷面圖繪制。首先在某市實驗區數據手動創建一個IPolyLine對象,利用ITopologicalOperator的Intersect方法接收交點點集,根據點集提取管線屬性信息,點集獲取的部分代碼如下所示:
ITopologicalOperator Op = Line1 as ITopologicalOperator; // Line1為斷面線
IGeometry geometry = Op.Intersect(pLine2 ,esriGeometryDimension.esriGeometry0Dimension); //獲取交點集合圖集,pLine2為相交管線
if (!geometry.IsEmpty)
{
IPoint Point = pCollection.get_Point(0);
} //交點圖集轉化為點集
由于管線屬性信息一部分存在于Geodatabase中,一部分存在于計算結果中,因此需要一個數據結構接收所有屬性信息,并以表格的形式繪制于繪圖程序界面中。本研究中,定義了一個接收管線屬性信息類,其聲明如下所示:
Class AttributeReceive
{
Private string ID;
Private double DEPTH;
Private double DIRAMITER;
Private double ELEVATION;
Private double pipe_ELEVATION;
Private double DISTANCE;
};
考慮到區分各類管線,運用GDI+繪制管線橫斷面圖時將管線截面繪制為圓形、方形等不同形狀,同時依據管徑比例進行了夸張放大。為了進一步增強識圖,各管線以不同顏色表示,繪制管線點到起算高程面的連線,屬性表格文字顏色與管線截面顏色保持一致,并且均與地圖上管線顏色相同,這樣各類管線被明顯區分出來,識圖效果良好,如圖2所示。
基于ArcEngine與GDI+,本文實現了城市地下管線橫斷面分析算法,該方法最大特點是與Esri的Geodatabase數據相結合,為基于GIS的管線系統提供了一種精細的管線橫斷面分析方法。通過開發實驗可知,本文提出的橫斷面圖繪圖方法具有信息專業、區分度好、屬性計算正確率高的優點,同時,該方法所繪的斷面圖,能夠反映各管線的絕對空間關系和相對空間關系,易于與管線業務模型結合,分析出更多專業信息,為管線信息化建設和管理提供一種可靠方法。然而,由于客觀世界管線交錯復雜,單一靠橫斷面分析有時難以滿足所有分析需求,因此該法尚需改進,例如結合縱斷面對管線進行綜合分析。

圖2橫斷面分析圖
[1] HJ Scholten,J Stillwell. Geographical information systems for urban and regional planning[M]. Netherlands:Springer Science & Business Media,2013.
[2] 路玲玲,吳曉明,任杰. 城市地下管網信息管理問題研究[J]. 地域研究與開發,2008,27(2):47~50.
[3] 王軍,戴建祥,姜蕓. 基于ArcEngine的管線系統的實現[J]. 測繪工程,2007,16(3):63~66.
[4] 李花. 基于ArcEngine的供水管網三維模塊的開發研究[J]. 城市勘測,2007(4):19~22.
[5] 李姍姍. 基于GIS的地下管線查詢與應急管理系統的研究[D]. 南京:南京農業大學,2009.
[6] 謝瀚,黃澤純,湯家法. 利用ArcEngine和C#實現地下管線斷面分析[J]. 地理空間信息,2014,12(4):98~102.
[7] CJJ 61-2003. 城市地下管線探測技術規程[S] . 北京:中國建筑工業出版社,2003.
[8] 李萬輝,楊曉麗. 基于GIS的城市地下管線橫縱斷面分析[J]. 測繪與空間地理信息,2010(3):58~62.
[9] 張旭. 基于ArcEngine的城市地下管線信息系統的設計與實現[D]. 濟南:山東大學,2012.