陳春瑩,鄒進(jìn)貴
(武漢大學(xué)測繪學(xué)院,湖北 武漢430079)
目前我們正步入信息化的時(shí)代,信息的獲得和提取是作出科學(xué)決策的關(guān)鍵[1]。在信息獲得和提取過程中,獲取信息的速度取決于信息的綜合管理和信息的形象直觀的表達(dá)[2]。隨著測量方法和測量精度的提高,數(shù)據(jù)的獲取變得更加簡單,但是大量的數(shù)據(jù)造成了數(shù)據(jù)處理過程中的麻煩,而數(shù)據(jù)可視化可以將簡單的數(shù)字變成可以直觀分析的圖、表等,更有利于信息的存儲和管理。
在互聯(lián)網(wǎng)高速發(fā)展的時(shí)代,一個(gè)網(wǎng)頁可以做很多事情,使得信息共享和分析更加便捷。B/S的結(jié)構(gòu)使得信息交互更加便捷,克服了軟件平臺的限制。研究高效、方便、實(shí)用的測量數(shù)據(jù)網(wǎng)絡(luò)處理系統(tǒng)成為一大熱點(diǎn)[3]。
本文主要是結(jié)合Google Map API和B/S的結(jié)構(gòu)框架[4],研究基于Google Map的測量數(shù)據(jù)可視化,使得測量數(shù)據(jù)可以直觀地顯示在谷歌地圖上,方便后期數(shù)據(jù)處理;同時(shí),可以隨時(shí)將控制點(diǎn)數(shù)據(jù)可視化表達(dá),便于野外測量等。
Google Map API是利用JavaScript語言,使得用戶在網(wǎng)頁中嵌入Google地圖。它的具體功能是通過API提供的各種接口類實(shí)現(xiàn)的,主要包括Map類、LatLng類、Polygon類,以及各種事件響應(yīng)函數(shù)。
(1)Map類
Map類是Google Maps API的核心內(nèi)容,Map實(shí)例是所有Google Maps應(yīng)用的重點(diǎn)對象,會貫穿整個(gè)應(yīng)用項(xiàng)目的全部。此類的對象可以在頁面上定義一個(gè)單個(gè)的地圖。Map類的構(gòu)造函數(shù)為:
Map(mapDiv:Node,opts?:mapOptions),用戶可以使用傳遞的任何(可選)參數(shù),在指定的HTML容器(通常為DIV元素)中創(chuàng)建新的地圖。地圖的大小、類型、背景色、拖放的光標(biāo)類型等基本信息均可以通過構(gòu)造函數(shù)指定。Map類常用的方法有:set-Center、getCenter()、getZoom()、addControl、setMap等。
(2)LatLng類
構(gòu)造函數(shù)為LatLng(lat:float,lng:float),是以緯度和經(jīng)度表示的地理坐標(biāo)點(diǎn)。LatLng的坐標(biāo)不能修改。如果想要計(jì)算其他點(diǎn)的坐標(biāo),必須新建一個(gè)LatLng對象。主要方法有:lat()返回點(diǎn)的緯度值、lng()返回點(diǎn)的經(jīng)度值。
(3)Polygon類
一系列有序坐標(biāo)組成了Polygon對象。多邊形定義閉合區(qū)域。多邊形選項(xiàng)包括:多邊形邊緣“筆觸”的粗細(xì)程度、自定義的顏色和不透明程度,以及封閉區(qū)域“填充”的不透明程度和自定義的顏色,用十六進(jìn)制數(shù)字HTML樣式表示自定義的顏色。
目前傳統(tǒng)的三維可視化建模方法有:基于攝影測量獲得遙感影像的三維建模方法[5]、基于激光雷達(dá)的三維建模方法、基于二維GIS的三維建模方法[6]、基于CAD的三維建模方法[7]等。本文采用一種新的可視化方法,可以隨時(shí)在瀏覽器上獲取數(shù)據(jù)的簡單的三維可視化模型。
(1)坐標(biāo)轉(zhuǎn)換
用戶在谷歌地圖上得到的坐標(biāo)是以經(jīng)緯度表示的世界坐標(biāo)。試驗(yàn)發(fā)現(xiàn),在較小范圍內(nèi),可以將其坐標(biāo)系看成是平面直角坐標(biāo)系。因此,可以利用坐標(biāo)轉(zhuǎn)換的“四參數(shù)”轉(zhuǎn)換原理,將世界坐標(biāo)系和測量坐標(biāo)系進(jìn)行轉(zhuǎn)換,坐標(biāo)關(guān)系如圖1所示。坐標(biāo)轉(zhuǎn)換公式為
圖1 坐標(biāo)關(guān)系
(2)測量數(shù)據(jù)可視化
為了在平面的地圖上看出建筑物的簡單輪廓,本文建立了如圖2所示的點(diǎn)位坐標(biāo)關(guān)系圖,各點(diǎn)之間坐標(biāo)關(guān)系為
圖2 點(diǎn)位變換原理
求得P1~P4的坐標(biāo)之后,根據(jù)用戶輸入的建筑物的層數(shù)信息,將4個(gè)點(diǎn)的緯度值同時(shí)增加,從而求得建筑物頂端四邊形的坐標(biāo),并建立相應(yīng)的四邊形,得到建筑物的簡單三維模型。
在以上研究基礎(chǔ)上,在ASP.NET下新建網(wǎng)站[8],以c#和javascript作為開發(fā)語言、SQL Server作為數(shù)據(jù)庫平臺,生成網(wǎng)頁。在.a(chǎn)spx文件下編寫谷歌數(shù)據(jù)接口程序,對谷歌地圖進(jìn)行二次開發(fā);在.a(chǎn)spx.cs文件里編寫對數(shù)據(jù)的處理程序。
用戶登錄后,可以通過文件上傳,將需要的信息文件上傳到服務(wù)器上面,并對上傳的文件添加備注等信息。上傳后的文件可以查看系統(tǒng)為其重新編號的新文件名,后續(xù)使用的文件將用其新文件名。
文件重命名的主要代碼是:
DataView results=(DataView)MaxFileID.Select(DataSourceSelectArguments.Empty);
int FileAddID=Convert.ToInt16(results[0][0]);∥獲取數(shù)據(jù)庫中最大文件ID fileupload.SaveAs(path+FileAddID+newext);
控制點(diǎn)可視化管理系統(tǒng)主要是將已有的控制點(diǎn)信息通過.xls文件導(dǎo)入并標(biāo)記在谷歌地圖上。當(dāng)把鼠標(biāo)放置在標(biāo)記點(diǎn)上時(shí)會顯示標(biāo)記點(diǎn)的點(diǎn)號,當(dāng)點(diǎn)擊標(biāo)記點(diǎn)時(shí),會顯示標(biāo)記點(diǎn)的點(diǎn)名,并且在右側(cè)空白區(qū)域顯示標(biāo)記點(diǎn)的經(jīng)緯度坐標(biāo)等詳細(xì)信息。結(jié)果如圖3所示。獲取標(biāo)記點(diǎn)信息的主要代碼是:
var
nodes=xmldoc.getElementsByTagName("marker");
var msg_lat=nodes[i].getAttribute("緯度");
var DMsg="點(diǎn)名:"+msg_name+' '+"緯度:"+msg_lat+' '+"經(jīng)度:"+msg_lng+' '+"高程:"+msg_h+' '+"詳細(xì)信息:"+msg_msg;
createMarker(point,DMsg,"#"+msg_num);
圖3 控制點(diǎn)信息可視化
建筑物的三維可視化系統(tǒng)主要是利用在谷歌地圖上刺取同名點(diǎn),求得谷歌地圖經(jīng)緯度坐標(biāo)和測量坐標(biāo)之間的轉(zhuǎn)換參數(shù);也可以在參數(shù)文件框內(nèi)輸入轉(zhuǎn)換參數(shù)文件,將待轉(zhuǎn)換的測量點(diǎn)標(biāo)記在谷歌地圖上。
在地圖上用鼠標(biāo)拖動框取標(biāo)記點(diǎn),并輸入層數(shù)信息,就可以對建筑物進(jìn)行簡單三維建模,結(jié)果如圖4所示。用戶操作界面如圖5所示。轉(zhuǎn)換后的測量點(diǎn)坐標(biāo)通過xml文件傳遞到前臺.a(chǎn)spx獲取,主要代碼是:
double y2=(1+m)*(sa*x1-ca*y1)+dx;
double x2=(1+m)*(ca*x1+sa*y1)+dy;
XmlElement xe1=xd.CreateElement("coordinate");
xe1.SetAttribute("lat",x2.ToString());
xe1.SetAttribute("lng",y2.ToString());
圖4 武漢大學(xué)建筑物的可視化模型
圖5 測量數(shù)據(jù)可視化操作界面
本文主要是研究如何將已有的測量數(shù)據(jù)在谷歌地圖上可視化,充分應(yīng)用在測量前期路線規(guī)劃和后期測量成果展示中。本文主要工作是結(jié)合B/S模式,將谷歌地圖作為可視化表達(dá)的工具,根據(jù)谷歌地圖數(shù)據(jù)存儲形式,研究現(xiàn)有測量數(shù)據(jù)在谷歌地圖上表達(dá)的轉(zhuǎn)換模式,將建筑物在地圖上進(jìn)行三維顯示。
與其他三維建模軟件相比,該系統(tǒng)的優(yōu)勢在于建模簡單,方便,不受限于環(huán)境;網(wǎng)絡(luò)化的系統(tǒng),只需要有最簡單的瀏覽器軟件,省略了軟件安裝的各種麻煩和限制。
[1] 何全軍.三維可視化技術(shù)在地理信息系統(tǒng)中的應(yīng)用研[D].吉林:吉林大學(xué)地球探測與信息技術(shù)學(xué)院,2004.
[2] 馬麗麗.探測GIS中三維可視化的研究與設(shè)計(jì)[D].成都:成都理工大學(xué),2007.
[3] 胡榮明,楊成斌,陳曉娣.測量數(shù)據(jù)處理的網(wǎng)絡(luò)化模式[J].測繪通報(bào),2014(6):71-74.
[4] AKANBI A K.Integration of a City GIS Data with Google Map API and Google Earth API for a Web Based 3D[J].International Journal of Science and Research,2013,2(11):200-203.
[5] 賴玲莉,許妙忠,李明.基于攝影測量的高精度三維城市建筑物建模技術(shù)[J].測繪信息與工程.2007,32(5):24-27.
[6] RANZIGNER M,GLEIXNER G.GIS Database for 3D Urban Planning[J].Compute.,Environ.a(chǎn)nd Urban Systems,1997,21(2):159-173.
[7] 陳誼,孫悅紅,牛兵.基于CAD數(shù)據(jù)的3D場景建模及演示技術(shù)研究[J].系統(tǒng)仿真學(xué)報(bào),2007,19(7):1504-1506.
[8] 李千目.ASP.NET程序設(shè)計(jì)與應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,2009:3-4.