陳相
(上海市測繪院,上海 200063)
城市綜合管網與人們的生活息息相關,是保障城市安全運行的重要基礎設施,被稱為城市“生命線”[1]。近年來由于管網事故頻發,造成了巨大的人身和經濟損失,李克強總理在調研時曾強調既要重“面子”,更要重視城市的“里子”,因此城市管網科學智慧管理,保障管網安全成為政府當前的重要工作[2]。
隨著地理信息技術(GIS)等技術的發展,給城市地下管網信息系統的建設提供了新的方向[3]。利用這些核心技術,依托“信息化”“數字化”手段,各地政府建立了城市綜合管網信息系統,達到了城市地下管網的綜合管理的目標,能夠實現綜合管網數據信息的輸入、存儲、查詢、編輯、檢索、分析、輸出以及共享應用等[4,7]。
目前,大部分城市綜合管網數據庫均使用GIS數據存儲方式,即使用諸如Oracle Spatial、PostgreSQL等直接存儲矢量綜合管網數據,以點線面方式進行存儲。而在現實中的施工、設計、開挖等外業現場作業過程中,作業人員通常仍需要dwg格式的綜合地下管線圖作為作業依據,于是如何快速準確地將GIS數據庫中的綜合管網數據輸出成為dwg格式的綜合管線圖成為亟須解決的問題,也是城市綜合管網信息系統的重要組成部分[9,10]。
本文結合城市綜合管網數據的特點,面向綜合管網全生命周期管理,定制管線制圖模板,研究從矢量數據庫到CAD管線圖的輸出轉換,探索自動扯旗標注的方法,最終通過編碼,開發工具,實現管線自動出圖,應用于實際施工作業和應急供圖。
隨著GIS技術的發展,各大主流數據均可以支持和存儲空間數據,即采用Geodatabase空間數據模型組織和管理空間數據,并實現數據的存儲。Geodatabase能夠同時存儲空間數據和屬性數據,并且保持空間數據的精度。
城市綜合管網數據是綜合地下管線,主要包括電力、通信、給水、排水、燃氣、工業、長輸等類別。地下管線數據有自身的特點,某一類地下管線數據通常包括管點、管線段和附屬設施面三個圖層,空間要素形式分別為點、線和面。三類空間要素數據均有對應的屬性信息,以確保能夠準確地進行輸出。輸出的綜合地下管線圖是根據圖幅號進行劃分,因此,屬性信息應包括圖幅號,其他應包括的屬性信息還有管線類別、管徑、材質、埋設方式、埋深等,用于扯旗標注。
傳統的綜合地下管線圖通過人工制作,無法實現自動化,費時費力,故要想實現綜合地下管線的自動出圖,除了建立管線數據的模型外,還應該設計管線圖的模板和符號,這主要包括要素模板、符號模板和圖幅模板。
(1)要素模板。綜合地下管線圖的核心是點線面要素,其中線和面要素主要通過顏色、線寬、線型來區分不同類別,從而實現模板化。
(2)符號模板。管點要素主要是管點所在的附屬設施來表達,如閥門、窨井、變電箱等。所以為了便于快速出圖,將所有可能出現的管點附屬物進行梳理,并預先制作成CAD塊符號,后期在出圖工具中可以直接調用這些塊符號,進行加載渲染。
(3)圖幅模板。綜合地下管線圖有規定的圖幅輪廓要素,包括圖框、圖名、圖幅號、編制單位等要素,這部分主要確定好圖幅中各要素的具體內容和位置,按照國家標準的圖式規范要求制作成模板形式,如表1、表2所示。

管線要素模板 表1

管線符號模板(部分) 表2
扯旗標注是綜合管線圖中十分重要的部分,用以說明管線圖中管線的類別、材質、規格、埋深等屬性信息。一直以來自動扯旗標注都是地下管線自動出圖的一個難點,既要保證標注的準確性,又要考慮到要素之間的壓蓋關系。因此本文提出一種半自動的人機結合的自動扯旗標注方式,即用戶手工指定扯旗標注所在的位置,系統根據該位置,自動生成扯旗標注。
自動扯旗的過程包括根據用戶指定的位置繪制出一根與該位置最鄰近管線相垂直的扯旗線,隨后計算出與該扯旗線相交的所有管線,并讀取出相應的屬性信息,最后依據扯旗的樣式,依次以標注的形式繪制對應的標注文本。
假設用戶指定點坐標為(x0,y0)
根據鄰近搜索,得到該點最近的管線段的起點和終點坐標為(x1,y1)和(x2,y2),從而計算出該管線段的直線方程為:

