趙亞蓓,時建新
(1河南測繪職業學院,河南鄭州,450015; 2 中鐵七局集團廣州工程有限公司,廣東廣州,510700)
目前地下管線的信息化水平發展不均衡,有些城市已建立了地下管線信息系統,而有些城市比較落后,地下管線數據精度不高、資料不完整,不能實現動態更新。因此建立一個較為完善的城市地下管線三維可視化系統[1],是一個刻不容緩的問題。本文在前期對地下管線信息化建設情況調查研究的基礎上[2],重點針對地下管線三維可視化系統建設中的管線空間模型轉換、空間銜接等幾個關鍵技術進行了相關研究。
管線可視化需要先對管線空間位置進行模型轉換[3],在 OpenGL中,通過調用glRotate*()、glTranlate*()、glscale*()這三個進行模型轉換的函數可以實現對管線的移動、旋轉或縮放等轉換。其中函數glRotate*(α,x,y,z)的功能是在物體繞原點到點(x,y,z)的直線矢量逆時針旋轉的過程中可以生成一個旋轉矩陣。利用圓柱函數、球函數和3Dmax模型分別來實現管線的直線部分、管線的結點和附屬設施的顯示。通過空間模型轉換可以使管線兩端點形成的向量與軸線相重合,如圖1所示。

圖1 管線模型變換圖
首先將模型變換所需的參數(α,x,y,z)的算出來:
設管線段兩端點的坐標為A(x1,y1,z1),B(x2,y2,z2);
則圓柱的高度為:
如圖1所示,先把圓柱旋轉使圓柱的軸線與OB'相重合,然后再將圓柱平移x1,y1,z1,就和線AB相重合。管線的空間顯示代碼如下:
對管線進行模型轉換[4]后,再對其空間位置進行銜接。銜接的方法主要有以下兩種。
剪切面法是首先延長進行空間銜接的管線的直線部分,再剪切掉多余的部分進行銜接,如圖2所示。剪切面的代數方程為:

圖2 剪切面圖
圓環面法的優勢是可以平滑過渡管線進行自然銜接,可以利用OpenGL中的glutSolidTorus函數實現。實現的步驟如下:
2.2.1 模型轉換
首先對空間模型進行轉換,如圖3所示:在OpenGL中,圓環面所在的平面表達式為:

圖3 圓環模型變換圖
設任意兩管段的向量為(a1,b1,c1)、(a2,b2,c2),其組成的平面方程為:
將圓環面平移到平面APB中。
聯立方程(7)(8)的交線方程 :
兩平面的夾角α即為兩平面垂線夾角,平面的垂線向量及夾角為:
平移量為:
其中 :(xp,yp,zp)為P點坐標 ;
r為圓環的內半徑;
2.2.2 剪切面的確定
OpenGL中,附加的剪切面可以通過函數glClipPlane(Glenum plane,const Gldouble *equation)來實現,其中參數equation可以表示一個數組,該數組包含四個元素;參數plane是用來指定剪切面的編號。剪切面方程為Ax+By+Cz+D=0,進行剪切時,調用函數g1Enable(GL_CLIP_PLANEi)啟用剪切面,使附加剪切面產生剪切作用,得到剪切面的四個參數A、B、C和D。當不再使用某剪切面時,通過調用函數g1Disable(GL_CLIP_PLANEi)來關閉該剪切面。當管道的管徑不相同且管段之間沒有附屬物時,需要用無數圓環面進行拼接[5],如圖4所示。

