房曉亮,王沐晨,童純清,黃文衡,張云菲
(1.中國電建集團中南勘測設(shè)計研究院有限公司,湖南 長沙 410014;2.長沙理工大學(xué) 交通運輸工程學(xué)院,湖南 長沙 410114)
當前,大多數(shù)城市地下管網(wǎng)數(shù)據(jù)都是以AutoCAD格式進行存儲[1-3]。在CAD數(shù)據(jù)格式中,管點、管線圖層與相應(yīng)的注記圖層獨立存儲,部分特征屬性還以圖形符號的方式呈現(xiàn)[4]。在智慧管網(wǎng)系統(tǒng)建設(shè)中,需借助GIS 技術(shù)實現(xiàn)地下管網(wǎng)的統(tǒng)一管理、查詢分析以及規(guī)劃設(shè)計。因此,將管網(wǎng)CAD數(shù)據(jù)格式轉(zhuǎn)換為GIS數(shù)據(jù)格式是智慧管網(wǎng)建設(shè)的重要內(nèi)容。
目前主流的商業(yè)軟件能實現(xiàn)數(shù)據(jù)格式的直接轉(zhuǎn)換,但是存在部分特征無法轉(zhuǎn)換或者轉(zhuǎn)換操作復(fù)雜、難以推廣等問題。為了實現(xiàn)CAD管網(wǎng)數(shù)據(jù)與GIS數(shù)據(jù)內(nèi)容互操作,特別是管徑、流向等管網(wǎng)屬性信息的相互傳遞共享,同時建立管網(wǎng)內(nèi)部拓撲關(guān)系以便于空間分析,本文提出一種基于ArcGIS Engine的城市地下管網(wǎng)數(shù)據(jù)轉(zhuǎn)換處理方法,實現(xiàn)地下管網(wǎng)數(shù)據(jù)的拓撲關(guān)系構(gòu)建、屬性信息關(guān)聯(lián)和流向計算插值等自動處理功能[5-6]。
在CAD管網(wǎng)數(shù)據(jù)中,管網(wǎng)數(shù)據(jù)表現(xiàn)為注記、點和線3 種數(shù)據(jù)形式。通過GIS 軟件進行格式轉(zhuǎn)換之后,得到3 個shp 圖層,分別是注記圖層、點圖層以及線圖層。注記圖層中包含管點編號、管徑信息等;點圖層包括管點圖形數(shù)據(jù);線圖層包括管線、流向等圖形數(shù)據(jù)。本文所需管點數(shù)據(jù)、管線數(shù)據(jù)、管徑信息、流向信息均可從上述3 個圖層中根據(jù)屬性字段進行篩選獲取。
結(jié)合管線與管點的關(guān)聯(lián)特征,此特征表現(xiàn)為管線由2 個節(jié)點組成,此節(jié)點與點圖層中包含的管點數(shù)據(jù)的幾何特征完全一致,但缺乏屬性信息。本文通過對管線數(shù)據(jù)行拓撲構(gòu)建,快速獲取管線與管點的拓撲關(guān)系。通過構(gòu)建的拓撲數(shù)據(jù)反算管點,最大限度地避免了管點與管線不統(tǒng)一的問題。
具體流程為,通過ArcGIS Engine 提供的FeatureclassToCoverage 將管線數(shù)據(jù)轉(zhuǎn)換為Coverage,再通過ICoverage.Build 生成Node 和Arc 圖層,其中Node 圖層為管點數(shù)據(jù),Arc圖層為管線數(shù)據(jù),這2個圖層是后續(xù)工作開展的基礎(chǔ)。
1.2.1 管徑信息提取
根據(jù)繪圖原則,將距離管線最近的注記作為該管線的管線注記信息[4]。通過對管線要素與管線注記點進行位置判斷,將距離管線最近的注記點信息賦予管線要素。如圖1 為將管線注記的相關(guān)屬性賦予對應(yīng)的管線要素。
圖1 管線注記與管線位置關(guān)系判斷
1)讀取管線數(shù)據(jù)和標注數(shù)據(jù)分別存儲在IFeature-Class pFeatClsLine、IFeatureClass pFeatClsInfo 中,新建字典Dictionary
2) 遍歷管線數(shù)據(jù)pFeatClsLine的各管線要素,從標注數(shù)據(jù)pFeatClsInfo中找到與該管線要素距離最近的注記點,為了提高處理的效率,采用構(gòu)建緩沖區(qū)篩選出位于緩沖區(qū)內(nèi)的注記點,通過每個注記點的坐標計算注記點至管線要素的歐氏距離,距離最近者即判斷為該管線的標注,進而讀取該注記中的管線信息寫入對應(yīng)管線要素屬性表中。
3) 在CAD數(shù)據(jù)中,管線要素與管線注記可能不是一一對應(yīng),上述處理后部分管線要素可能沒有找到對應(yīng)的管線注記,需根據(jù)管線連通關(guān)系及前后連接管線的已知屬性信息對匹配到管線注記的要素進行屬性賦值。
1.2.2 管點信息關(guān)聯(lián)
將注記圖層與構(gòu)建拓撲生成的Node圖層進行空間關(guān)聯(lián),主要方法是通過遍歷Node 圖層中的管點要素,針對每個要素做緩沖區(qū),通過緩沖區(qū)篩選管點附近的注記,如果存在多個注記點,則取距離最近的注記點作為當前管點的注記信息,并將這些信息寫入屬性表中。
1.3.1 流向符號計算
管線的流向信息在CAD數(shù)據(jù)中是以箭頭符號進行表示,需要根據(jù)箭頭方向進行流向判斷。對管線要素與管線流向符號進行關(guān)聯(lián),實質(zhì)上是對流向符號的線坐標與管線空間位置關(guān)系的判斷。圖2 為流向符號與管線的位置關(guān)系。
圖2 流向符號與管線位置關(guān)系
1)讀取管線數(shù)據(jù)和流向數(shù)據(jù)分別存儲在IFeature-Class pFeatClsLine、IFeatureClass pFeatClsDir中,新建字典Dictionary
2)遍歷管線數(shù)據(jù)pFeatClsLine的各管線要素,從流向數(shù)據(jù)pFeatClsDir中找到與該管線距離最近的流向符號,篩選出位于緩沖區(qū)內(nèi)的流向符號線,并計算流向符號線與管線要素的歐氏距離,距離最短者即為該管線的流向符號。
3)判斷管線流向與實際流向是否一致,若一致,賦流向值為1,若不一致,賦流向值為0,將流向值寫入至管線屬性表。
流向符號方向判斷方法如圖3 所示,通過IPoly-Line.QueryPointAndDistance 函數(shù)計算點與管線的垂點及與管線起始點的路線距離,將位于管線左側(cè)流向符號上的點P0和P1作為輸入點,輸出與管線起始點的路線距離分別為d0和d1。當d1>d0時,說明管線流向與圖形符號流向一致,流向?qū)傩灾禐?;當d1≤d0時,說明管線流向與標注流向相反,流向?qū)傩灾禐?。
圖3 流向判斷示意圖
1.3.2 流向?qū)傩杂嬎?/p>
經(jīng)過上一步處理,仍然存在部分管線沒有流向賦值的情況,需要進行流向計算。一般情況下,如果管線的起點和終點具有高程信息,則可根據(jù)管線起點高程和終點高程的高差,確定管線流向?qū)傩?,或者根?jù)管線連通關(guān)系,對流向?qū)傩赃M行賦值。
基于Microsoft Visual Studio C#與ArcGIS Engine 開發(fā)平臺,實現(xiàn)地下管網(wǎng)數(shù)據(jù)自動轉(zhuǎn)換處理系統(tǒng)。通過需求分析,設(shè)計開發(fā)了數(shù)據(jù)預(yù)處理、屬性數(shù)據(jù)轉(zhuǎn)換和地圖展示三大功能模塊。其中,數(shù)據(jù)預(yù)處理包括格式轉(zhuǎn)換、構(gòu)建拓撲、管網(wǎng)編號功能,屬性數(shù)據(jù)轉(zhuǎn)換包括基礎(chǔ)信息轉(zhuǎn)換、管徑屬性轉(zhuǎn)換、流向?qū)傩赞D(zhuǎn)換、流向?qū)傩杂嬎? 個功能;地圖展示包括地圖顯示、地圖縮放漫游、右鍵菜單、符號修改、圖層屬性瀏覽等功能。
本文使用??谑械叵鹿芫W(wǎng)數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換綜合實驗。經(jīng)過系統(tǒng)轉(zhuǎn)換處理后的管點屬性表和管線屬性表如表1 和表2 所示。從結(jié)果中可以看出,管徑、流向等相關(guān)參數(shù)已經(jīng)添加進管線屬性數(shù)據(jù);并且管線流向明確,可供后續(xù)空間分析;轉(zhuǎn)換后的各要素都有其屬性信息,便于對整體管線進行統(tǒng)計分析與管理。
表1 管點屬性表
為檢驗本方法的轉(zhuǎn)換效果,對轉(zhuǎn)換成果進行抽樣檢測,隨機抽取實驗管線的管徑數(shù)據(jù)、流向數(shù)據(jù)等屬性信息與標注數(shù)據(jù)進行比對分析,得出隨機抽樣的檢測結(jié)果。隨機抽取管線共600 個,管線注記共300個,流向注記共300 個。人工判讀600 個管線,其中正確匹配596 個,錯誤匹配4 個。錯誤原因是進行管徑信息提取時,讀取了其他管線的注記點信息。通過對屬性信息轉(zhuǎn)換結(jié)果檢驗,屬性信息和實體對象基本匹配并實現(xiàn)管線信息自動傳遞。
本文通過對地下管網(wǎng)數(shù)據(jù)轉(zhuǎn)換后標注符號數(shù)據(jù)與管網(wǎng)圖形數(shù)據(jù)的對應(yīng)關(guān)系研究,提出一種基于ArcGIS Engine的城市地下管網(wǎng)數(shù)據(jù)轉(zhuǎn)換處理方法,實現(xiàn)了地下管網(wǎng)數(shù)據(jù)的拓撲關(guān)系構(gòu)建、屬性信息關(guān)聯(lián)和流向計算等功能,可以為地下管網(wǎng)數(shù)據(jù)轉(zhuǎn)換和管理提供技術(shù)參考。