根據垂線方程,計算出扯旗線的方程為:
根據扯旗線的公式,設定扯旗線的長度,從而確定扯旗線的位置。
從地下管線矢量數據庫到分幅的綜合地下管線圖,實現這一過程主要包括四個步驟。
管線調圖:輸入需要輸出的綜合地下管線圖的圖幅號,系統從數據庫中讀取對應的綜合管線數據進行分層渲染繪制,管線、附屬設施面按照要素模板繪制,管點通過基于附屬物來進行繪制,即如果該點沒有附屬物,不繪制該點;該點有附屬物,在該點處插入對應的附屬物塊狀符號。
圖幅整飾:按照設定的圖幅模板為管線圖添加圖幅信息,包括圖幅框線、管線圖標題、比例尺、圖幅號等信息;同時根據圖幅范圍對管線要素進行裁剪,去除圖幅范圍以外的要素信息。
扯旗標注:扯旗標注是綜合管線圖的重要組成部分,指定扯旗標注的位置,系統自動生成扯旗標注,同一幅地下綜合管線圖可以有一個或多個扯旗標注。
疊加地形圖:地下管線圖無法獨立存在,需要以基礎地形圖作為底圖來進行襯托,在此部分需要將制作好的分幅地形圖加載到系統中以作為底圖。
至此一幅綜合地下管線圖制作完成。
考慮到綜合地下管線圖通常為dwg格式,因此本文中采用基于.NET平臺的CAD二次開發技術,依托AutoCAD作為開發平臺進行實現。自AutoCAD 2005版本起,Autodesk公司推出了用.NET開發AutoCAD的編程接口,它的實質是通過Managed C++/CLR技術對VC++的ObjectARX進行封裝。到目前Autodesk公司已經完成對大部分ObjectARX編程接口的封裝。這種編程方式難度適中,能夠訪問大部分的編程接口。ObjectARX的應用程序能在運行期間實時擴展AutoCAD,共享AutoCAD地址空間,因此性能較為強大,以至于AutoCAD自身的許多功能模塊都是由ObjectARX進行制作[5,6,8],考慮到軟件的通用性和兼容性,本文中采用的是AutoCAD 2012版本進行二次開發。
本文中,地下管線數據采用Oracle Spatial存儲,基于AutoCAD平臺,通過.NET進行二次開發。用戶只需輸入所輸出圖幅的圖幅號,并進行少量的交互操作,即可完成一幅綜合地下管線圖的制作(圖1)。經過多次實現與測試,采用本文中的技術方式能夠實現管線的自動化出圖,平均一幅綜合管線圖的制作時間在 1 min以內,并且扯旗標注的準確度較高,該方法能夠大大減少人工參與,提高工作效率。

圖1 綜合地下管線圖
針對地下管線數據庫自動出圖中遇到的問題和難度,筆者采用創新的解決方案,主要提煉為以下3種技術。
(1)地下管線CAD圖自動輸出技術。基于AutoCAD的二次開發,實現地下管線數據從GIS數據庫到CAD圖的自動化輸出,實現CAD中線型、顏色、符號以及圖幅輪廓要素的自動化配置。
(2)自動扯旗標注技術。本文提出一種自動扯旗標注方法,由用戶指定扯旗標注所在的位置,系統根據該位置依據公式算法,自動生成扯旗標注,既解決扯旗標注繪制復雜,又解決扯旗標注易壓蓋的問題。
(3)基于ObjectARX的二次開發技術。基于ObjectARX的應用程序能在運行期間實時擴展AutoCAD,本文利用該技術,基于AutoCAD平臺進行二次開發,能夠實現與Oracle等空間數據的交互,實現復雜功能。
針對當前地下管線無法實現自動出圖,綜合地下管線制作人工參與量大、出圖效率低等現狀,本文基于要素符號模板,基于AutoCAD平臺,設計并實現了綜合地下管線自動出圖工具系統,實現了綜合地下管線圖的自動符號化、自動扯旗標注、自動圖廓整飾,只需少量人工干預即可快速成圖并輸出打印。該系統工具目前已應用上海市浦東新區等多地的城市地下管線綜合管理系統中,具有一定的推廣價值。