圖4 圓環組相接圖
繪制截面圖是為了研究管線的管徑、埋深、走向及相鄰管線的空間位置關系,包括橫斷面圖和縱斷面圖,橫斷面圖是垂直于管線切線方向的截面圖,縱斷面圖是沿著管線方向的截面圖。
繪制橫斷面圖需要對橫剖面數據進行計算,首先計算出剖面線與空間管線的交點坐標,然后按一定比例生成截面圖。先將剖面線的起點、終點的屏幕坐標轉換為世界坐標,然后再分別與各類管線求交點,通過圖元ID與數據庫中的ID關聯進行查詢, 可以得到管線兩端點的埋深,管線兩端點中任一點地埋深以及剖面線與管線交點處的地面高程、管底標高等數據可以通過線性內插求出。如果橫斷面圖的橫剖面線與x軸大致平行,將按每個數據的x坐標由小到大的順序儲存在數組中;如果與Y軸大致平行,則按數據的Y軸坐標從小到大的順序儲存在數組中。管徑從數據庫中取得,得到管線的三維坐標和管徑后就可以以橫斷面線的起點作為原點,橫斷面線作為橫坐標軸,以管線的埋深作為縱坐標建立坐標系來畫剖面圖了。
繪制縱斷面圖需要對縱剖面數據進行計算,重點是管線的坡度等數據的計算。具體計算方法是利用每條管線的兩個端點地面標高計算出管線的坡度,這些標高數據可以從屬性數據庫中獲取。以管線的埋深作為縱坐標,以管線的長度作為橫坐標,縱軸的比例尺可以選取橫軸比例尺的K倍,這樣能清楚地反映出管線的埋深情況。
繪制斷面圖的關鍵是要確定出原點及縱橫軸坐標范圍,剖面線起點的坐標即是剖面圖原點的坐標,橫軸坐標的范圍是剖面線起點和終點之間的距離,所以要確定出剖面線起點的坐標和終點的坐標,斷面圖的縱軸坐標范圍是剖面線與各類管線交點的地面高程的最大值。管線斷面數據結構的設計需要獲取管線的管徑、管頂高、管底高等屬性信息和交點的三維坐標。設計如下:

B/S與C/S兩種架構都有各自的優缺點,本文提出將二者相結合,實現優勢互補,充分發揮各自的優點。地下管線數據的入庫、更新、利用、管理及空間分析等功能可以在C/S架構下實現;地下管線信息的瀏覽、查詢、簡單的統計分析等功能可以在B/S架構下實現。根據地下管線數據的特征,B/S架構采用三層結構,即前端瀏覽器、Web服務器和地圖應用服務器、數據庫服務器,如圖5所示。

圖5 B/S三層架構
構成管線數據庫數據結構的數據主要分為專業管線數據和輔助數據,專業管線數據根據管線種類進行分層管理[6],主要分為給水層、排水層、電信層、暖氣層、熱力層、燃氣層;輔助數據包括道路中線、邊線及附屬設施等。管線數據庫的結構設計[7]如圖6所示。

圖6 地下管線數據結構組織
城市地下管線三維可視化系統在應用過程中應能實時將新增的管線、改管或拆除等管線的變動情況,傳遞到系統平臺,利用動態更新機制把變化的管線信息在數據庫中進行更新,使數據庫的信息與實際的管線信息同步。而進行數據庫的動態更新,就要利用內外業一體化技術[8],即在統一數據標準的基礎上,在管線數據采集、管線數據檢查、管線數據庫與模型庫四者之間建立完備的動態鏈接機制,盡量避免數據的重復生產,關聯空間數據和屬性數據,進行數據快速入庫,具體流程如圖7所示。

圖7 數據庫動態更新機制流程圖
地下管線三維可視化系統設計的有與城市管理監督指揮中心安全平臺軟件的接口,如某處熱力管線出現爆裂,安全平臺將啟動應急處置預案,同時系統啟用事故分析功能,根據最佳路徑分析功能,進行最近設施分析,查找最近閥門的位置,并通過緩沖區分析功能確定該故障所影響到的用戶范圍,快速制定出應急搶修預案,在最短的時間內關閉閥門并及時到現場開挖,把故障帶來的影響降至最低。進行最佳路線分析時,系統平臺將各種管線、檢修井點、發生故障的地點等地圖要素加載到地圖控件中,這樣用戶輸入需要檢修的起點與終點,利用最佳路徑算法,確定最佳路線。最近設施分析方法與最佳路徑相似,是在管線出現故障時,首先考慮各種管線的壓力和流向等特點,然后設置查找方向、上游設施、下游設施,從而快速及時找到最近的閥門等設施,制定出合理的搶修方案。