楊 乃,賈 躍,蘇黎蘭,萬 林,楊 潔
(1. 中國地質(zhì)大學信息工程學院,湖北 武漢 430074; 2. 揚州市城市規(guī)劃編制研究中心,江蘇揚州 225002; 3. 中國地質(zhì)大學公共管理學院,湖北 武漢 430074)
?
基于點集的拉伸建模改進方法
楊乃1,賈躍2,蘇黎蘭3,萬林1,楊潔1
(1. 中國地質(zhì)大學信息工程學院,湖北 武漢 430074; 2. 揚州市城市規(guī)劃編制研究中心,江蘇揚州 225002; 3. 中國地質(zhì)大學公共管理學院,湖北 武漢 430074)
探討了拉伸建模存在公共基元重復構(gòu)建、側(cè)面空間關(guān)系丟失、產(chǎn)生冗余基元等拓撲問題,指出了不同地物三維模型兩個側(cè)面之間拓撲關(guān)系存在的12種表現(xiàn)形式,提出了基于點集的自動拉伸建模方法,并分別介紹了點集的提取流程和體的構(gòu)建流程,最后通過一個實例證明了以上方法對傳統(tǒng)拉伸建模方法在拓撲關(guān)系方面存在的不足有所改進。
拓撲關(guān)系;拉伸建模;三維建模;空間關(guān)系;地圖可視化
拓撲關(guān)系是最重要的一種空間關(guān)系[1-2],是空間查詢與分析的基礎(chǔ)[3],已廣泛應(yīng)用于制圖綜合、空間推理、空間數(shù)據(jù)挖掘等實際應(yīng)用中[4]。拓撲關(guān)系不一致將會導致空間認知錯誤,影響地圖的傳輸效果[2]。當前,三維模型的拓撲構(gòu)建與分析已成為3DGIS的主要研究內(nèi)容之一[5-10]。
以拉伸(Extrusion)的方式建立三維模型是3DGIS及三維建模軟件中常見的一種建模方法,尤其適用于具有規(guī)則形體結(jié)構(gòu)的地物模型構(gòu)建,如建筑物。這種建模方法往往不會考慮地物之間的拓撲關(guān)系,導致出現(xiàn)諸如公共面重復、垂直方向上空間關(guān)系丟失等問題,建立的模型常常僅限于可視化表達,無法進行進一步的空間分析[11]。針對這些問題,文獻[12]將整個區(qū)域的建筑和地形統(tǒng)一用一張Delaunay三角網(wǎng)表示,實現(xiàn)了類似拉伸的效果,但無法表達兩個相鄰建筑的垂直公共面;文獻[11]和文獻[13]基于約束性Delaunay三角網(wǎng)構(gòu)建了拓撲一致的三維城市模型,其中產(chǎn)生的若干點、若干面仍然可以進一步綜合以降低拓撲復雜性。本文將對此進行改進,提出一種基于點集的自動拉伸建模方法,能夠改進傳統(tǒng)拉伸建模方法在拓撲關(guān)系方面存在的若干不足。
三維空間中,體與體之間的拓撲關(guān)系共有8種[8-14],在三維地籍與房產(chǎn)管理領(lǐng)域,建筑物的體對象之間只有相離和相鄰關(guān)系[5-6],其底面也僅對應(yīng)存在這兩種關(guān)系。拉伸建模是將一系列描述體狀地物底面的多邊形按指定高度進行拉伸拔高以形成塊狀多面體的三維建模方法,最適用于上述建筑體模型的建立[11],如圖1所示。這種方式建立的三維模型主要存在如下拓撲問題。
圖1 拉伸建模圖示
1. 公共基元重復構(gòu)建
結(jié)點、邊、面和體是4種拓撲基元[6],如圖1(a)所示,多邊形A、B是俯視條件下相鄰地物的兩個底面示意圖,因高度不同,通過拉伸之后形成的三維模型如圖1(b)所示,其中,二者公共的部分(圖1(c)中mnde)的結(jié)點、邊、面在A、B拉伸時被分別構(gòu)建。
2. 側(cè)面空間關(guān)系丟失
如圖1所示,即使底面A、B之間存在拓撲關(guān)系,但拉伸建模之后,側(cè)面形成的結(jié)點、邊、面,如圖1(a)邊def對應(yīng)的側(cè)面(圖1(c))中共形成8個結(jié)點、10條邊、3個面,它們之間的相互關(guān)系并沒有得到有效存儲,不利于垂直方向上的空間分析。
3. 產(chǎn)生冗余基元
上文中公共基元重復構(gòu)建將產(chǎn)生一些重復的基元。此外,還會產(chǎn)生一些不必要的基元,具體如下:
1) 在底面數(shù)據(jù)采集時,經(jīng)常會出現(xiàn)多點重合的現(xiàn)象,拉伸建模后,頂面對應(yīng)將會產(chǎn)生重合點。
2) 底面邊線中間的若干節(jié)點拉伸建模后,在頂面形成對應(yīng)的節(jié)點,在對應(yīng)側(cè)面上被拉伸成為一條條直線,將側(cè)面分割為多個子側(cè)面。如圖1(a)邊bcd拉伸后,點c在頂面對應(yīng)形成點i,并被拉伸為直線ci,將側(cè)面bdjh分割為面bcih和面cdji(如圖1(c)所示)。
3) 多個具有不同高度屬性的底面相接時,某些公共點拉伸建模后將會導致冗余基元的產(chǎn)生。如圖1(a)所示,底面A與底面B高度屬性不同,拉伸建模后,邊def對應(yīng)的側(cè)面理應(yīng)被分割為具有相接關(guān)系的2個子側(cè)面,但實際上被劃分為3個子側(cè)面(如圖1(b)、圖1(c)所示),其原因在于底面A拉伸后在點e對應(yīng)的頂面邊上產(chǎn)生了多余點k,側(cè)面上產(chǎn)生了多余邊km。文獻[11]和文獻[13]尚未解決該問題。
上述拓撲問題主要體現(xiàn)在三維模型側(cè)面上,根據(jù)拉伸建模原理,側(cè)面不可能出現(xiàn)島、洞等情況,只能是規(guī)則的簡單多邊形。簡單多邊形存在8種拓撲關(guān)系[15-18],但拉伸形成的三維模型側(cè)面之間只存在相離、相接、相交、覆蓋、覆蓋于、相等6種拓撲關(guān)系。以2個地物為例,具體表現(xiàn)形式有12種(如圖2所示)。
圖2 側(cè)面拓撲關(guān)系
其中,圖2(g)表示兩個側(cè)面存在相等關(guān)系,圖2(c)和圖2(l)、圖2(d)和圖2(k)、圖2(h)和圖2(j)盡管對稱,但因地物之間的高度及判斷目標的先后順序不同,本文實現(xiàn)過程并不相同,因此將其列在圖2中。對于2個以上的地物,拉伸建模后可能出現(xiàn)一個三維模型側(cè)面與其他多個三維模型側(cè)面存在拓撲關(guān)系的情況,但也只是圖2各種情況的排列組合,本文每次只需考慮兩個側(cè)面即可。
為解決上述問題,本文首先根據(jù)地物高度及其底面之間的拓撲關(guān)系,提取一系列點,然后基于這些點構(gòu)建三維模型的各個面,最終由這些面封閉構(gòu)成體。
1. 點集的提取
構(gòu)成三維模型的點集主要包括底面、頂面的結(jié)(節(jié))點及側(cè)面上與其他三維模型相關(guān)聯(lián)的點。
(1) 底面重合點的處理
要避免拉伸建模后產(chǎn)生重合點,首先必須對底面重合點進行處理。重合點可以通過坐標值是否相同進行判斷,也可以通過點與點之間的拓撲關(guān)系進行判斷,找出重合點之后,只需保留其中一個點即可。
(2) 底面及頂面非拐點的處理
當節(jié)點關(guān)聯(lián)的兩條邊之間的夾角為180°,稱之為非拐點。非拐點是拉伸建模產(chǎn)生冗余基元的重要因素,主要表現(xiàn)為:①底面邊上的非拐點,但與其他底面沒有關(guān)聯(lián)關(guān)系,拉伸后導致頂面邊上也產(chǎn)生非拐點,如圖3中的點a,拉伸后頂面形成非拐點d,并在側(cè)面形成邊ad;②底面邊上的非拐點,與其他底面存在關(guān)聯(lián)關(guān)系,同時也是其他底面的非拐點,拉伸后導致兩個三維模型的頂面邊上都產(chǎn)生非拐點,如圖3中的點b,拉伸后在兩個頂面上分別形成非拐點e和f,并在側(cè)面形成邊be、ef;③較高三維模型底面上的非拐點,與其他底面存在關(guān)聯(lián)關(guān)系,但不是其他底面的非拐點,拉伸建模后在較高三維模型頂面形成非拐點,如圖3中的c點拉伸后在底面A對應(yīng)的三維模型頂面形成非拐點h。這些非拐點并不需要提取,主要通過與之相關(guān)聯(lián)的兩條邊之間的夾角是否為180°來判斷。
圖3 非拐點示意圖
(3) 頂面及側(cè)面點的提取
頂面點是指頂面輪廓邊上的點,側(cè)面點是指側(cè)面內(nèi)域及與底面垂直的側(cè)面邊上的點。對獨立地物而言,不存在側(cè)面點,構(gòu)建頂面點時,x、y坐標值與對應(yīng)底面點相同,z坐標在對應(yīng)底面點z坐標值基礎(chǔ)上增加地物高度值即可。對與其他地物相鄰的地物而言,底面點與其他底面不存在關(guān)聯(lián)關(guān)系時,其對應(yīng)頂面點的構(gòu)建方法與獨立地物相同;底面點與多個底面相關(guān)聯(lián)時,則根據(jù)關(guān)聯(lián)底面的高度屬性從低到高排序,依次構(gòu)建側(cè)面點,其中當多個關(guān)聯(lián)底面高度屬性值相等時,對應(yīng)只構(gòu)建一個側(cè)面點,各側(cè)面點x、y坐標值與對應(yīng)底面點相同,z坐標在對應(yīng)底面點z坐標值基礎(chǔ)上增加各關(guān)聯(lián)底面高度屬性值即可。
(4) 拓撲信息存儲
提取點集之后,需存儲各點與底面及底面點的對應(yīng)關(guān)系,為方便后續(xù)體的構(gòu)建,還需存儲各點的高程值及其排序。如圖4所示,具有同一底面關(guān)聯(lián)點的各點,可以通過高程值或高程排序判斷各點在Z方向上的連通關(guān)系;具有不同底面關(guān)聯(lián)點的各點(如點3、點4),可以通過底面關(guān)聯(lián)點的排列序號及是否存在相同關(guān)聯(lián)底面來判斷在XY平面上是否存在連通關(guān)系等。
圖4 點的拓撲信息
2. 體的構(gòu)建
若不考慮側(cè)面拓撲關(guān)系,底面點數(shù)為n時,拉伸建立的三維模型由n+2個面組成,但實際如上文所述,當?shù)匚锵噜彆r,某些側(cè)面將被分割為若干個子側(cè)面,組成三維模型的面數(shù)將大于n+2。因此,在體的構(gòu)建過程中,為保證側(cè)面拓撲關(guān)系的正確性,最重要就是通過以上點集構(gòu)建存儲拓撲信息的各個面。
(1) 底面構(gòu)建
根據(jù)點集存儲的拓撲信息,找到地物關(guān)聯(lián)的底面點,連接封閉即可。
(2) 頂面構(gòu)建
在點集中找到與底面點對應(yīng)且高度屬性值為地物高度的點,連接封閉即可。
(3) 側(cè)面構(gòu)建
根據(jù)上文分析可知,底面點在頂面上不一定有對應(yīng)的點,如圖5中點c,因此在構(gòu)建側(cè)面時,以頂面點為基準,在兩個連通頂面點對應(yīng)的底面點之間尋找是否存在共享子側(cè)面,有則先構(gòu)建該共享子側(cè)面,再判斷這兩個連通頂面點與對應(yīng)底面點之間是否還存在非共享子側(cè)面,有則繼續(xù)構(gòu)建該非共享子側(cè)面。如圖5所示,連通頂面點B、g對應(yīng)的底面點A、d之間存在共享子側(cè)面,從點A開始尋找連通的底面點c,從點集中找到點A、c對應(yīng)的側(cè)面點a、b,由這4個點即可構(gòu)建共享子側(cè)面Aabc,構(gòu)建完成后接著構(gòu)建頂面點B、g與底面點A、d之間存在的非共享子側(cè)面aBgdcb,非共享子側(cè)面由共享子側(cè)面頂面點、不存在共享子側(cè)面的底面邊結(jié)點、連通頂面點共同構(gòu)成。
圖5 側(cè)面構(gòu)建圖示
(4) 體的構(gòu)建及拓撲信息存儲
建立頂面、底面及側(cè)面后,為便于體的構(gòu)建及空間查詢與分析,需存儲各面的類型信息,并建立4種拓撲基元的關(guān)聯(lián)關(guān)系,其中,建立面-面、面-體、體-體的拓撲關(guān)系是以拉伸的方式建立保持正確拓撲關(guān)系的三維地物模型的基礎(chǔ)。文獻[5]和文獻[6]指出了體的拓撲關(guān)系構(gòu)建模型,由于拉伸建模形成的頂面、底面及側(cè)面都與底面點存在對應(yīng)關(guān)系,因此,本文提出的方法中各面都記錄了底面關(guān)聯(lián)點。這樣,通過底面關(guān)聯(lián)點就可以判斷各面之間的拓撲關(guān)系,如圖5所示,側(cè)面aBgdcb的底面關(guān)聯(lián)點為點A、c、d,側(cè)面Aabc的底面關(guān)聯(lián)點為A、c,根據(jù)上文的側(cè)面拓撲關(guān)系分析及兩個面的共享基元點,很容易判斷兩者是相接關(guān)系。此外,對于頂面、底面而言,記錄包含它們的歸屬體及與它們有共享拓撲基元的關(guān)聯(lián)體;對于非共享子側(cè)面而言,記錄包含它們的歸屬體;對于共享子側(cè)面而言,記錄包含它們的所有關(guān)聯(lián)體(如圖6所示)。通過這種存儲方式,為面/面、面/體、體/體之間的空間查詢與分析提供了便利,構(gòu)建體時只需根據(jù)以上存儲的拓撲信息找到相應(yīng)的頂面、底面及側(cè)面封閉即可。
圖6 面的拓撲信息
3. 試驗與分析
本文基于VB.net+ArcGISEngine對以上方法進行了試驗,圖7(a)為某小區(qū)底面數(shù)據(jù),提取點集后的結(jié)果如圖7(b)所示,最終提取點數(shù)為119個,而常見拉伸建模方法形成的點數(shù)為228個?;谔崛〉狞c集建立的三維模型如圖7(c)所示,該方法很好地解決了底面帶洞、島等復雜多邊形的建模問題。圖7(d)為ArcScene提供的Extrusion功能拉伸后的結(jié)果,將其與圖7(c)對比,二者內(nèi)部結(jié)構(gòu)不同(圖7(c)和(d)中底部區(qū)域),本文建立的體模型結(jié)構(gòu)更加簡單。此外,如圖7(e)所示,本文提出的方法還可用于基于面的空間查詢與分析。
圖7 試驗與分析
本文顧及三維模型的拓撲關(guān)系,提出了基于點集的自動拉伸建模改進方法,能夠改進拉伸建模在拓撲方面存在的若干不足。相比常見的拉伸建模方法,該方法提取的點數(shù)較少,并且隨著地物底面多邊形數(shù)及拓撲關(guān)系復雜性的增加,點數(shù)的減少量還將大大增加,以此構(gòu)建的體的內(nèi)部結(jié)構(gòu)得到了簡化,并能提供面/面、面/體、體/體之間的空間查詢與分析。盡管如此,由于拉伸建模形成的三維模型還存在一些弱點[5],對于側(cè)面為非規(guī)則多邊形、頂面非平行于底面的地物來說,如何建立保持其拓撲一致性的三維模型還有待進一步研究。
[1]鄧敏,李志林,李光強. 簡單面目標與帶孔洞面目標間拓撲關(guān)系的層次表達方法[J]. 測繪學報, 2008,37(3):330-337.
[2]詹陳勝,武芳,翟仁健,等. 基于拓撲一致性的線目標空間沖突檢測方法[J]. 測繪科學技術(shù)學報,2011,28(5):387-390.
[3]吳信才. 地理信息系統(tǒng)原理與方法[M]. 北京: 電子工業(yè)出版社, 2009: 48-51.
[4]鄧敏,馬杭英. 線與面目標間拓撲關(guān)系的層次表達方法[J]. 測繪學報,2008,37(4):507-513.
[5]郭仁忠,應(yīng)申,李霖. 基于面片集合的三維地籍產(chǎn)權(quán)體的拓撲自動構(gòu)建[J]. 測繪學報,2012,41(4):620-626.
[6]李霖,趙志剛,郭仁忠,等. 空間體對象間三維拓撲構(gòu)建研究[J]. 武漢大學學報(信息科學版),2012,37(6):719-723.
[7]賀彪,李霖,郭仁忠,等. 顧及外拓撲的異構(gòu)建筑三維拓撲重建[J]. 武漢大學學報(信息科學版),2011,36(5):579-583.
[8]劉新,劉文寶,李成名. 三維體目標間拓撲關(guān)系與方向關(guān)系的混合推理[J]. 武漢大學學報(信息科學版),2010,35(1):74-78.
[9]鄧念東,侯恩科. 三維體元拓撲數(shù)據(jù)模型的修正及其形式化描述[J]. 武漢大學學報(信息科學版),2009,34(1):52-56.
[10]陳鵬,孟令奎,宋楊. 三維GIS中基于空間拓撲約束條件的R樹研究[J]. 武漢大學學報(信息科學版),2007,32(4):347-349.
[11]LEDOUXH,MEIJERSM.TopologicallyConsistent3DCityModelsObtainedbyExtrusion[J].InternationalJournalofGeographicalInformationScience,2011, 25(4):557-574.
[12]TSEROC,DAKOWICZM,GoldCM,etal.BuildingReconstructionUsingLiDARData[C]∥Proceedingsof4thISPRSWorkshoponDynamicandMulti-dimensionalGIS.Pontypridd,Wales,UK:[s.n.], 2005:156-161.
[13]LEDOUXH,MEIJERSM.ExtrudingBuildingFootprintstoCreateTopologicallyConsistent3DCityModels[J].UrbanandRegionalDataManagement-UDMSAnnuals,2009(1): 39-48.
[14]ZLATANOVAS,RAHMANAA,SHIW.TopologicalModelsandFrameworksfor3DSpatialObjects[J].Computers&Geosciences, 2004(30):419-428.
[15]劉波,李大軍,鄒時林,等. 帶孔洞面域間的拓撲關(guān)系的組合推理[J]. 測繪學報,2011,40(2):262-267.
[16]沈敬偉,閭國年,溫永寧,等. 拓撲和方向空間關(guān)系組合描述及其相互約束[J]. 武漢大學學報(信息科學版),2011,36(11):1305-1308.
[17]汪西莉,覃婧嬋,曹菡,等. 基于SRC-Ontology的空間拓撲關(guān)系拓展表示方法及實現(xiàn)[J]. 武漢大學學報(信息科學版),2009,34(3):339-343.
[18]劉波,李大軍,阮見,等. 帶空洞面對象間拓撲關(guān)系形式化描述[J]. 武漢大學學報(信息科學版),2009,34(1):68-71.
ImprovedExtrusionModelingMethodBasedonPointSet
YANGNai,JIAYue,SULilan,WANLin,YANGJie
2015-05-26
國家自然科學基金(41201474;41401449)
楊乃(1984—),男,博士,講師,主要研究方向為三維地圖可視化。E-mail:naigeer@163.com
P208
B
0494-0911(2016)05-0041-04
引文格式: 楊乃,賈躍,蘇黎蘭,等. 基于點集的拉伸建模改進方法[J].測繪通報,2016(5):41-44.DOI:10.13474/j.cnki.11-2246.2016.0151.