宋珉,劉鵬超,趙維,胡振彪
(1.青島市嶗山區(qū)計算機信息中心,山東青島266003; 2.青島市勘察測繪研究院,山東青島266032)
2.5維地圖制作算法研究與實現(xiàn)
宋珉1?,劉鵬超2,趙維2,胡振彪2
(1.青島市嶗山區(qū)計算機信息中心,山東青島266003; 2.青島市勘察測繪研究院,山東青島266032)
隨著網(wǎng)絡(luò)技術(shù)圖形學(xué)技術(shù)地理信息技術(shù)的不斷發(fā)展與普及三維GIS與webGIS已經(jīng)成為地理信息系統(tǒng)行業(yè)的主流發(fā)展方向。但基于成本、技術(shù)等諸多因素的限制,兩者尚未廣泛結(jié)合運用與GIS產(chǎn)品中。論文提供一套基于SHP文件的2.5維建筑物數(shù)據(jù)生產(chǎn)方案,以將低B/S系統(tǒng)三維可視化的技術(shù)難度與生產(chǎn)成本,填補當(dāng)前GIS市場中相關(guān)產(chǎn)品的空缺。
2.5D;建筑物數(shù)據(jù);瓦片技術(shù)
2.5維圖形是將三維立體按照一定投影規(guī)則映射到某一平面上,以展示三維立體效果的二維圖形。目前基于B/S結(jié)構(gòu)的真三維場景發(fā)布技術(shù)難度大,成本高,二維平面地圖展現(xiàn)空間數(shù)據(jù)又有局限性,并且一般三維場景的透視投影效果使地理空間坐標(biāo)發(fā)生改變,即使打印成圖后也不能實現(xiàn)切圖發(fā)布。故當(dāng)前在B/S系統(tǒng)上展示空間數(shù)據(jù)的三維立體效果,首先要解決以上問題。
本文論述采用平行投影的方法,將房屋數(shù)據(jù)通過三維空間地物投影到地平面處理生成房屋模型平面圖的方式切圖發(fā)布,既保證了空間坐標(biāo)的一致,也在一定程度上體現(xiàn)了立體效果,可以作為各類平臺的一種新數(shù)據(jù)類型。本文將探討如何將沒有拓撲錯誤(指面狀數(shù)據(jù)有交集)的、屬性數(shù)據(jù)中包含建筑物層數(shù)的shp數(shù)據(jù)生成新的2.5維面狀shp數(shù)據(jù)以展示三維立體效果。其基本步驟包括建筑物各投影面生成、投影面排序、投影面渲染等步驟。
1.1 瓦片技術(shù)及影像金字塔模型
隨著WebGIS在各行各業(yè)不同程度的推廣,瓦片式技術(shù)(Tile Cache)已成為電子地圖數(shù)據(jù)訪問的關(guān)鍵技術(shù)之一。Tile Cache是一個地圖瓦片緩存器,大大提高了訪問地圖的響應(yīng)速度,只有當(dāng)請求的地圖不在Tiles之列的才與WMS等其他服務(wù)交互請求地圖,消耗空間服務(wù)器資源。瓦片式地圖的緩存效果可以使得WMS服務(wù)的速度加快10倍~100倍,甚至更高。利用瓦片式電子地圖方案可以較好地解決WebGIS產(chǎn)品的數(shù)據(jù)發(fā)布和訪問速度,是當(dāng)前解決該類問題的主要方法。
1.2 投影方式及視錐體
目前大多數(shù)地理信息系統(tǒng)軟件三維空間建模場景采用的投影方式一般采用透視投影方式、視錐體剔除技術(shù)、距離層次渲染技術(shù)來生成三維場景,視覺效果較為真實。但將以上技術(shù)生成2.5維建筑物模型,將產(chǎn)生扭曲空間坐標(biāo),并且不能實現(xiàn)大比例尺地圖全范圍等分辨率顯示,從而不宜數(shù)據(jù)柵格化發(fā)布。
圖1 高程比對遮擋關(guān)系
圖1為同一模型兩種投影產(chǎn)生的線劃圖,透視投影較為真實,但投影后造成坐標(biāo)變換。
透視投影產(chǎn)生的投影映射點是按同一個視點發(fā)散出的不同投影向量所得出的,形成視錐體,視點o距三維實體A越近,各點投影向量偏差越大,投影圖形的變形就越大,如圖2所示。
圖2 點投影(透視)
圖3 平行投影
平行投影產(chǎn)生的投影映射點是按不同視點發(fā)散出的同一投影向量所得出的,水準(zhǔn)面上每個不重合的投影點唯一對應(yīng)一個視點,視點相對于投影點位置依靠向量表示為(α×m,β×m,γ×m),其中m為+∞,(α,β,γ)為投影向量,如圖3所示。
故作者嘗試以shp文件格式將模擬的全幅大比例尺三維建筑物模型以平行投影方式寫入shp文件保存,以解決三維可視化后造成的地理坐標(biāo)扭曲或影像數(shù)據(jù)矯正后各點分辨率不統(tǒng)一等難題。
2.1 投影面生成
獲取某一建筑物基面,以及該建筑物層數(shù)記錄,將基面拆分成點坐標(biāo)串,根據(jù)層數(shù)、投影規(guī)則以及自設(shè)定的層數(shù)高度逐層計算各層頂面的點坐標(biāo)串,后分別獲取相鄰層的兩組點坐標(biāo)串中對應(yīng)的相鄰兩點(共四點,其中任一點存在另一點與其在三維坐標(biāo)中橫縱坐標(biāo)相同且垂直距離相差一個樓層高度),將四點構(gòu)平行四邊形面。遍歷各層,最后將最高層頂面點坐標(biāo)串構(gòu)頂面。如建筑物基面有n條邊,層數(shù)為m層,則生成后有n× m個側(cè)面和一個頂面。
2.2 投影面排序
根據(jù)投影向量方向,逐層由遠及近掃描所有建筑物側(cè)面,將先掃描到的側(cè)面復(fù)制后寫入新文件,然后計算未復(fù)制的側(cè)面中是否存在本次寫入側(cè)面所構(gòu)建筑物的其他側(cè)面,如果沒有則復(fù)制該建筑物頂面寫入新文件后繼續(xù)掃描;存在則直接繼續(xù)掃描,直至所有面被寫入新文件。
2.3 設(shè)置投影面明暗度
利用GIS軟件根據(jù)設(shè)定的平行光照射方向,于所有建筑物投影側(cè)面中,指定兩點連線(投影面生成過程中屬同一點坐標(biāo)串中的兩點連線:每側(cè)面共存在兩條,由于兩線平行任一條都可)所成銳夾角的角度值分級,角度大的側(cè)面亮度高,角度小的側(cè)面亮度相對較低。頂面明暗度設(shè)置靈活性較大,本文不做贅述。
2.4 數(shù)據(jù)瓦片柵格化
將三維可視化建筑物模型地圖按照一定規(guī)則格網(wǎng)逐級逐格柵格化,并依據(jù)格網(wǎng)四角地理空間坐標(biāo)按照一定規(guī)則命名,保存成圖片。至此數(shù)據(jù)制作完畢,外部程序可按照一定規(guī)則調(diào)用圖片解析其格網(wǎng)所在地理坐標(biāo),拼湊成圖。
3.1 平行投影
為保證地平面坐標(biāo)不改變的前提下實現(xiàn)全幅大比例尺成圖,可以采用平行投影的方式,以犧牲部分真實感為代價實現(xiàn)。按照設(shè)定的三維空間投影向量,將整個模擬場景中所有實體點投影至高程為零的地平面,轉(zhuǎn)換為數(shù)學(xué)問題為空間任一點(x,y,z)按向量投影(α,β,γ)投影至z=0面。易證投影后映射點坐標(biāo)為[x-(α×z)/ γ,y-(β×z)/γ,0],且易證三維空間線的地平面投影線為其兩端點投影點連線。面投影同理易證。
故將三維實體各頂點投影點以原規(guī)則連接,所得投影即為三維實體投影。可直接作為無誤差的三維實體二維框架圖。
3.2 層面分割
在平行投影法則下所得兩投影點如若重疊,則可認為兩點視點相同,其遮擋關(guān)系可根據(jù)兩點對應(yīng)三維點距視點距離判定。而易證比較OA與OB的長度等同于比較OA1與OB1長度,即比較AB兩點高程,如圖4所示。
圖4 高程比對遮擋關(guān)系
在投影面生成中,將原坐標(biāo)串利用[x-(α×z)/γ,y-(β×z)/γ,0]公式計算所得的新坐標(biāo)串構(gòu)面填充后,將存在圖5所示情況。
圖5 頂側(cè)面遮擋處理
圖5 中A側(cè)面與B頂面投影后存在遮擋關(guān)系,A面中對應(yīng)三維點的高程不唯一,其范圍取值為(0,h1) (h1為A樓高度),B頂面所有點高程唯一為h2,且0<h2<h1。按照高程遮擋規(guī)則,B面應(yīng)遮擋A面中所有高程小于h2的點,A面中高程大于h2的點遮擋B面。故應(yīng)將A面按高程h2拆分兩面,然后按照高程遮擋規(guī)則判定三面遮擋關(guān)系。
所有頂面的高程值為設(shè)定的單層樓高H的正整數(shù)倍,故投影面生成過程中將側(cè)面按樓層拆分,每面切割為其樓層數(shù)份,即可按照高層遮擋規(guī)則進行排序生成正確的模型圖。
3.3 分層掃描
(1)分層排序
某建筑物基面存在M條邊,其樓層數(shù)為N層,則投影面將產(chǎn)生(M×N)+1張面,并且Shp文件中將弧線的存儲為大量點坐標(biāo)串,以青島市嶗山區(qū)房屋數(shù)據(jù)為例,房屋基面總數(shù)約為17萬條,經(jīng)算法處理將生成417MB的2.5維shp文件,投影面排序算法效率決定數(shù)據(jù)處理程序的生成效率。經(jīng)研究方案根據(jù)投影面高程遮擋規(guī)則得出高層面必定遮擋底層面。故方案采用分層掃描排序算法,提高處理效率,即根據(jù)各投影面對應(yīng)的樓層由低到高分層處理,各層處理完畢后依層數(shù)疊加,形成完整的正確的三維模型平面圖。
(2)同層側(cè)面掃描
同層面掃描步驟如下:
①按三維投影向量(α,β,γ)分解出平面投影向量(α,β),按此向量反方向垂直線遍歷掃描單層全范圍投影面,至獲取某條投影側(cè)面為止。
②判斷該面是否遮擋其他投影側(cè)面。如若遮擋其他側(cè)面,將指針指向任一其他投影面,判斷遞歸判斷遮擋算法,至指針指向一未遮擋其他側(cè)面的投影面。
③將此面復(fù)制寫入shp文件。重復(fù)1-2步至本樓層全幅無側(cè)面剩余。
(3)頂側(cè)面排序處理
由于建筑頂面高程不小于其自身側(cè)面高程,頂側(cè)面、頂面之間的遮擋關(guān)系都可依據(jù)高程遮擋規(guī)則判定。故分層排序算法中,每層側(cè)面排序過后,將所有該層的頂層面復(fù)制寫入shp文件即可。由于基面數(shù)據(jù)以沒有拓撲錯誤為基本前提,同層各頂層間不存在疊擋關(guān)系,方案可不予考慮。
本論文介紹的解決方案,產(chǎn)生三維模型平面圖柵格化后處理成瓦片數(shù)據(jù)發(fā)布,保留了地理坐標(biāo)的一致性,同時具有成本低、簡潔美觀、易更新的特性,亦可實現(xiàn)建筑鏤空等特殊效果。然而由于方案產(chǎn)生的矢量數(shù)據(jù)過于龐大以及本論文中所有的數(shù)據(jù)處理算法尚存在改進空間等諸多原因,使本項技術(shù)的推廣尚待進一步研究。但本方案降低了B/S系統(tǒng)展現(xiàn)三維空間效果的難度與成本,在地理信息系統(tǒng)尚未全面三維數(shù)字化的今天是一種良好的中間過渡產(chǎn)品。
圖6 成圖與實景影像對比
[1]吳信才,郭玲玲,白玉琪.WebGIS開發(fā)技術(shù)分析于系統(tǒng)實現(xiàn)[J].計算機工程與應(yīng)用,2001(5):96~99
[2]毛玉龍.ArcGIS的二次開發(fā)[J].福建電腦,2006(2)
[3]唐金秀,申禮宏,張萬軍.ARC/INFO矢量數(shù)據(jù)轉(zhuǎn)換方法[J].計算機系統(tǒng)應(yīng)用,2004(7)
[4]索俊鋒.基于MapGIS 6.X研究和ArcGIS 9.0平臺的數(shù)據(jù)格式轉(zhuǎn)換研究[J].國土資源信息化,2006(4)
Research and Implementation on Algorithm of 2.5-Dimensional Map Producing
Song Min1,Liu PengChao2,Zhao Wei2,Hu ZhenBiao2
(1.LaoShan District Computer MSG CNTR,Qingdao 266003,China;2.Qingdao Geotechnical Investigation and Surveying Research Institute,Qingdao 266032,China)
With the rapid development of network technology、graphics technology、geographic information technology,popular three-dimensional GIS and webGIS has become the main direction of GIS industry.However,Due to cost or technology and many other factors,combination of the two is not widely used in GIS products.My paper provides a set of data generation Program based on 2.5-dimensional structures SHP file,which can the lower the technical difficulty and production costs of the B/S system three-dimensional visualization,fill the vacancies in related products of current GIS market.
2.5-Dimensions;Data of Architecture;Tile Cache
1672-8262(2010)05-104-03
P283
A
2010—05—20
宋珉(1972—),男,工程師,主要從事GIS應(yīng)用及政務(wù)信息化建設(shè)管理工作。