阮明,譚慶濤,王文瑞
(南寧市勘測院,廣西 南寧 530001)
近年來,隨著計算機技術(shù)的飛速發(fā)展,三維地理信息系統(tǒng)正在迅速進入大眾的視野。三維地圖具有虛擬現(xiàn)實表現(xiàn)的高度真實感,其在城市基礎(chǔ)設(shè)施管理、城市規(guī)劃、城市公共安全、城市開發(fā)決策支持、污染分布仿真和土木工程等眾多領(lǐng)域中顯示出了巨大的應(yīng)用潛力,已經(jīng)成為普遍關(guān)注的熱點產(chǎn)品。然而,基于B/S的三維地圖在發(fā)布效率、數(shù)據(jù)處理、網(wǎng)絡(luò)傳輸?shù)确矫婢哂休^大的技術(shù)難度,且成本較高。因此,以“E都市”、“都市圈”為代表的2.5維地圖網(wǎng)站脫穎而出,既解決了網(wǎng)絡(luò)發(fā)布的技術(shù)難題,也滿足了三維仿真的高真實感。在制作2.5維地圖的過程中,實現(xiàn)二維地圖到2.5維地圖的坐標轉(zhuǎn)換是關(guān)鍵環(huán)節(jié),本文將論述采用坐標旋轉(zhuǎn)的方法實現(xiàn)二維地圖到2.5維地圖的坐標匹配,并通過編程實現(xiàn)批量數(shù)據(jù)的多視覺角度投影變換。
2.5維地圖是將三維模型按照一定投影規(guī)則映射到平面上,以展示三維模型效果的二維地圖,它的制作過程是在3ds Max中構(gòu)建三維模型,然后按某一用戶視圖視角渲染出圖,并進行后期拼接。
3ds Max渲染包括兩種投影:平行投影(正交投影)和透視投影。在真三維地圖中,一般采用透視投影,其視覺效果較為真實,但在2.5維地圖渲染時,采用透視投影將會造成變形,離相機中心越遠的地方變形越大,因此不宜采用這種投影方式。在平行投影中,圖形沿平行線變換到投影面上,保持各點的變化一致,因此,選擇平行投影。
在3ds Max中,根據(jù)渲染相機的位置,主要有兩種投影:正視投影和軸測投影。正視投影指的是投影面與某一坐標軸垂直,包括了正南、正東、正西和正北;軸測投影指的是投影面不與任何坐標軸垂直,包括了東南軸測、東北軸測、西北軸測和西南軸測。當投影方向與某一坐標軸的夾角為0°時即為正視投影,而當投影方向與任一坐標軸的夾角都不為0°時即為軸測投影。
用戶視圖的高度角指的是渲染相機的投影方向與投影面的夾角,其取值范圍在0°到正負90°之間。
用戶視圖角度決定了相機的投影方向,包括三個角度,為了保證出圖效果是正平行投影而不是斜平行投影,我們在制作2.5維地圖時只旋轉(zhuǎn)兩個方向的角度,一個是高度角,一個是水平角,而相機本身不旋轉(zhuǎn)。
根據(jù)以上2.5維地圖投影的定義,改變渲染三維模型的用戶視圖視角,也就是改變投影面的位置。反過來,如果我們假設(shè)投影面固定,對三維模型在不同用戶視圖視角的投影,其實就是對模型在不同方向旋轉(zhuǎn)某一角度后,投影在固定投影面上的圖形。因此,要實現(xiàn)二維數(shù)據(jù)到2.5維地圖的坐標轉(zhuǎn)換,就是要推導(dǎo)出不同方向時的物體坐標旋轉(zhuǎn)公式。
以東南等軸測45°高度角的投影方向為例。在空間直角坐標系中,假設(shè)以oxy平面為投影面,東南等軸測45°高度角的投影方向即是物體平行于oxy平面(繞z軸)旋轉(zhuǎn)45°,再平行于 ozy平面(繞 x軸)旋轉(zhuǎn)45°后,在oxy平面上的投影值。
由于在oxy面上的投影值即是物體的x和y值,因此不要考慮z值。
根據(jù)二維平面的坐標旋轉(zhuǎn)公式:
(x,y):旋轉(zhuǎn)前的坐標;(x',y'):旋轉(zhuǎn)后的坐標;θ:旋轉(zhuǎn)的角度。
得,旋轉(zhuǎn)兩個方向后在oxy平面上的投影值:
(x,y):旋轉(zhuǎn)前的坐標;(x',y'):旋轉(zhuǎn)后的坐標;θz:繞z軸旋轉(zhuǎn)的角度;θx:繞x軸旋轉(zhuǎn)的角度。
公式中的旋轉(zhuǎn)角度以逆時針為正,順時針為負。
以制作南寧市140 km22.5維地圖為例,在實際制作過程中,由于范圍較大,采用分幅制作后期合成的方法。南寧市二維地圖采用的是1954年北京坐標系,140 km2范圍共分為60幅圖。首先要對分幅圖進行坐標轉(zhuǎn)換,由于南寧市采用的1954年北京坐標系中X、Y值較大,不方便在3ds Max和Photoshop軟件中進行操作,因此需要對坐標變換后的分幅圖進行歸零,即平移坐標,把分幅圖中心置于坐標原點(0,0)處,在完成渲染出圖和拼接后,再根據(jù)平移關(guān)系將分幅圖轉(zhuǎn)換到1954年北京坐標系上。具體制作過程如下:
(1)選定分幅圖中心點坐標;
(2)平移坐標系,將分幅圖中心點置于坐標系原點;
(3)確定2.5維地圖的用戶視圖視角,即兩個方向的角度,水平角和高度角;
(4)運用坐標旋轉(zhuǎn)公式,根據(jù)確定的水平角和高度角,將分幅圖各點坐標換算到最終2.5維地圖的投影上;
(5)根據(jù)分幅圖進行2.5維地圖拼接;
(6)平移坐標系,將分幅圖中心換算到原始的1954年北京坐標系上;
(7)將2.5維地圖平移到1954年北京坐標系下。
以上步驟完成了二維分幅圖在1954年北京坐標系下到2.5維地圖的投影變換??梢詫⒃摬襟E和公式用C#語言實現(xiàn)其他二維數(shù)據(jù)在1954年北京坐標系下到2.5維地圖的多視覺角度的投影變換。程序代碼如下:
x1,y1:為轉(zhuǎn)換點X值和Y值;dx,dy:為坐標系原點平移X值和Y值;azD為繞Z軸旋轉(zhuǎn)角度,單位為度;axD為繞X軸旋轉(zhuǎn)角度,單位為度;x2,y2:為目標點X值和Y值。
根據(jù)以上程序,可以實現(xiàn)二維數(shù)據(jù)到2.5維地圖多視覺角度的投影變換,圖1~圖6展示了各種方向和角度的投影變化效果。
圖1 原始坐標分幅圖
圖2 正南俯視45°投影后的分幅圖
圖3 東南俯視60°投影后的分幅圖
圖4 東南俯視45°投影后的分幅圖
圖5 正南俯視45°投影后的2.5維地圖
圖6 東南俯視45°投影后的2.5維地圖
2.5 維地圖作為從二維地圖到三維地圖的一種過渡產(chǎn)品,具有數(shù)據(jù)結(jié)構(gòu)簡單、真實感強等特點,既可以在網(wǎng)絡(luò)環(huán)境下作為電子地圖發(fā)布,又可以制作成地圖打印,是現(xiàn)階段較好的一種地理信息產(chǎn)品,具有廣泛的使用前景。2.5維地圖的生產(chǎn)和使用,離不開各種二維的專題數(shù)據(jù)的疊加,而本文就提供了一種在生產(chǎn)2.5維地圖過程中所要面臨的坐標轉(zhuǎn)換的關(guān)鍵技術(shù)的實現(xiàn)方法,運用該方法可通過編程、實現(xiàn)任意方向和角度的投影變換,為制作地圖和開發(fā)基于B/S的三維仿真地理信息系統(tǒng)提供了數(shù)學(xué)和坐標基礎(chǔ)。
[1]付蔚霞,梁寒冬.淺談寧波三維仿真地圖的建設(shè)[J].城市勘測,2011(2)
[2]宋珉,劉鵬超,趙維等.2.5維地圖制作算法研究與實現(xiàn)[J].城市勘測,2010(5)
[3]Donald Hearn.計算機圖形學(xué)[M].北京:電子工業(yè)出版社,2005
[4]龔健雅,杜道生,李清泉等.當代地理信息技術(shù)[M].北京:科學(xué)出版社,2004
[5]劉新,李成名,劉文寶.3DGIS中方向關(guān)系定性推理規(guī)律研究[J].測繪科學(xué),2009,34(2)
[6]張競,王結(jié)臣.一種便捷的城市三維景觀可視化方法[J].測繪科學(xué),2009,34(4)
[7]譚仁春.三維城市建模的研究現(xiàn)狀綜述[J].城市勘測,2007(3):42~46