王永君,陳青燕,楊玉嬌,陳學(xué)業(yè),孫 劍
1. 南京師范大學(xué)江蘇省地理信息資源開發(fā)與應(yīng)用協(xié)同創(chuàng)新中心, 江蘇 南京 210023; 2. 南京師范大學(xué)虛擬地理環(huán)境教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210023; 3. 南京師范大學(xué)地理環(huán)境演變國家重點(diǎn)實(shí)驗(yàn)室培育點(diǎn), 江蘇 南京 210023; 4. 上海樹融數(shù)據(jù)科技有限公司,上海 200082; 5. 自然資源部城市國土資源監(jiān)測與仿真重點(diǎn)實(shí)驗(yàn)室, 廣東 深圳 518034
三維城市模型作為數(shù)字城市及智慧城市空間框架數(shù)據(jù)的核心內(nèi)容[1-3],被廣泛應(yīng)用于旅游、室內(nèi)導(dǎo)航、災(zāi)害逃生、城市規(guī)劃、虛擬戰(zhàn)場等領(lǐng)域[4-7]。但目前開放的三維城市模型一般是面向可視化或者具體應(yīng)用,模型中會存在語義、拓?fù)浜蛶缀尾灰恢滦缘膯栴},如建筑物幾何模型未閉合、建筑墻面為非平面等[8],從而導(dǎo)致三維模型并不能滿足主題查詢、空間數(shù)據(jù)挖掘以及基于空間關(guān)系計算、分析等方面的需求,不利于其在下游領(lǐng)域的深層次應(yīng)用。對三維空間模型數(shù)據(jù)的幾何、拓?fù)浜驼Z義的一致性檢測和修復(fù)是三維模型空間分析和下游領(lǐng)域深度應(yīng)用的前提和保證[9-10],其中三維空間模型數(shù)據(jù)的拓?fù)湟恢滦允潜WC模型幾何、拓?fù)浔磉_(dá)的真實(shí)性、正確性的重要方面[11-12]。在CAD領(lǐng)域,三維實(shí)體通常以邊界表示法(boundary representation,B-rep)表示,并以數(shù)據(jù)結(jié)構(gòu)強(qiáng)制性要求多面體為流形形體[13-14]。在GIS相關(guān)領(lǐng)域,對三維模型的檢測主要根據(jù)模型建模需求定義幾何拓?fù)湟恢滦砸?guī)則,再以規(guī)則檢測模型為主[15-16]。文獻(xiàn)[12]針對3D城市模型的拓?fù)湟恢滦詸z測給出13條規(guī)則,從拓?fù)浜蛿?shù)學(xué)公理兩個方面驗(yàn)證規(guī)則的完整性、正確性、有效性。但該規(guī)則未考慮多面體的孔洞問題,無法檢測CityGML(city geography markup language)模型LOD3中含有門窗的建筑物,模型的拓?fù)錂z測不完整。
本文擬針對CityGML模型數(shù)據(jù),提出適合多種LODs數(shù)據(jù)的語義約束下的拓?fù)湟恢滦砸?guī)則,設(shè)計相應(yīng)的檢測算法,并采用公開數(shù)據(jù)對算法進(jìn)行試驗(yàn)與驗(yàn)證。
CityGML是開放地理空間信息聯(lián)盟(open geospatial consortium,OGC)為實(shí)現(xiàn)三維城市模型信息共享和可視化而提出的國際標(biāo)準(zhǔn),基于XML模式實(shí)現(xiàn)了虛擬三維城市模型中城市空間對象三維幾何、拓?fù)?、語義信息的存儲和交換[17-18]。作為一種開放、結(jié)合室內(nèi)外場景的數(shù)據(jù)模型,CityGML被廣泛地應(yīng)用于三維GIS領(lǐng)域,如室內(nèi)外一體化導(dǎo)航、無人駕駛、防災(zāi)減災(zāi)、路徑分析等[19-20]。CityGML有如下特點(diǎn):①按照GML3.1.1實(shí)現(xiàn)了建筑物、地形、交通、植被、水體、城市設(shè)施、土地利用等三維城市專題模塊,其中以建筑物模型的使用最為廣泛與復(fù)雜;②CityGML中空間對象的幾何屬性通過幾何-拓?fù)淠P瓦M(jìn)行表示[21],即更高維度的圖元拓?fù)溆傻途S原語構(gòu)建,簡單幾何模型一般有4個維度的基本幾何元素,每一個維度對應(yīng)一個幾何-拓?fù)浠?,零維(point)、一維(curve)、二維(surface)、三維(solid),即點(diǎn)、線、面、體;③針對同一個地理空間對象,CityGML在模型的語義層面上,對空間對象的屬性或?qū)ο笾g的關(guān)系進(jìn)行描述,在空間層面上,對空間對象所在的空間位置和范圍等進(jìn)行描述,因此CityGML的拓?fù)湟惑w化模型通過對應(yīng)關(guān)系相互聯(lián)系空間對象的幾何語義建模和幾何拓?fù)浣蓚€方面[22](圖1);④針對同一空間對象的語義、拓?fù)渑c幾何信息,CityGML模型將描述的精細(xì)程度分為5個細(xì)節(jié)層次LOD0—LOD4,針對建筑物、建筑物部件以及建筑物附屬設(shè)施由簡到繁的表達(dá)(圖2)。
圖1 CityGML語義、幾何與拓?fù)湟恢滦阅P蚚22]Fig.1 CityGML semantic, geometric and topologic consistency model[22]
圖2 CityGML 5個細(xì)節(jié)層次[16]Fig.2 The five LODs of CityGML[16]
CityGML建筑物模型的一致性規(guī)則主要有幾何拓?fù)浜蛶缀握Z義兩個方面。其幾何要素的空間屬性通過GML3的幾何-拓?fù)淠P瓦M(jìn)行表示,GML3的幾何模型在ISO19107標(biāo)準(zhǔn)上構(gòu)建。因此根據(jù)ISO19107等通用的國際標(biāo)準(zhǔn)提取建筑物模型的幾何檢測規(guī)則,可以在保證建筑物幾何有效性的同時,減少不同模型之間數(shù)據(jù)模型集成的沖突。CityGML的語義屬性代表對象在現(xiàn)實(shí)空間中的具體意義,因此可根據(jù)不同語義對象在現(xiàn)實(shí)空間的屬性,定義針對建筑物的拓?fù)湟?guī)則。
1.2.1 拓?fù)湟?guī)則提取
通過分析ISO19107/OGC/GML3[10,16,23-24]等標(biāo)準(zhǔn)中幾何圖元點(diǎn)、線、面、體的定義,根據(jù)幾何維度不同,分層次對幾何模型定義相應(yīng)拓?fù)湟?guī)則。其中,參照CityGML OGC標(biāo)準(zhǔn),surface不考慮曲面,而是由平面片構(gòu)成,以polygon表示;curve被強(qiáng)制定義為折線,以line string進(jìn)行表示;solid定義為用封閉表面shell圍起來的邊界,體有內(nèi)外邊界,即內(nèi)外shell之分。具體規(guī)則定義如下。
(1) 環(huán)規(guī)則
規(guī)則1:linear ring至少由3點(diǎn)組成,當(dāng)只有3點(diǎn)時,第1點(diǎn)和最后一點(diǎn)坐標(biāo)不可相同,記為CL-NumPoints&CL-Close。
規(guī)則2:除了首末點(diǎn),linear ring上其他點(diǎn)的坐標(biāo)值不同,記為CL-DupPoint。
規(guī)則3:linear ring上點(diǎn)不能重復(fù),記為CL-DupRing。
規(guī)則4:linear ring具有非自相交性,記為CL-SelfInt。如圖3(a)的solid因?yàn)槊嫔蟽?nèi)外環(huán)相交而無效。
(2) 面規(guī)則
規(guī)則5:polygon上所有點(diǎn)需在同一個平面上,但允許有一定的平面允許容差,記為CP-Plan-Dist&CP-Plan-Dist-TRI。
規(guī)則6:同一個面上內(nèi)外環(huán)方向相反,外環(huán)方向?yàn)橛沂窒的鏁r針方向,記為CP-Clockwise。
規(guī)則7:polygon上的內(nèi)外環(huán)拓?fù)潢P(guān)系為外環(huán)包含內(nèi)環(huán),記為CP-InROutside。
規(guī)則8:面上內(nèi)環(huán)之間不能相交或重疊,記為CP-NoCrossing。
規(guī)則9:面內(nèi)部必須連通可達(dá),記為CP-Connected,如圖3(b)上表面,一個內(nèi)環(huán)因?qū)⒁粋€平面分成兩部分而無效。
(3) 體規(guī)則
規(guī)則10:solid至少由4個有效且位于不同平面上的面組成,記為CS-NUMFaces。
規(guī)則11:solid上的每一條邊被兩個面,且僅被兩個面所共享,為流形形體。記為CS-Non ManifoldEdge&CS-NonManifoldVer。如圖3(c),一條公共邊被3個面所共享而無效。
規(guī)則12:構(gòu)成solid的各個面不相交,記為CS-SelfInt。
規(guī)則13:構(gòu)成solid上的每個面都有方向,且面的法向量必須都指向solid外部,記為CS-Face-Orient&CS-Face-Out。
規(guī)則14:solid必須有連通性,記為CS-Connected。如圖3(c),solid兩部分不可達(dá)。
規(guī)則15:內(nèi)shell必須在外shell內(nèi)部,且shells之間不能相交重疊,只能相切于點(diǎn)、線,記為CS-Inshell-Outside。如圖3(d),solid因內(nèi)部shell之間的交叉而無效。
圖3 4個不符合檢測規(guī)則的無效solidFig.3 Four invalid solids which break the validation rules
1.2.2 語義屬性規(guī)則提取
基于幾何語義一致性原則,CityGML中的面元素、體元素都有對應(yīng)的語義屬性信息,可從語義屬性中分析提取空間實(shí)體的拓?fù)湟恢滦砸?guī)則,包括空間隱喻規(guī)則與非空間隱喻規(guī)則??臻g隱喻規(guī)則如幾何對象間的方向約束、拓?fù)潢P(guān)系約束或者距離約束。如在LOD2、LOD3中語義為wall surface的空間對象相對應(yīng)的幾何表達(dá)為polygon,wall surface的語義屬性會對該polygon幾何元素有法向量方向約束,即可提取相應(yīng)規(guī)則;非空間隱喻規(guī)則如門窗與墻體的is-part-of的關(guān)系。
(1) 語義屬性對空間對象的方向約束需考慮CityGML多層次的特點(diǎn),模型中不同的LOD層次所含語義對象信息不同,則有不同的方向約束規(guī)則。具體見表1。
表1 不同語義屬性對語義對象的方向約束規(guī)則
(2) 語義屬性對空間對象間的拓?fù)潢P(guān)系約束。該約束考慮不同語義對象間的拓?fù)潢P(guān)系,根據(jù)CityGML的數(shù)據(jù)特點(diǎn),將其支持的三維拓?fù)潢P(guān)系分為相等(equal)、相離(disjoint)、相交(intersects)、相切(touch)、包含(contains)5種,且根據(jù)分層的幾何結(jié)構(gòu)規(guī)則,僅考慮相同幾何基元間的拓?fù)潢P(guān)系。在LOD1和LOD2中,建筑物的幾何信息是單個幾何體或者復(fù)合面, 針對該語義對象考察點(diǎn)與點(diǎn)、線與線、面與面間的拓?fù)潢P(guān)系;在LOD3中,門窗與墻以面表示,需要考慮門、窗等語義要素在幾何上的拓?fù)潢P(guān)系,wall surface上的點(diǎn)與window/door上的點(diǎn)應(yīng)在同一平面上,且門窗與墻面內(nèi)環(huán)相切,墻面幾何的內(nèi)環(huán)間不能相離、相交或重疊等;在LOD4中建筑物為復(fù)合體,包括墻、門窗、室內(nèi)房間、樓梯等幾何體,室內(nèi)幾何對象之間不能相交,且被包含于整個建筑物外圍,整個建筑物外圍包括 roof surface、wall surface和ground surface。部分空間對象的拓?fù)潢P(guān)系約束形式化表達(dá)見表2。
表2 語義屬性約束下的拓?fù)潢P(guān)系表達(dá)
(3) 語義屬性對空間對象的距離約束。根據(jù)GB50352—2019《民用建筑設(shè)計統(tǒng)一標(biāo)準(zhǔn)》及GB 50096—2011《住宅設(shè)計規(guī)范》中對常見室內(nèi)對象的設(shè)計規(guī)定,可分析提取針對空間對象層高、凈高等距離關(guān)系的約束規(guī)則[25-26](表3)。
表3 不同語義對象的距離約束規(guī)則示例
(4) 非空間隱喻對空間對象的約束。一些語義關(guān)系,如is-part-of等只能在語義層面提取[27],如每個room必定與一個door關(guān)聯(lián)并與其相切,3樓的stair way必須高于2樓的stair way等常識性規(guī)則,則需對stair way所在樓層、floor所在樓層信息,門窗與房間is-part-of的關(guān)聯(lián)關(guān)系等非空間隱喻提取拓?fù)湟恢滦詸z測規(guī)則,具體示例見表4。
表4 語義對象間的非空間隱喻規(guī)則示例
本文以產(chǎn)生式表示法表示規(guī)則集,一個產(chǎn)生式對應(yīng)一個規(guī)則,并采用點(diǎn)、線、面、體、多體等不同幾何維度的分層檢測算法進(jìn)行拓?fù)湟恢滦詸z測。高維度的拓?fù)錂z測建立在低維度的幾何一致性基礎(chǔ)上。
上述規(guī)則,最終可轉(zhuǎn)換為諸如平面擬合、距離判斷等約束條件,采用最小二乘法、三維布爾運(yùn)算等算法,進(jìn)行判斷與求解。由于涉及的檢測算法較多,考慮到平面檢測在模型檢測中比較典型,本文僅以此為代表進(jìn)行介紹。
2.1.1 投影降維檢測
三維空間數(shù)據(jù)相較二維空間數(shù)據(jù)復(fù)雜,由直線的幾何投影特性可知:三維平面向不垂直于該面的另一個二維面進(jìn)行投影,投影面上各點(diǎn)的順序關(guān)系不會發(fā)生改變,即投影點(diǎn)之間的拓?fù)潢P(guān)系與相對應(yīng)空間點(diǎn)之間的拓?fù)潢P(guān)系一致。因此在拓?fù)湟恢滦詸z測的過程中,三維面的自相交檢測可通過降維投影到相應(yīng)的二維平面,通過二維面的自相交檢測判斷空間面是否相交。但由于投影有積聚性和收縮性,若向垂直于該面的平面進(jìn)行投影,則所有點(diǎn)會積聚為一條線,投影后各點(diǎn)之間的距離也會發(fā)生改變。為了避免投影的積聚性和減少投影收縮可能引起的判斷誤差,根據(jù)空間三維面的單位法向量判定投影方向,選擇沿法向量的3個方向軸的最大矢量軸進(jìn)行投影,若法向量為(0,0,1),則沿Z軸向xy平面投影。因此點(diǎn)、線、面幾何元素的自相交、面上內(nèi)外環(huán)等拓?fù)湟恢滦酝ㄟ^投影降維進(jìn)行檢測。
2.1.2 拓?fù)湟恢滦詸z測算法
針對三維平面的檢測規(guī)則共有5條,面元素的幾何一致性檢測建立在該面所有環(huán)都具有拓?fù)湟恢滦缘幕A(chǔ)上,并考慮幾何結(jié)構(gòu)和語義對象兩種規(guī)則約束。針對規(guī)則(5),通過同一面上所有空間點(diǎn)到擬合面的距離可檢測構(gòu)成該面的點(diǎn)是否在給定的精度閾值范圍內(nèi)共面,采用最小二乘法生成擬合面[28];針對規(guī)則(6)、(7)、(8),先將三維面投影降維到二維面,然后對投影面做環(huán)方向檢測、包含檢測以及內(nèi)環(huán)相交檢測;針對規(guī)則(9),可首先將三維面進(jìn)行三角剖分,通過判斷剖分后三角形之間的連通關(guān)系,檢測面內(nèi)部的連通性。本文提出另外一種方法,由于面的內(nèi)部連通性主要由內(nèi)環(huán)與外環(huán)、內(nèi)環(huán)之間的關(guān)系決定,當(dāng)其關(guān)系滿足以下的約束時,面的內(nèi)部是連通的(各個條件為遞進(jìn)關(guān)系,即從上到下,滿足條件即可終止判斷):
(1) 面有且只有一個外環(huán),無內(nèi)環(huán)。
(2) 面有一個內(nèi)環(huán),且內(nèi)環(huán)與外環(huán)沒有公共頂點(diǎn)。
(3) 面有一個內(nèi)環(huán),內(nèi)環(huán)與外環(huán)之間只有一個公共頂點(diǎn)。
(4) 面有多于一個內(nèi)環(huán),每個內(nèi)環(huán)都與外環(huán)沒有公共頂點(diǎn)。
(5) 每個內(nèi)環(huán)與外環(huán)之間最多只有一個公共頂點(diǎn),且內(nèi)環(huán)之間沒有公共頂點(diǎn)。
(6) 內(nèi)環(huán)之間最多只有一個公共頂點(diǎn),且兩個相鄰內(nèi)環(huán)之間只能通過該公共頂點(diǎn)進(jìn)行連通。
當(dāng)CityGML細(xì)節(jié)層次模型為LOD3及以上,需要檢測solid中多個shells的拓?fù)潢P(guān)系或者多個solids間的拓?fù)潢P(guān)系,在CGAL庫中以Nef-Polyhedral表示對象,對對象進(jìn)行布爾運(yùn)算,求其交集、并集、差集,以volume數(shù)判斷shell之間的空間關(guān)系。
不同LOD層級的建筑物適應(yīng)不同的一致性規(guī)則。LOD1是以規(guī)則長方體表示建筑物的沒有屋頂結(jié)構(gòu)的塊狀模型,因而在LOD1的檢測中,只考慮簡單體的拓?fù)湟?guī)則,不考慮幾何面的語義屬性、面上內(nèi)外環(huán)的拓?fù)潢P(guān)系或者幾何體中內(nèi)外shell的拓?fù)潢P(guān)系等;LOD2中可以確切地表示建筑物屋頂?shù)男螤罴巴庥^,是一個帶有屋頂結(jié)構(gòu)的簡化模型,所有幾何面均擁有語義屬性信息,因此在這個層級的幾何模型中,在LOD1拓?fù)錂z測的基礎(chǔ)上,增加語義屬性對幾何結(jié)構(gòu)約束的規(guī)則檢測;LOD3的建筑模型在LOD2的基礎(chǔ)上,增加了墻面、門窗、屋頂形狀等詳細(xì)的幾何外觀信息以及對“開口”的描述,在LOD3建筑模型的拓?fù)湟恢滦詸z測過程中,以LOD2的拓?fù)錂z測為基礎(chǔ),增加語義屬性中復(fù)合面間拓?fù)潢P(guān)系的規(guī)則檢測,以檢測墻面與窗或者窗與窗之間的幾何拓?fù)潢P(guān)系;LOD4在LOD3的基礎(chǔ)上加入了三維空間對象的內(nèi)部結(jié)構(gòu)信息,如房間、樓梯、家具等,這里不考慮家具等室內(nèi)設(shè)施,因而在LOD3拓?fù)錂z測的基礎(chǔ)上,增加了內(nèi)外shell及體與體之間的拓?fù)湟恢滦詸z測。由此可見,多層次的語義規(guī)則更有助于CityGML模型不同細(xì)節(jié)層次幾何模型的拓?fù)湟恢滦詸z測需求。
在同一個CityGML模型中,前文中描述的規(guī)則之間具有依賴關(guān)系。按照幾何要素進(jìn)行劃分。環(huán)要素的檢測優(yōu)先于其他所有規(guī)則進(jìn)行檢測,其后依次是面要素規(guī)則檢測,外殼要素規(guī)則檢測,體要素規(guī)則檢測,多體要素規(guī)則檢測;后一個環(huán)節(jié)的檢測依賴于前一個環(huán)節(jié)規(guī)則檢測結(jié)果,在前一個檢測正確或者經(jīng)過修復(fù)后正確之后,后面環(huán)節(jié)的檢測方能開始。
此外,在各個幾何要素層的檢測過程中,各個子規(guī)則也需要遵循一定的依賴性。下面以面檢測為例進(jìn)行說明。
面檢測子規(guī)則具體見表5。在保證其前序環(huán)規(guī)則檢測正確后,ID為203的多邊形平面性檢測是面要素幾何一致性檢測的前提,ID為201、202、205、206、207的規(guī)則之間相互獨(dú)立,依賴于ID為203、208的規(guī)則。其他子規(guī)則之間的檢測依賴關(guān)系見表6。
表5 面要素子規(guī)則
表6 面要素子規(guī)則檢測的依賴性說明
Tab.6 Dependency of sub-rule detection of polygon
elements
檢測規(guī)則ID201202203204205206207208201√√202√√203204√√√√√√√205√√206√√207√√208√209√210√
CityGML的幾何模型未顯示存儲solid中的拓?fù)潢P(guān)系,對solid的每個面采用單獨(dú)存儲的方法。因此在一個正方形中,同一個點(diǎn)將被存儲3次,則可能會出現(xiàn)3個坐標(biāo)表示同一個點(diǎn)。當(dāng)點(diǎn)數(shù)值很大時,在計算機(jī)的浮點(diǎn)計算下會導(dǎo)致solid出現(xiàn)未閉合的不一致性,因此需考慮一定的舍入誤差。ISO19107及GML中要求CityGML幾何模型中表面必須為平面,OGC在OGC CityGML QIE中對幾何模型平面性引入平面容差和角度容差[16]。
一條拓?fù)湟恢滦砸?guī)則對應(yīng)一個類型的拓?fù)鋯栴}。當(dāng)建筑物模型的拓?fù)洳灰恢骂愋洼^多且數(shù)據(jù)缺失嚴(yán)重時,較難修復(fù)全部類型的錯誤。這里以常見的平面幾何要素、方向一致性、閉合性、重復(fù)性等拓?fù)湟恢滦詥栴}的修復(fù)為例進(jìn)行說明。
平面幾何的特性與幾何實(shí)體的語義屬性互相聯(lián)系,針對平面幾何要素的修復(fù),需以語義屬性規(guī)則進(jìn)行輔助。以下對常見的地面(ground surface)、墻面(wall surface)及屋頂(roof surface)分別進(jìn)行說明。
地面的法向量垂直向下,計算該幾何面所有點(diǎn)所在最小二乘擬合面,面上所有點(diǎn)到擬合面的對應(yīng)投影點(diǎn)構(gòu)成平面Z,設(shè)平面Pxy平行于xy水平面并經(jīng)過平面中最低點(diǎn),求得Z平面上所有點(diǎn)到該平面的投影點(diǎn),則對應(yīng)投影點(diǎn)坐標(biāo)構(gòu)成的面即是修復(fù)后的幾何面,如圖4(a)所示;墻面應(yīng)與地面共享一條邊,以邊與法向量構(gòu)建平面Pyz,原幾何面上所有點(diǎn)至該平面的投影點(diǎn)構(gòu)成的面即為修復(fù)面,如圖4(b)所示;屋頂主要分為平屋頂與三角屋頂,平面屋頂修復(fù)與地面修復(fù)方法類似,如圖4(c)所示;三角屋頂需計算該屋頂所有點(diǎn)所在最小二乘擬合面,所有點(diǎn)沿Z軸至擬合面的投影點(diǎn)構(gòu)成的面即為屋頂?shù)男迯?fù)面,如圖4(d)所示。
圖4 平面幾何體的修復(fù)Fig.4 Fixing errors in plane geometry
在各個等級規(guī)則中,都有對方向性的檢測。以solid為例,其外shell法向應(yīng)指向體外,而內(nèi)shell方向應(yīng)指向體的內(nèi)部。該錯誤可通過遍歷每個面,根據(jù)該面的正確朝向,對順序不一致的邊界點(diǎn)索引進(jìn)行反轉(zhuǎn),從而修復(fù)方向不一致問題。在其他的檢測等級中,也可依次處理方向不一致問題。
閉合性修復(fù)分為環(huán)與體的情況。環(huán)的首末點(diǎn)必須相同,以保證環(huán)的閉合性,可通過復(fù)制第一點(diǎn)坐標(biāo)并加入到點(diǎn)序列末尾,對環(huán)的閉合性進(jìn)行修復(fù)。
多面體以半邊數(shù)據(jù)結(jié)構(gòu)表示,即幾何模型中每條邊均存在僅被兩個面所共享的特征,如圖5所示,有向邊〈V5,V6〉存在于面D中,有向邊〈V6,V5〉存在于面C中,則邊V5V6僅被C、D兩個面共享。針對數(shù)據(jù)結(jié)構(gòu)表示的特性,可通過存儲的半邊信息以修復(fù)未閉合問題。如圖5所示,邊V1V2僅存在于面A中,有向邊〈V1,V2〉存在于面A中,則〈V2,V1〉是缺失面B的一邊,同理可得有向邊〈V1,V4〉、〈V4,V3〉、〈V3,V2〉,即缺失面B由邊〈V1,V4〉、〈V4,V3〉、〈V3,V2〉、〈V2,V1〉組成。對于LOD2/LOD3的閉合修復(fù),可通過面B的法向量方向賦予語義信息。若單位法向量向上為屋頂,向下為地面;若法向量為水平方向則需判斷面B為墻面還是門窗。有向邊〈V1,V2〉在面A中,若其為面A外環(huán)中的邊,則邊〈V2,V1〉為面B的外環(huán),標(biāo)識B為墻面;否則為門或者窗。對于LOD4的體閉合修復(fù),則為該Solid語義屬性,其中針對未閉合面修復(fù)的算法如下:
圖5 建筑物體未閉合Fig.5 Solid geometry is not closed
begin
多面體_polyhedron;
if (_polyhedron->is_closed() == false)
while (_polyhedron->size_of_border_edges()>0)
Halfedge_handle he=++(_polyhedron->border_halfedges_begin());
he->vertex()->point().x()
he->vertex()->point().y()
he->vertex()->point().z()∥get the point in the missing polygon
_polyhedron->fill_hole(he);
_polyhedron->normalize_border();
end if
end
以環(huán)的重復(fù)性修復(fù)為例,在環(huán)一致性規(guī)則中,同一個環(huán)的點(diǎn)只允許首末點(diǎn)相同,其他點(diǎn)不允許重復(fù)。根據(jù)點(diǎn)重復(fù)類型不同,修復(fù)分為兩種情況,一種情況如圖6(a)所示,R=(V0,V1,V2,V3,V3,V0),其中點(diǎn)V3在點(diǎn)序列中出現(xiàn)連續(xù)重復(fù);另一種情況如圖6(b)中的R=(V0,V1,V4,V3,V2,V4,V0),點(diǎn)V4在序列中不是連續(xù)重復(fù)。針對(a)圖中的重復(fù)性,可將重復(fù)的第2個點(diǎn)直接刪除;針對(b)圖中的不一致問題,可將該環(huán)分為R=(V0,V1,V4,V0)及R=(V4,V2,V3,V4)兩個環(huán),因此多邊形被分割成多個多邊形。針對環(huán)重復(fù)、面重復(fù)或者shell等不一致問題,則可直接進(jìn)行刪除。
圖6 環(huán)上點(diǎn)的兩種重復(fù)性情況Fig.6 Two repetitive cases of points on the ring
本文研究以CityGML建筑物模型的LOD2數(shù)據(jù)、LOD3數(shù)據(jù)及LOD4數(shù)據(jù)為例,進(jìn)行試驗(yàn)驗(yàn)證分析。其中LOD2含32個建筑物,LOD3含400個建筑物,數(shù)據(jù)來源于OGC官網(wǎng),LOD4建筑物含10個語義對象,由某棟IFC建筑物模型經(jīng)過數(shù)據(jù)轉(zhuǎn)換得到的CityGML LOD4數(shù)據(jù)。統(tǒng)一設(shè)置舍入誤差為1 mm,平面容差分別為0.01 m,平面角度容差1°。檢測系統(tǒng)界面如圖7所示。
圖7 幾何檢測試驗(yàn)系統(tǒng)界面Fig.7 System interface of geometric validation
針對CityGML LOD2試驗(yàn)數(shù)據(jù)的幾何一致性檢測結(jié)果統(tǒng)計如圖8所示。該模型數(shù)據(jù)在幾何一致性檢測中存在環(huán)自相交、非平面、非流形邊、方向不一致、數(shù)據(jù)不完整導(dǎo)致幾何模型未閉合的不一致問題。如圖8(a)所示,該數(shù)據(jù)中不一致性問題占比達(dá)到一半以上;圖8(b)中給出了不一致問題的類型,其中非平面的幾何錯誤(對應(yīng)203號面要素規(guī)則)相比其他不一致性問題為多。
圖8 LOD2建筑物幾何一致性檢測試驗(yàn)結(jié)果Fig.8 Results of geometric consistency validation on LOD2 model of building
圖9給出了某些建筑物中出現(xiàn)的非流形問題(圖6(a))及方向不一致問題(圖6(b))共存的情況。其中紅色表示roof surface,灰色表示wall surface,藍(lán)色表示ground surface。
圖9 LOD2數(shù)據(jù)中多種幾何不一致共存的情況Fig.9 Multiple geometric inconsistency coexist in LOD2 models
針對CityGML LOD3試驗(yàn)數(shù)據(jù)的幾何一致性檢測結(jié)果統(tǒng)計如圖10。該模型數(shù)據(jù)在幾何一致性檢測中存在環(huán)自相交、環(huán)與環(huán)相交、非平面、門窗與墻面拓?fù)潢P(guān)系錯誤,導(dǎo)致幾何模型中內(nèi)環(huán)在外環(huán)外部或者門與墻面相交的內(nèi)外環(huán)拓?fù)潢P(guān)系錯誤、模型數(shù)據(jù)不完整導(dǎo)致幾何模型未閉合及模型方向不一致等問題。如圖10(a)所示,該數(shù)據(jù)中不一致性問題占比約33%;圖10(b)中給出了不一致問題的類型,其中非平面的幾何錯誤(對應(yīng)203號面要素規(guī)則)同樣最為突出。圖11給出了某些建筑物中因門窗與墻面相離或者相交從而導(dǎo)致數(shù)據(jù)存在環(huán)與環(huán)相交的幾何不一致問題,如圖11(a)、(b),其中紅色表示roof surface,灰色表示wall surface,土黃色表示窗,棕色表示門。
圖10 LOD3建筑物幾何一致性檢測試驗(yàn)結(jié)果Fig.10 Results of geometric consistency validation on LOD3 models of building
圖11 LOD3數(shù)據(jù)幾何不一致可視化Fig.11 Visualizing results of inconsistency of LOD3 models
CityGML LOD4細(xì)節(jié)層次的建筑物數(shù)據(jù)中,語義對象以solid表示,有room、living room、hall way、window、door、floor surface、ground surface、wall surface、roof surface、stair way。該LOD4的建筑物數(shù)據(jù)存在非流形、方向不一致、room不存在與door的關(guān)聯(lián)關(guān)系導(dǎo)致該room不與其他室內(nèi)空間連通、幾何體未閉合及語義對象間的拓?fù)潢P(guān)系錯誤等幾何不一致等問題。其中低等級的幾何錯誤較少,但方向不一致性錯誤較多。living room、roof surface、ground surface都出現(xiàn)了該錯誤,如room與door 的is-part-of的錯誤(圖12(a))、樓板與樓梯的拓?fù)潢P(guān)系錯誤(圖12(b))。
圖12 LOD4幾何不一致可視化Fig.12 Visualizing results of inconsistency of LOD4 models
本文以CityGML建筑物模型中常見的建筑物為研究對象,根據(jù)國際與國內(nèi)的相關(guān)標(biāo)準(zhǔn),從建筑物幾何結(jié)構(gòu)特征和語義屬性信息中抽取對建筑物幾何結(jié)構(gòu)、拓?fù)潢P(guān)系、方向關(guān)系、距離關(guān)系具有約束影響及可轉(zhuǎn)化為約束條件的非空間隱喻的語義信息了構(gòu)建了建筑物的拓?fù)湟恢滦砸?guī)則集??紤]到不同LOD層次和不同語義屬性的幾何對象,結(jié)合拓?fù)湟恢滦砸?guī)則對單個語義對象的點(diǎn)、線、面、體等幾何要素及多個語義對象間的空間關(guān)系,進(jìn)行模型空間數(shù)據(jù)拓?fù)湟恢滦缘姆謱訖z測,提出了系統(tǒng)的不一致性檢測方法,檢測同一空間現(xiàn)象/空間實(shí)體在表達(dá)時存在的拓?fù)洳灰恢聠栴},并進(jìn)行了典型修復(fù)算法研究。試驗(yàn)結(jié)果表明所提出的規(guī)則和算法可檢測出存在幾何不一致的建筑物模型空間數(shù)據(jù),可為后期修復(fù)提供有力支持,確保數(shù)據(jù)集的拓?fù)湟恢滦?,提高空間數(shù)據(jù)質(zhì)量,提升三維數(shù)據(jù)在集成中的互操作性。