房曉亮,王沐晨,童純清,黃文衡,張云菲
(1.中國電建集團中南勘測設計研究院有限公司,湖南 長沙 410014;2.長沙理工大學 交通運輸工程學院,湖南 長沙 410114)
當前,大多數城市地下管網數據都是以AutoCAD格式進行存儲[1-3]。在CAD數據格式中,管點、管線圖層與相應的注記圖層獨立存儲,部分特征屬性還以圖形符號的方式呈現[4]。在智慧管網系統建設中,需借助GIS 技術實現地下管網的統一管理、查詢分析以及規劃設計。因此,將管網CAD數據格式轉換為GIS數據格式是智慧管網建設的重要內容。
目前主流的商業軟件能實現數據格式的直接轉換,但是存在部分特征無法轉換或者轉換操作復雜、難以推廣等問題。為了實現CAD管網數據與GIS數據內容互操作,特別是管徑、流向等管網屬性信息的相互傳遞共享,同時建立管網內部拓撲關系以便于空間分析,本文提出一種基于ArcGIS Engine的城市地下管網數據轉換處理方法,實現地下管網數據的拓撲關系構建、屬性信息關聯和流向計算插值等自動處理功能[5-6]。
在CAD管網數據中,管網數據表現為注記、點和線3 種數據形式。通過GIS 軟件進行格式轉換之后,得到3 個shp 圖層,分別是注記圖層、點圖層以及線圖層。注記圖層中包含管點編號、管徑信息等;點圖層包括管點圖形數據;線圖層包括管線、流向等圖形數據。本文所需管點數據、管線數據、管徑信息、流向信息均可從上述3 個圖層中根據屬性字段進行篩選獲取。
結合管線與管點的關聯特征,此特征表現為管線由2 個節點組成,此節點與點圖層中包含的管點數據的幾何特征完全一致,但缺乏屬性信息。本文通過對管線數據行拓撲構建,快速獲取管線與管點的拓撲關系。通過構建的拓撲數據反算管點,最大限度地避免了管點與管線不統一的問題。
具體流程為,通過ArcGIS Engine 提供的FeatureclassToCoverage 將管線數據轉換為Coverage,再通過ICoverage.Build 生成Node 和Arc 圖層,其中Node 圖層為管點數據,Arc圖層為管線數據,這2個圖層是后續工作開展的基礎。
1.2.1 管徑信息提取
根據繪圖原則,將距離管線最近的注記作為該管線的管線注記信息[4]。通過對管線要素與管線注記點進行位置判斷,將距離管線最近的注記點信息賦予管線要素。如圖1 為將管線注記的相關屬性賦予對應的管線要素。

圖1 管線注記與管線位置關系判斷
1)讀取管線數據和標注數據分別存儲在IFeature-Class pFeatClsLine、IFeatureClass pFeatClsInfo 中,新建字典Dictionary
2) 遍歷管線數據pFeatClsLine的各管線要素,從標注數據pFeatClsInfo中找到與該管線要素距離最近的注記點,為了提高處理的效率,采用構建緩沖區篩選出位于緩沖區內的注記點,通過每個注記點的坐標計算注記點至管線要素的歐氏距離,距離最近者即判斷為該管線的標注,進而讀取該注記中的管線信息寫入對應管線要素屬性表中。
3) 在CAD數據中,管線要素與管線注記可能不是一一對應,上述處理后部分管線要素可能沒有找到對應的管線注記,需根據管線連通關系及前后連接管線的已知屬性信息對匹配到管線注記的要素進行屬性賦值。
1.2.2 管點信息關聯
將注記圖層與構建拓撲生成的Node圖層進行空間關聯,主要方法是通過遍歷Node 圖層中的管點要素,針對每個要素做緩沖區,通過緩沖區篩選管點附近的注記,如果存在多個注記點,則取距離最近的注記點作為當前管點的注記信息,并將這些信息寫入屬性表中。
1.3.1 流向符號計算
管線的流向信息在CAD數據中是以箭頭符號進行表示,需要根據箭頭方向進行流向判斷。對管線要素與管線流向符號進行關聯,實質上是對流向符號的線坐標與管線空間位置關系的判斷。圖2 為流向符號與管線的位置關系。

圖2 流向符號與管線位置關系
1)讀取管線數據和流向數據分別存儲在IFeature-Class pFeatClsLine、IFeatureClass pFeatClsDir中,新建字典Dictionary
2)遍歷管線數據pFeatClsLine的各管線要素,從流向數據pFeatClsDir中找到與該管線距離最近的流向符號,篩選出位于緩沖區內的流向符號線,并計算流向符號線與管線要素的歐氏距離,距離最短者即為該管線的流向符號。
3)判斷管線流向與實際流向是否一致,若一致,賦流向值為1,若不一致,賦流向值為0,將流向值寫入至管線屬性表。
流向符號方向判斷方法如圖3 所示,通過IPoly-Line.QueryPointAndDistance 函數計算點與管線的垂點及與管線起始點的路線距離,將位于管線左側流向符號上的點P0和P1作為輸入點,輸出與管線起始點的路線距離分別為d0和d1。當d1>d0時,說明管線流向與圖形符號流向一致,流向屬性值為1;當d1≤d0時,說明管線流向與標注流向相反,流向屬性值為0。

圖3 流向判斷示意圖
1.3.2 流向屬性計算
經過上一步處理,仍然存在部分管線沒有流向賦值的情況,需要進行流向計算。一般情況下,如果管線的起點和終點具有高程信息,則可根據管線起點高程和終點高程的高差,確定管線流向屬性,或者根據管線連通關系,對流向屬性進行賦值。
基于Microsoft Visual Studio C#與ArcGIS Engine 開發平臺,實現地下管網數據自動轉換處理系統。通過需求分析,設計開發了數據預處理、屬性數據轉換和地圖展示三大功能模塊。其中,數據預處理包括格式轉換、構建拓撲、管網編號功能,屬性數據轉換包括基礎信息轉換、管徑屬性轉換、流向屬性轉換、流向屬性計算4 個功能;地圖展示包括地圖顯示、地圖縮放漫游、右鍵菜單、符號修改、圖層屬性瀏覽等功能。
本文使用海口市地下管網數據進行數據轉換綜合實驗。經過系統轉換處理后的管點屬性表和管線屬性表如表1 和表2 所示。從結果中可以看出,管徑、流向等相關參數已經添加進管線屬性數據;并且管線流向明確,可供后續空間分析;轉換后的各要素都有其屬性信息,便于對整體管線進行統計分析與管理。

表1 管點屬性表
為檢驗本方法的轉換效果,對轉換成果進行抽樣檢測,隨機抽取實驗管線的管徑數據、流向數據等屬性信息與標注數據進行比對分析,得出隨機抽樣的檢測結果。隨機抽取管線共600 個,管線注記共300個,流向注記共300 個。人工判讀600 個管線,其中正確匹配596 個,錯誤匹配4 個。錯誤原因是進行管徑信息提取時,讀取了其他管線的注記點信息。通過對屬性信息轉換結果檢驗,屬性信息和實體對象基本匹配并實現管線信息自動傳遞。
本文通過對地下管網數據轉換后標注符號數據與管網圖形數據的對應關系研究,提出一種基于ArcGIS Engine的城市地下管網數據轉換處理方法,實現了地下管網數據的拓撲關系構建、屬性信息關聯和流向計算等功能,可以為地下管網數據轉換和管理提供技術參考。