詹勇,陳良超
(重慶市勘測院,重慶 400020)
城市地下管網(wǎng)參數(shù)化三維建模流程與方法
詹勇*,陳良超
(重慶市勘測院,重慶 400020)
二維管線不能很好表達(dá)管線的空間分布,而三維管線則能夠直觀表達(dá)管線的空間位置關(guān)系,因此本文結(jié)合重慶市地下管線三維建模實(shí)際工作,開展了三維管線建模研究。介紹了城市地下管網(wǎng)參數(shù)化三維建模流程,重點(diǎn)對建模數(shù)據(jù)預(yù)處理、連接特征三維建模、附屬設(shè)施建模、管線分塊以及管線LOD生成方法進(jìn)行了闡述。最后,本文開展了相關(guān)實(shí)驗(yàn)和應(yīng)用實(shí)踐,論證了本文方法的有效性。
地下管網(wǎng);參數(shù)化建模;管線分塊;管線細(xì)節(jié)層次
城市地下管線包含城市范圍內(nèi)的供水、排水、燃?xì)狻崃?、電力、通訊等管線及其附屬設(shè)施,是保障城市安全運(yùn)行的生命線。2014開始,全國開展了全國地下管線普查工作,獲取了大量的二維管線數(shù)據(jù),在普查的基礎(chǔ)上,各市通過整合各行業(yè)和管線權(quán)屬單位的管線信息數(shù)據(jù),為建立管線系統(tǒng),全面掌握城市地下管線空間分布狀態(tài)、運(yùn)行狀況、安全隱患等情況奠定了數(shù)據(jù)基礎(chǔ)。
地下管線普查獲取的數(shù)據(jù)通常以二維數(shù)據(jù)為主,但二維數(shù)據(jù)不夠直觀,難以直觀表達(dá)地下管線,特別是在豎向上的空間分布。三維管線能夠直觀表達(dá)地下管線的空間位置關(guān)系,便于迅速查詢管線相關(guān)信息,同時(shí),三維管線模型的建立便于檢查管線采集過程中可能的錯(cuò)誤提高管線數(shù)據(jù)的準(zhǔn)確性。
隨著三維地理信息技術(shù)已發(fā)展的日益成熟,利用三維技術(shù)開展管線的三維建模、建立三維管線系統(tǒng)的研究和應(yīng)用工作也越來越多。羅凌燕[1]等研究了城市地下管線三維快速建模技術(shù),周方曉[2]、周京春[3]等利用Sweep方法開展了管線三維建模,王琦[4]等研究了基于OpenGL的彎管銜接建模方法,左國成[5]等研究了基于旋轉(zhuǎn)矢量法的三維管線建模。本文結(jié)合重慶市地下管線三維建模工作,介紹了城市地下管網(wǎng)參數(shù)化建模流程,重點(diǎn)對建模數(shù)據(jù)預(yù)處理、連接特征三維建模以及管線LOD(level of detail)進(jìn)行了闡述。
OSG(OpenSceneGrouph)[6]是一個(gè)開源的場景圖形管理開發(fā)庫,主要為圖形圖像應(yīng)用程序的開發(fā)提供場景管理和圖形渲染優(yōu)化功能。它使用可移植的ANSI C++編寫,并使用已成為工業(yè)標(biāo)準(zhǔn)的OpenGL底層渲染API。OSG共封裝了10種三維幾何形狀類型,與OpenGL相對應(yīng)。在本文的管線三維建模中,主要使用了TRIANGLES(三角形)和QUADS(四邊形)(如圖1所示)兩種幾何類型,進(jìn)行三維模型幾何形狀的構(gòu)建,利用Geometry類,完成模型的組織,實(shí)現(xiàn)模型法線、顏色或紋理的綁定,利用Matrix和MatrixTransform坐標(biāo)變換類實(shí)現(xiàn)管線及附屬設(shè)施模型的空間變換。
圖1 基于三角面片和四邊形面片的模型構(gòu)建
結(jié)合重慶市地下三維管線系統(tǒng)建立的實(shí)際工作,本文總結(jié)了城市地下管網(wǎng)參數(shù)化建模流程與方法,在二維管線普查數(shù)據(jù)的基礎(chǔ)上,利用參數(shù)化三維建模技術(shù),開展了三維管線建模工作,具體三維建模的總體技術(shù)路線如圖2所示:
4.1 建模數(shù)據(jù)讀取
建模數(shù)據(jù)讀取的信息包括建模配置信息和管點(diǎn)管線數(shù)據(jù)。
圖2 三維管網(wǎng)參數(shù)化建模流程
(1)建模配置信息讀取
建模配置信息包括數(shù)據(jù)庫中用于建模的管點(diǎn)管線表、類型映射編碼、附屬設(shè)施映射編碼、預(yù)制模型名稱等信息,用戶可以根據(jù)自己二維管線數(shù)據(jù)組織形式,修改配置信息,將其映射到系統(tǒng)定義的管線三維建模的標(biāo)準(zhǔn)接口上來,從而實(shí)現(xiàn)管線信息映射的標(biāo)準(zhǔn)化。通常對于一個(gè)項(xiàng)目來說,采用同一標(biāo)準(zhǔn)采集的管線數(shù)據(jù)配置設(shè)置后可保持不變。
(2)管點(diǎn)管線數(shù)據(jù)讀取
根據(jù)獲取的配置信息中的管點(diǎn)管線表名,讀取這些表中的管點(diǎn)管線數(shù)據(jù),包括ID、位置、埋深等,并利用管點(diǎn)和管線數(shù)據(jù)結(jié)構(gòu)存儲。在建模時(shí),根據(jù)管線的不同類型,分批次生成三維模型。
4.2 數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理的目的是進(jìn)行一定的計(jì)算,為管點(diǎn)和管段的三維建模做準(zhǔn)備,簡化正式建模時(shí)的處理步驟。預(yù)處理主要包括位置歸算、連接特征與管段銜接位置計(jì)算以及附屬物參數(shù)位置計(jì)算。
在預(yù)處理的過程中,會產(chǎn)生一些中間結(jié)果,這些中間結(jié)果在是進(jìn)行三維管線建模時(shí)需要用到的參數(shù)。在本文中,將這些中間結(jié)果保存在管點(diǎn)和管線字段中,如表1和表2所示,具體的字段含義將在以下預(yù)處理步驟中涉及。
管點(diǎn)數(shù)據(jù)結(jié)構(gòu)增加字段 表1
管線數(shù)據(jù)結(jié)構(gòu)增加字段 表2
(1)位置歸算
位置歸算,是通過管線埋深、起點(diǎn)(終點(diǎn))高、管徑(寬高)計(jì)算管段的中心點(diǎn),如圖3中的C點(diǎn),中心點(diǎn)是三維建模管段和連接特征建模的重要參數(shù)。在實(shí)際管線外業(yè)測量中,對于圓管的起點(diǎn)(終點(diǎn))高程位于管徑上部,而方管,例如排水箱涵的起點(diǎn)(終點(diǎn))高程在管線底部,因此在處理時(shí),需要根據(jù)具體情況進(jìn)行處理,最后將值記錄在管點(diǎn)表的字段centerZ中。
圖3 位置歸算
(2)連接特征與管段連接點(diǎn)計(jì)算
連接特征,這里指的是直通、三通、四通等管線連接。通過連接點(diǎn)的計(jì)算,給出連接特征和管段生成的起始和終止位置,如圖4中StartV和EndV所示,StartV和EndV之間部分即為連接特征,將該值存儲在管段表2中。
圖4 銜接位置計(jì)算
(3)附屬物位置計(jì)算
附屬物位置計(jì)算包括位置平移參數(shù)計(jì)算和旋轉(zhuǎn)參數(shù)計(jì)算,最后得到矩陣,得到旋轉(zhuǎn)偏移矩陣,在OSG中,構(gòu)建旋轉(zhuǎn)偏移矩陣的計(jì)算函數(shù)利用Matrix矩陣類進(jìn)行,其思想是利用四元數(shù)的原理進(jìn)行,三維矢量B繞三維旋轉(zhuǎn)軸A逆時(shí)針旋轉(zhuǎn)θ,旋轉(zhuǎn)矩陣為:
(1)
其中C=cos(θ),S=sin(θ)。在OSG開源庫中,所用代碼如下:
(2)
其含義為:定義矩陣m,然后m為先繞軸axis旋轉(zhuǎn)angle角度(為式(1)),再按向量v平移。并將m記錄在管點(diǎn)表的TransformMatrix字段中,用于附屬物的位置計(jì)算。按附屬物的位置特征,將附屬物通常分為兩大類。一類是管井、電力接線箱等,這類模型的位置通常與地表相關(guān),在建模時(shí),將模型原點(diǎn)設(shè)置在模型與地表接觸位置,在計(jì)算位置偏移參數(shù)時(shí),將原點(diǎn)置于管點(diǎn)地表高程處即可,其值為管點(diǎn)表中的floorHeight;另一類是與管線的頂部位置相關(guān),如閥門、水表等(如圖5所示),建模時(shí),將其原點(diǎn)置于管段的起點(diǎn)高程處,經(jīng)處理后存儲在管點(diǎn)表中的pipeTopHeight字段中,在計(jì)算位置偏移參數(shù)時(shí),將原點(diǎn)放置在pipeTopHeight值即得到附屬設(shè)施的最終位置。
對于一些需要旋轉(zhuǎn)的模型,圖5的電力方井,則根據(jù)管線的走向計(jì)算出旋轉(zhuǎn)值,得到旋轉(zhuǎn)參數(shù),按先旋轉(zhuǎn)再平移得到TransformMatrix字段的值。
圖5 附屬設(shè)施原點(diǎn)位置
參數(shù)化建模主要包括連接特征建模和管段建模。本文主要采用參數(shù)化建模的方式,根據(jù)連接特征的位置、大小、方向等參數(shù),進(jìn)行三維建模。下面簡要介紹直通和三通的參數(shù)化建模方法,按管線類型具體又分為圓管和方管三維建模。圓管與方管建模的主要區(qū)別在于斷面特征點(diǎn)的計(jì)算,斷面特征點(diǎn)為管段兩端或特征各斷面用來構(gòu)成管徑的特征點(diǎn),對于圓管(利用正多邊形表示)是正多邊形的頂點(diǎn),對于方管則是四個(gè)交點(diǎn)。5.1 管段建模
圓管管段建模,采用旋轉(zhuǎn)矢量方法[4],根據(jù)管段的斷面法線(通常與管段兩中心點(diǎn)連線平行),計(jì)算出斷面特征點(diǎn)[5],然后組裝成圓管。對于方管管段,需要注意的是方管的朝向,方管的側(cè)面應(yīng)是豎直的,因此通過控制管段側(cè)面的法線是水平的,來完成方管的斷面特征點(diǎn)計(jì)算,如圖6所示。
圖6 圓管和方管的斷面特征點(diǎn)計(jì)算
對于圓管,以左端截面為例,v1為管段中心點(diǎn),v1Forward為斷面的法線方向,ZAxis為坐標(biāo)z軸,計(jì)算斷面特征點(diǎn)V1PArray各個(gè)點(diǎn)按式(3)進(jìn)行:
(3)
其中r1為斷面上的圓管半徑,n為擬合多邊形邊數(shù),R為繞V1Forward旋轉(zhuǎn)dAng角的旋轉(zhuǎn)矩陣,計(jì)算得到所有斷面特征點(diǎn)A(i)(i=0,…,n-1)。
對于方管的斷面特征點(diǎn),先按式(4)計(jì)算出圖中的v1Right和v1Up向量,然后進(jìn)一步計(jì)算方管四個(gè)斷面特征點(diǎn),如A1=v1Right+v1Up。
(4)
最后,按照圖6的骨架圖,利用四邊形,組合出管段側(cè)面,即實(shí)現(xiàn)管段建模,最后可添加紋理、法線等進(jìn)行優(yōu)化。
5.2 連通特征建模
(1)直通建模
圖7 圓管直通和方管直通建模
圓管和方管直通可分解為多個(gè)管段組成。建模按先對直通進(jìn)行分段,計(jì)算出各分段的中心點(diǎn)以及各分段的斷面法線,然后計(jì)算出斷面特征點(diǎn),最后組裝成圓管或方管直通。建模的關(guān)鍵在于建立分段中心點(diǎn)和斷面法線,下面簡要介紹。
圖8 分段斷面點(diǎn)與斷面法線計(jì)算
如圖8所示,V0為直通位置,StartV和EndV是直通的起終位置(為表2中的字段),V1是V0StartV上的點(diǎn),可取V1V0的長度為管徑的2倍,同理得V2。過V1、V2分別由V0V1、V0V2的垂線相交得到擬合圓心O以及半徑radius。
根據(jù)建模精細(xì)程度,給定每個(gè)分段對應(yīng)的角度為deltaAngle,如圖中O1O2段。兩端的分段,為剩余的角度值,如圖中V1O1對應(yīng)的角度值為角V1OV20.5~deltaAngle2。建立垂直于平面V1V0V2、過O點(diǎn)的旋轉(zhuǎn)軸RotateAxis,按式(1)、式(2)得到以RotateAxis為旋轉(zhuǎn)軸,旋轉(zhuǎn)角為deltaAngle的旋轉(zhuǎn)矩陣RotateM,則圖中的分段點(diǎn)O2(分段中心點(diǎn))和斷面法線n2由式(5)計(jì)算得到。
(5)
得到中心點(diǎn)和斷面法線后,按照與管段計(jì)算斷面特征點(diǎn)的方法,進(jìn)一步分別按圓管和方管管段,計(jì)算得到各分段的斷面特征點(diǎn),生成分段,最后將所有分段組合得到直通。
(2)三通建模
與直通建模不同在于,三通建模則在計(jì)算出三個(gè)端口的斷面特征點(diǎn)后,需要計(jì)算出相交處的交點(diǎn),本文主要采用了基于角平分線思想計(jì)算出相交處的斷面特征點(diǎn)。在計(jì)算出所有特征點(diǎn)以后,再進(jìn)一步組裝成圓管三通和方管三通。對于方管三通或多通,也可盡量采用兩邊成180°角或90°角的標(biāo)準(zhǔn)三通進(jìn)行組織,然后連接一個(gè)修正的直通管段,可完成設(shè)施建模,建模示意圖如圖9所示。
圖9 圓管三通和方管三通建模
5.3 管井半自動(dòng)化參數(shù)建模
部分管井三維建模,本文采用了半自動(dòng)化參數(shù)建模方法。對于復(fù)雜的井蓋,利用3dsMax軟件制作預(yù)制模型,而對于井體部分則采用了參數(shù)化的建模方式,根據(jù)每個(gè)管井的不同構(gòu)造和大小,實(shí)現(xiàn)管體模型的建立,最終實(shí)現(xiàn)合并管井模型的建立。
這種建模方式,可用于一些復(fù)雜、重用高、但存在一些不同的模型的建立。通過提取共同、造型復(fù)雜,預(yù)先制作好模型,而對可變部分利用參數(shù)化的方式進(jìn)行三維建模。圖10展示的是不同類型和不同管徑、深度的管井模型生成成果。
圖10 管井半自動(dòng)化參數(shù)建模
5.4 管線分塊與管線LOD
通過以上步驟,實(shí)現(xiàn)了管點(diǎn)和管線的參數(shù)化建模。在此基礎(chǔ)上,為實(shí)現(xiàn)整個(gè)城市管網(wǎng)三維模型快速流暢加載,本文對模型成果進(jìn)行格網(wǎng)分塊,并建立兩級LOD(Levelofdetail)。
圖11 管線分塊格網(wǎng)組織
管線的格網(wǎng)劃分是按xoy平面劃分管線分塊,如圖11所示,將格網(wǎng)內(nèi)的管點(diǎn)、管線等增加頂級節(jié)點(diǎn),從而實(shí)現(xiàn)格網(wǎng)內(nèi)模型的合并。給定格網(wǎng)尺寸gsize,一般取200,也可按照1∶500標(biāo)準(zhǔn)格網(wǎng)分幅進(jìn)行管線格網(wǎng)劃分。對于給定坐標(biāo)點(diǎn)(x,y),獲得格網(wǎng)索引號(xIdx,yIdx),格網(wǎng)兩角點(diǎn)(xmin,ymin)、(xmax,ymax)以及中心點(diǎn)(cx,cy)的計(jì)算公式如式(6)所示:
(6)
其中,“[x]”表示小于或等于x的最大整數(shù)。利用管點(diǎn)的坐標(biāo)或管線的中點(diǎn)坐標(biāo)將管點(diǎn)和管線按上式劃分到對應(yīng)的格網(wǎng)中,每個(gè)格網(wǎng)塊作為一個(gè)整體,為根節(jié)點(diǎn),管點(diǎn)和管線作為葉節(jié)點(diǎn)進(jìn)行組織。在管線加載時(shí),管線的管理粒度為格網(wǎng)塊,不深入到格網(wǎng)內(nèi)部,因此構(gòu)建三維空間索引能有效提高空間索引的效率,實(shí)現(xiàn)三維管線的加載與瀏覽。
兩級LOD組織如下:LOD0是僅為管段的連線,LOD1是建模成果,建立管網(wǎng)LOD,當(dāng)視點(diǎn)離遠(yuǎn)時(shí),場景加載簡模,由于簡模僅由線段組成,數(shù)據(jù)量小,可實(shí)現(xiàn)大范圍的管線加如圖10左部分,當(dāng)視點(diǎn)近視,加載精細(xì)建模成果,如下圖右部分。在進(jìn)行管線查詢分析時(shí),先查詢到管線的格網(wǎng)級,再查詢到格網(wǎng)內(nèi)部,從而實(shí)現(xiàn)管線的管理和應(yīng)用。
圖12 管線分塊與LOD組織
以重慶市北部新區(qū)三維管線建模(數(shù)據(jù)說明見下文第6節(jié))為例,進(jìn)行三維管線分塊格網(wǎng)效率測試。采用重慶市勘測院集景三維數(shù)字城市平臺,在同樣的加載渲染機(jī)制下,比較了格網(wǎng)合并前后的某個(gè)同樣場景管線加載和渲染效率。粗模比較的是遠(yuǎn)看的大場景,精細(xì)模型比較的近看的小場景,實(shí)驗(yàn)結(jié)果如表3,在多個(gè)場景加載測試下,表明分塊后的管線格網(wǎng)有更大的加載和渲染效率,更為流暢。
分塊格網(wǎng)加載渲染效率比較 表3
利用本文研究成果,在重慶市北部新區(qū)建立了三維管線信息系統(tǒng),開展了三維管線應(yīng)用。系統(tǒng)采用了重慶市勘測院集景三維數(shù)字城市平臺開展了相關(guān)測試及管線應(yīng)用功能開發(fā)。
整個(gè)區(qū)域共包括管點(diǎn) 320 758個(gè),管線數(shù)量 317 288,管線總長度近 5 000km,三維管線建模及集成總時(shí)間約 3h,其中管線分塊集成時(shí)間約 20min,通過建模實(shí)驗(yàn),驗(yàn)證了本文三維建模技術(shù)流程的可行性以及三維建模成果的有效性。同時(shí),在三維建模的基礎(chǔ)上,建立了三維管線信息系統(tǒng),包括管線圖層管理、量測分析、空間屬性查詢、開挖分析、剖面分析等功能,如圖13所示。
圖13 三維管線應(yīng)用
本文介紹了城市地下管線參數(shù)化建模流程,并重點(diǎn)對管點(diǎn)管線數(shù)據(jù)讀取、建模前的預(yù)處理、管段及連通特征建模進(jìn)行了介紹,實(shí)現(xiàn)了城市三維地下管網(wǎng)的參數(shù)化快速建模,給出了一種管線分塊及LOD生成方法,用于提高大規(guī)模三維管線的調(diào)度、查詢等效率,并開展了相關(guān)實(shí)驗(yàn)和應(yīng)用項(xiàng)目建設(shè)。
城市地下管網(wǎng)的三維建模方式有很多,在實(shí)際工作中,需要根據(jù)二維數(shù)據(jù)的內(nèi)容和格式進(jìn)行調(diào)整,面向應(yīng)用功能進(jìn)行組織優(yōu)化。在進(jìn)一步的工作中,將完善與優(yōu)化建模成果的外觀效果,包括光照設(shè)置、模型色彩或紋理美化,結(jié)構(gòu)優(yōu)化等。
[1] 羅凌燕,賀軍政,李育東. 城市地下管線三維快速建模技術(shù)研究及應(yīng)用[J]. 測繪通報(bào),2012(9):87~89.
[2] 周方曉,李昌華,趙亮.Sweep造型法在管線三維可視化中的應(yīng)用[J]. 計(jì)算機(jī)工程與應(yīng)用,2011,47(7):162~165.[3] 周京春,李清泉,施昆. 利用Sweep造型法進(jìn)行管網(wǎng)精細(xì)化三維建模[J]. 武漢大學(xué)學(xué)報(bào)·信息科學(xué)版,2015,40(5):661~666.
[4] 左國成,王山東. 基于旋轉(zhuǎn)矢量法的三維管線建模[J]. 計(jì)算機(jī)與數(shù)字工程,2013(279):118~120.
[5] 王琦,宋春鳳,董春華. 基于OpenGL的3維彎管線的銜接方法[J]. 測繪科學(xué),2008,4(33):151~152.
[6] 王銳,錢學(xué)雷.OpenSceneGraph三維渲染引擎設(shè)計(jì)與實(shí)踐[M]. 清華大學(xué)出版社,2009.
Process and Method of Parameterized 3D Modeling for City Underground Pipeline
Zhan Yong,Chen Liangchao
(Chongqing Survey Institute,Chongqing 400020,China)
Because of Two-dimensional pipeline can not describe the spatial distribution of the pipeline effectively,but three-dimensional pipeline can do it better,which can display the spatial relationship of pipelines intuitively. In this paper,based on the actual work of the underground pipeline 3D modeling in ChongQing,the research of 3D pipeline modeling were carried out. This paper introduces the city underground pipeline parametric modeling process,especially for data preprocessing,feature modeling,pipeline connection modeling,additional facilities modeling,the method of creating pipeline block and LOD generation are described. At last,related experiments and application practices are carried out,and the validity of the method is proved.
underground pipeline three-dimensional model;parametric modeling;pipeline block;pipeline LOD
1672-8262(2017)02-19-06
P208.2
A
2016—07—04
詹勇(1987—),男,碩士,工程師,研究方向:三維地理信息系統(tǒng)原理及應(yīng)用研究。 基金項(xiàng)目:地理空間信息工程國家測繪地理信息局重點(diǎn)實(shí)驗(yàn)室經(jīng)費(fèi)資助項(xiàng)目(201518);重慶市社會民生科技創(chuàng)新專項(xiàng)(cstc2016shmszx120005)