于中偉
(沈陽市勘察測繪研究院,遼寧 沈陽 110004)
地理信息系統(tǒng)以其強大的數(shù)據(jù)管理和空間分析能力,在城市管網(wǎng)信息化建設(shè)中得到廣泛應(yīng)用[1]。目前,北京、太原等城市相繼建立了城市地下管線信息系統(tǒng)[2],隨著管線信息化建設(shè)的推進,諸多基于GIS的管線信息系統(tǒng)也應(yīng)運而生,如王軍等提出的基于ArcEngine的管線信息系統(tǒng)[3],李花提出的基于Arcengine的供水管網(wǎng)三維可視化系統(tǒng)[4],李姍姍提出的基于GIS的地下管線查詢與應(yīng)急管理系統(tǒng)[5],這些系統(tǒng)均實現(xiàn)了地下管網(wǎng)的信息查詢與分析,然而多數(shù)系統(tǒng)在橫截面信息查詢與可視化方面比較粗糙,難以與管網(wǎng)業(yè)務(wù)模型相結(jié)合,屬性信息不專業(yè),尤其是單純運用ArcEngine的二次開發(fā)在可視化方面受限,在縱橫斷面分析中略顯不足[6]。為了解決以上問題,ArcEngine組件需要與其他繪圖方法相結(jié)合,才能實現(xiàn)更精準(zhǔn)的縱橫斷面分析。本文在C#語言開發(fā)環(huán)境下,基于ArcEngine組件和GDI+,實現(xiàn)了城市地下管網(wǎng)的橫斷面分析,旨在提高管線信息系統(tǒng)橫斷面分析的科學(xué)性和專業(yè)性,為管線管理提供一種科學(xué)有效的分析方法。
橫斷面分析是利用一條橫斷面線確定橫斷面,該面與多條地下管線相交并產(chǎn)生交點,通過該斷面分析地下管線分布狀況,進而獲取管線斷面的尺寸、高程、管線的間距等數(shù)據(jù)[8]。如圖1所示,展示了橫斷面分析算法圖,其過程是先繪制斷面線,然后依次與相交的管線確定相交關(guān)系,之后進行斷面分析計算,并調(diào)用相交管線的屬性表,繪制橫斷面圖。
圖1 橫斷面分析算法圖
根據(jù)2.1所描述的橫斷面算法與已有數(shù)據(jù),在ArcEngine組件中繪制橫斷面圖需要解決三個問題,第一是繪制斷面線并求出與其相交的管線,提取屬性信息;第二是計算管線間距、地面高程和管線高程;第三是利用GDI+繪制管線橫斷面圖。
(1)求取斷面相交集
在ArcEngine中,繪制斷面線繪制可采用IPolyLine接口實現(xiàn),通過ITopologicalOperator拓?fù)洳僮鞣?,實現(xiàn)其與IPolyLine對象的交點求取,再利用這些交點,實現(xiàn)各種不同類型管線屬性信息的提取,這些屬性包括表1所示的種類、埋深等。需要指出的是,地面高程、管線高程、間距三個屬性不是直接獲取的,而是通過計算獲得。
(2)屬性計算
在ArcEngine組件技術(shù)編程中,地面高程、管線高程、間距的計算過程是,首先建立一個IFeature對象與IPolyLine對象,其中IPolyLine對象表示斷面線,由鼠標(biāo)點擊拾取,IFeature對象用于存儲與IPolyLine對象相交的所有管線對象,然后獲得各交點坐標(biāo)集合(xj,yj),據(jù)此搜索數(shù)據(jù)庫,獲得各類管線的起點與終點,并獲取對應(yīng)的起點高程(Hq)和終點高程(Hz)以及起始管線(頂或底)高程(Gq)和終止管線(頂或底)高程(GZ)。根據(jù)內(nèi)插原理[9],由(xj,yj)、(xq,yq)、(xz,yz)、Hq、HzGq、GZ,利用式(1)分別計算地面高程Hj和管線高程Gj。最后,根據(jù)IPolyLine對象的起終點坐標(biāo)及坐標(biāo)集合(xj,yj),根據(jù)坐標(biāo)反算原理計算管線間距。
(1)
(3)GDI+橫面圖繪制
管線橫斷面圖繪制關(guān)鍵點是坐標(biāo)軸繪制與管線截面圖繪制。由于管線的埋深一般小于管線間距,如果繪制時橫、縱軸采用相同比例,會形成狹長帶狀圖面,視覺效果較差。因此,橫斷面圖繪制時必須設(shè)計縱橫坐標(biāo)不同比例,增強視覺效果。管線的截面繪制同樣重要,由于在ArcEngine中交點是以坐標(biāo)串形式存在的,因此管線的截面必須以此坐標(biāo)為幾何中心,應(yīng)用GDI+函數(shù)繪制出規(guī)則幾何圖形,該圖形可依據(jù)實際管徑繪制,為了便于可視化,也可將管徑放大繪制。
赫芬頓郵報采用A/B測試,確立網(wǎng)站頭條新聞標(biāo)題的寫法。讀者的請求達(dá)到服務(wù)器后,服務(wù)器會通過自動分流技術(shù),為不同的用戶分配不同的版本。同一新聞內(nèi)容的報道,讀者會被隨機分配到不同的標(biāo)題版本,服務(wù)器會記錄和收集讀者的閱讀行為數(shù)據(jù),閱讀行為數(shù)據(jù)優(yōu)異的標(biāo)題將成為這條新聞的最終標(biāo)題?!斑M行A/B測試時,測試用戶的選取是十分關(guān)鍵的環(huán)節(jié),為保證試驗結(jié)果的準(zhǔn)確性,一是要保證一定的樣本數(shù)量,二是要考慮用戶細(xì)分”。[8]
基于ArcEngine的管線系統(tǒng)最大優(yōu)點是管線的屬性保存在數(shù)據(jù)庫中,在繪圖時,這些屬性也相應(yīng)繪制成圖表。在管線種類、埋深、管徑、地面高程、管線高程、間距六類屬性中,后三者為隱含屬性,需利用式(1)計算后求取,因此ArcEngine的屬性表不能直接導(dǎo)出表格,需要對該表重新讀入,加入地面高程、管線高程、間距屬性信息,形成地下管線截面屬性表。
在Visual Studio集成開發(fā)環(huán)境中,選擇C#作為開發(fā)語言,基于ArcEngine組件進行橫斷面圖繪制。首先在某市實驗區(qū)數(shù)據(jù)手動創(chuàng)建一個IPolyLine對象,利用ITopologicalOperator的Intersect方法接收交點點集,根據(jù)點集提取管線屬性信息,點集獲取的部分代碼如下所示:
ITopologicalOperator Op = Line1 as ITopologicalOperator; // Line1為斷面線
IGeometry geometry = Op.Intersect(pLine2 ,esriGeometryDimension.esriGeometry0Dimension); //獲取交點集合圖集,pLine2為相交管線
if (!geometry.IsEmpty)
{
IPoint Point = pCollection.get_Point(0);
} //交點圖集轉(zhuǎn)化為點集
由于管線屬性信息一部分存在于Geodatabase中,一部分存在于計算結(jié)果中,因此需要一個數(shù)據(jù)結(jié)構(gòu)接收所有屬性信息,并以表格的形式繪制于繪圖程序界面中。本研究中,定義了一個接收管線屬性信息類,其聲明如下所示:
Class AttributeReceive
{
Private string ID;
Private double DEPTH;
Private double DIRAMITER;
Private double ELEVATION;
Private double pipe_ELEVATION;
Private double DISTANCE;
};
考慮到區(qū)分各類管線,運用GDI+繪制管線橫斷面圖時將管線截面繪制為圓形、方形等不同形狀,同時依據(jù)管徑比例進行了夸張放大。為了進一步增強識圖,各管線以不同顏色表示,繪制管線點到起算高程面的連線,屬性表格文字顏色與管線截面顏色保持一致,并且均與地圖上管線顏色相同,這樣各類管線被明顯區(qū)分出來,識圖效果良好,如圖2所示。
基于ArcEngine與GDI+,本文實現(xiàn)了城市地下管線橫斷面分析算法,該方法最大特點是與Esri的Geodatabase數(shù)據(jù)相結(jié)合,為基于GIS的管線系統(tǒng)提供了一種精細(xì)的管線橫斷面分析方法。通過開發(fā)實驗可知,本文提出的橫斷面圖繪圖方法具有信息專業(yè)、區(qū)分度好、屬性計算正確率高的優(yōu)點,同時,該方法所繪的斷面圖,能夠反映各管線的絕對空間關(guān)系和相對空間關(guān)系,易于與管線業(yè)務(wù)模型結(jié)合,分析出更多專業(yè)信息,為管線信息化建設(shè)和管理提供一種可靠方法。然而,由于客觀世界管線交錯復(fù)雜,單一靠橫斷面分析有時難以滿足所有分析需求,因此該法尚需改進,例如結(jié)合縱斷面對管線進行綜合分析。
圖2橫斷面分析圖
[1] HJ Scholten,J Stillwell. Geographical information systems for urban and regional planning[M]. Netherlands:Springer Science & Business Media,2013.
[2] 路玲玲,吳曉明,任杰. 城市地下管網(wǎng)信息管理問題研究[J]. 地域研究與開發(fā),2008,27(2):47~50.
[3] 王軍,戴建祥,姜蕓. 基于ArcEngine的管線系統(tǒng)的實現(xiàn)[J]. 測繪工程,2007,16(3):63~66.
[4] 李花. 基于ArcEngine的供水管網(wǎng)三維模塊的開發(fā)研究[J]. 城市勘測,2007(4):19~22.
[5] 李姍姍. 基于GIS的地下管線查詢與應(yīng)急管理系統(tǒng)的研究[D]. 南京:南京農(nóng)業(yè)大學(xué),2009.
[6] 謝瀚,黃澤純,湯家法. 利用ArcEngine和C#實現(xiàn)地下管線斷面分析[J]. 地理空間信息,2014,12(4):98~102.
[7] CJJ 61-2003. 城市地下管線探測技術(shù)規(guī)程[S] . 北京:中國建筑工業(yè)出版社,2003.
[8] 李萬輝,楊曉麗. 基于GIS的城市地下管線橫縱斷面分析[J]. 測繪與空間地理信息,2010(3):58~62.
[9] 張旭. 基于ArcEngine的城市地下管線信息系統(tǒng)的設(shè)計與實現(xiàn)[D]. 濟南:山東大學(xué),2012.