摘要:該文以Asp.net 2.0為基礎(chǔ),利用Web技術(shù)和GoogleEarth平臺(tái)及其擴(kuò)展接口(Google地球插件及其API和COM API)開發(fā)設(shè)計(jì)一個(gè)虛擬校園管理系統(tǒng),并以web的形式分別實(shí)現(xiàn)了校園地物的基礎(chǔ)信息查詢與顯示以及校園地物的三維展示與分析功能。
關(guān)鍵詞:Asp.net;GoogleEarth;擴(kuò)展接口;虛擬校園
中圖分類號:TP311 文獻(xiàn)標(biāo)識(shí)碼:A文章編號:1009-3044(2009)36-10272-04
Research of Virtual Campus Based on GoogleEarth Technology
JIANG Xin1, QIN Fen2
(1.College of Environment and Planning, Henan University, Kaifeng 475004, China; 2.College of Environment and Planning, Henan University, Kaifeng 475004, China)
Abstract: In this paper, Based on asp.net2.0, this paper and using Web technology and GoogleEarth platform and expand interface (Google earth plug-ins and API and COM API), a virtual campus management system was developed and designed, which realize the Web forms of campus features respectively based information query and display and campus features 3d analysis and display function.
Key words: Asp.net; GoogleEarth; expand interface; virtual campus
目前,基于數(shù)字地球平臺(tái)的三維研究,引起了眾多行業(yè)研究人員[1-11]的興趣,我國已有多所高校著手建立和研究虛擬校園系統(tǒng),虛擬數(shù)字校園使用了豐富的表現(xiàn)手法,提高了人們了解校園概況的效率,提供給人們一種全新的校園規(guī)劃、建設(shè)和管理理念。數(shù)字校園可以看作是數(shù)字化的、虛擬的校園,是數(shù)字地球的微觀表現(xiàn)形式在校園區(qū)域的具體體現(xiàn),它將成為校園新的信息源,任何與校園有關(guān)的信息都將給于定位,并與空間數(shù)據(jù)聯(lián)系起來,在網(wǎng)絡(luò)系統(tǒng)中重現(xiàn)校園,數(shù)字校園已成為知識(shí)經(jīng)濟(jì)時(shí)代,校園走向現(xiàn)代化的必經(jīng)之路[12]。
1 系統(tǒng)設(shè)計(jì)目標(biāo)、技術(shù)路線和組織結(jié)構(gòu)
1.1 系統(tǒng)設(shè)計(jì)目標(biāo)
本文以Asp.net 2.0為基礎(chǔ),利用Web技術(shù)和GoogleEarth平臺(tái)及其擴(kuò)展接口(Google地球插件及其API和COM API)開發(fā)設(shè)計(jì)一個(gè)虛擬校園管理系統(tǒng),并以web的形式分別實(shí)現(xiàn)了校園地物的基礎(chǔ)信息查詢與顯示以及校園地物的三維展示與分析功能(如圖1)。
1.2 技術(shù)路線
圖2為技術(shù)路線。
1.3 系統(tǒng)具體的實(shí)施步驟
1) 通過GoogleEarth提供的衛(wèi)星影像,結(jié)合現(xiàn)場采集到的校園地物高程及紋理信息,再利用SketchUp建模軟件建立校園地物的三維模型。
2) 收集、處理校園數(shù)據(jù)建立數(shù)據(jù)庫。包括整理存儲(chǔ)于Web應(yīng)用系統(tǒng)目錄下的文件以及存儲(chǔ)于SQL SEVER中的校園地物屬性信息。
3) 基于ASP.NET平臺(tái)開發(fā)三維數(shù)字校園網(wǎng)站。
4) 調(diào)用GoogleEarth提供的可擴(kuò)展接口,實(shí)現(xiàn)GoogleEarth與數(shù)字校園網(wǎng)站的鏈接,再加載進(jìn)校園地物三維模型,實(shí)現(xiàn)校園地物的三維展示、漫游與分析功能。網(wǎng)站中采用插件及其API以及COM API兩種方式實(shí)現(xiàn)網(wǎng)頁對GoogleEarth的調(diào)用。
1.4 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
本系統(tǒng)采用B/S的三層結(jié)構(gòu)來實(shí)現(xiàn),分別為表示層、應(yīng)用層、數(shù)據(jù)層。系統(tǒng)具體結(jié)構(gòu)如圖3。
1.5 開發(fā)平臺(tái)的選擇及其配置
本系統(tǒng)以ASP.net為開發(fā)平臺(tái),通過IIS(Internet Information Server)來管理及維護(hù)WEB、FTP站點(diǎn)、SMTP虛擬服務(wù)器,具體配置步驟如下:
1) 在控制面板中的添加/刪除Windows組件中安裝Internet信息服務(wù)(IIS)。
2) 在控制面板中的管理工具->服務(wù)中開啟“IIS Adimin Service”服務(wù)。
3) 啟動(dòng)“Internet服務(wù)管理器”窗口,打開“默認(rèn)Web站點(diǎn)”屬性選項(xiàng)卡。在“Web站點(diǎn)屬性”選項(xiàng)卡中,設(shè)置Web站點(diǎn)標(biāo)識(shí)、連接。在“主目錄”選項(xiàng)卡設(shè)置Web站點(diǎn)存放文件路徑。
2 GoogleEarth 數(shù)據(jù)源
GoogleEarth的影像數(shù)據(jù)是衛(wèi)星影像與航拍的數(shù)據(jù)整合。其衛(wèi)星影像部分來自于Digital Globe公司(美國公司,影像主要來源于Quick Bird商業(yè)衛(wèi)星)與Earth Sat公司(美國公司,影像主要來源于LANDSAT-7陸地衛(wèi)星),航拍部分的來源有Blue Sky公司、Sanborn公司等。
GoogleEarth上的全球地貌影像有效分辨率不超過100米,通常為30米左右,視角海拔高度約為15公里,針對大城市、著名風(fēng)景區(qū)、建筑物區(qū)域則會(huì)提供分辨率約1m、視角高約為500米和分辨率約0.6m、視角高度約為350米的高精度影像。目前主要在北美和歐洲的城市以及其他地區(qū)的首都或極重要城市提供高精度影像。中國大陸有高精度影像的地區(qū)有:北京、上海、香港、澳門、四川的潼川、黑龍江的大慶與宮棚子、新疆的庫爾勒[1],臺(tái)灣省已有10個(gè)地區(qū)提供了高精度影像。
GoogleEarth的窗口界面包括菜單欄、工具欄、視圖區(qū)域和在視圖區(qū)域左邊的Search、Places和Layers三個(gè)用戶面板。GoogleEarth采用了眾多先進(jìn)和主流的技術(shù),提供免費(fèi)的高分辨率遙感圖像,而且功能強(qiáng)大、操作簡單。GoogleEarth提供了3種擴(kuò)展接口,分別是插件及其API形式、組件(COM)API形式和KML文件形式來滿足復(fù)雜應(yīng)用的需要。
2.1 GoogleEarth COM API
Google公司免費(fèi)開放了GoogleEarth COM API函數(shù)作為公共接口[3],它是基于組件技術(shù)的應(yīng)用程序開發(fā)接口,用戶可以基于不同平臺(tái)調(diào)用它來完成特定任務(wù)。COM API是一個(gè)包括11個(gè)類的類庫,這11個(gè)類如表1所列。
2.2 插件及其API
2008年5月28日,Google公司發(fā)布了一個(gè)新的瀏覽器的插件程序(Plug-in)和應(yīng)用程序接口(API)來支持GoogleEarth衛(wèi)星影像在Web上的展示[6]。開發(fā)人員可以利用該插件及其API把3D模型加入到Web應(yīng)用程序中,GoogleEarth的三維功能得到增強(qiáng),其應(yīng)用范圍也得到了擴(kuò)展。插件(Plug-in)及其API的發(fā)布使用戶可以輕松地將GoogleEarth視圖嵌入到網(wǎng)頁之中,以下的JavaScript 代碼便創(chuàng)建了一個(gè)包含GoogleEarth 視圖的網(wǎng)頁,核心代碼如下:
google.load(\"earth\", \"1\");
var ge = 1;
function init() {
google.earth.createInstance(\"map3d\", initCallback, failureCallback);
}
function initCallback(object) {
ge = object;
ge.getWindow().setVisibility(true);
}
function failureCallback(object) {
}
style='border: 1px solid silver; height: 400px; width: 600px;'>
運(yùn)行后的界面顯示如圖4。
2.3 KML文件
KML[13-16]即Keyhole Markup Language,它是一種基于XML語法和格式的文件,其明顯的標(biāo)志是以
用戶可以用文本編輯器創(chuàng)建KML或者KMZ地標(biāo)文件,然后可以在GoogleEarth客戶端打開該文件看到其顯示結(jié)果,如圖5。
KMZ是KML的壓縮形式,GoogleEarth提供KMZ文件用于網(wǎng)絡(luò)傳輸,用來減輕KML文件頻繁的網(wǎng)絡(luò)傳輸給網(wǎng)絡(luò)帶來的壓力。用GoogleEarth客戶端打開KMZ文件時(shí),GoogleEarth會(huì)自動(dòng)對其進(jìn)行解壓縮獲取KML文件。
3 數(shù)據(jù)組織
本文建設(shè)的虛擬三維數(shù)字校園所需要數(shù)據(jù)分為兩類。第一類為校園基礎(chǔ)信息數(shù)據(jù),該類數(shù)據(jù)經(jīng)采集、處理、歸類后,存儲(chǔ)于SQL SEVER數(shù)據(jù)庫中。第二類為用于建立校園地物三維模型的數(shù)據(jù)。
3.1 校園基礎(chǔ)信息數(shù)據(jù)的收集、處理
該類數(shù)據(jù)包括學(xué)校各建筑物名稱、用途、所在地點(diǎn)、經(jīng)緯度信息等,這些數(shù)據(jù)經(jīng)過采集、處理后,分別根據(jù)用途和所在校區(qū)分類建立數(shù)據(jù)表并存儲(chǔ)在數(shù)據(jù)庫中,方便系統(tǒng)的查詢使用。其數(shù)據(jù)如表2所示。
其中字段名存儲(chǔ)為“name”、“purpose”、“time”、“introduction” 的數(shù)據(jù)用于在數(shù)字校園用戶搜索時(shí)進(jìn)行信息回饋,其他字段名的數(shù)據(jù)信息用于數(shù)字校園用戶在進(jìn)行相關(guān)操作時(shí)服務(wù)器調(diào)用。
3.2 校園三維模型數(shù)據(jù)收集與處理
利用GoogleEarth提供的遙感影像圖片進(jìn)行矢量化獲得地物的長、寬信息,結(jié)合現(xiàn)場建筑物高程與紋理信息,利用專業(yè)軟件完成地物的三維模型構(gòu)建。最后導(dǎo)出為KML或KMZ格式文件,存儲(chǔ)于三維數(shù)字校園Web目錄下,供以后服務(wù)器調(diào)用。
3.3 輔助功能的數(shù)據(jù)文件處理
應(yīng)用VC++開發(fā)出桌面應(yīng)用程序,生成.exe文件,存儲(chǔ)于三維數(shù)字校園Web目錄下,供以后服務(wù)器調(diào)用。
4 校園三維模型的建立
4.1 源數(shù)據(jù)獲取
本論文中建立三維模型的數(shù)據(jù)來源于以下幾個(gè)方面。
1) 將GoogleEarth提供的遙感影像矢量化得到的建筑物平面信息數(shù)據(jù),主要用于建筑物底圖的模型構(gòu)建。
2) 現(xiàn)場根據(jù)建筑物層數(shù)估算其高程信息,主要用于建筑物立體模型的構(gòu)建。
3) 由作者實(shí)地現(xiàn)場用數(shù)碼相機(jī)拍攝建筑物側(cè)面的紋理圖片,主要用于制作紋理,供建筑物貼圖使用,可提高建筑物三維模型的逼真性。
4) 從3DWarehouse網(wǎng)站下載三維模型,主要用于虛擬場景中無規(guī)則幾何形狀的地物建模。
4.2 三維模型建立具體步驟
本文基于GoogleEarth平臺(tái),利用SketchUp軟件進(jìn)行三維建模。
4.2.1 獲得GoogleEarth影像數(shù)據(jù)
具體步驟為:先打開GoogleEarth客戶端定位并顯示待建模區(qū)域的影像;接著在SketchUp軟件中選擇Tools->GoogleEarth-> Get Current View工具,將GoogleEarth視圖區(qū)域的影像圖導(dǎo)入SketchUp軟件中。此時(shí)該影像數(shù)據(jù)自動(dòng)獲得經(jīng)緯度信息,在建模完成后可以完全匹配至GoogleEarth中,如圖6。
4.2.2 在SketchUp中制作相應(yīng)區(qū)域的模型
用戶可以方便將SketchUp[17-18]建造的3D模型導(dǎo)進(jìn)GoogleEarth之中,并且用戶還可以通過Google3D Warehouse網(wǎng)站在線查找與分享各種利用SketchUp軟件創(chuàng)建的三維模型。模型建好以后導(dǎo)出為KMZ格式的三維模型文件,模型自動(dòng)加載至GoogleEarth中。
除此方法以外,我們也可以采用其他專業(yè)軟件制作三維模型,然后再轉(zhuǎn)換為GoogleEarth中能打開的文件格式。
5 功能實(shí)現(xiàn)
5.1 基于COM API技術(shù)的三維數(shù)字校園系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)
GoogleEarth COM API主要用于在VC++開發(fā)的獨(dú)立桌面應(yīng)用程序中調(diào)用GoogleEarth,實(shí)現(xiàn)三維展示分析功能。
5.1.1 VC++開發(fā)的桌面應(yīng)用程序與GoogleEarth鏈接
具體步驟如下:1) 用VC++建立一個(gè)基于單文檔的工程,生成應(yīng)用框架程序。2) 添加GoogleEarth類庫,打開類向?qū)ы撁?,然后在GoogleEarth的安裝目錄下增加類文件,選中GoogleEarth.exe文件,確認(rèn)后會(huì)彈出一個(gè)對話框來確認(rèn)選擇所需要添加的GoogleEarth的類,選擇所需用到的類加載即可;3) 利用COM API提供的相關(guān)接口進(jìn)行編程,便可實(shí)現(xiàn)在VC++開發(fā)的應(yīng)用程序中調(diào)用GoogleEarth。
5.1.2 GoogleEarth嵌入VC++開發(fā)的桌面應(yīng)用程序
用VC++獲取GoogleEarth視圖區(qū)域,實(shí)現(xiàn)控制GoogleEarth的功能,關(guān)鍵代碼如下:
HWND hWnd=::FindWindow(NULL,\"GoogleEarth\");
if(hWnd==NULL) hWnd=::FindWindow(NULL,\"GoogleEarth Plus\");if(hWnd==NULL) hWnd=::FindWindow(NULL,\"GoogleEarth Pro\");
if(hWnd==NULL) return TRUE;
HWND1=::FindWindowEx(hWnd,NULL,NULL,\"qt_central_widget\");
HWND h2=::FindWindowEx(h1,NULL,NULL,\"MainWindowHSplitter\");
HWND h3=::FindWindowEx(h2,NULL,NULL,\"CenterPanelVSplitter\");
HWND h4=::FindWindowEx(h3,NULL,NULL,\"CenterPanelFrame\");
HWND h5=::FindWindowEx(h4,NULL,NULL,\"Render Window\");
HWND h6=::FindWindowEx(h5,NULL,NULL,\"Render Window\");
HWND h7=::FindWindowEx(h6,NULL,NULL,\"unnamed\");
HWND m_hGoogleEarthView=::FindWindowEx(h7,NULL,NULL,\"Render\");
if(m_hGoogleEarthView==NULL) return TRUE;
::SetParent(m_hGoogleEarthView,this->GetSafeHwnd());
5.1.3 將該桌面應(yīng)用程序與網(wǎng)站連接
將獲取了GoogleEarth視圖區(qū)域的程序生成為.exe文件以后,以文件的方式存儲(chǔ)于三維數(shù)字校園系統(tǒng)的Web目錄下,在用戶登陸校園網(wǎng)站時(shí),該.exe文件便以Active控件的形式下載到客戶端。當(dāng)用戶在瀏覽校園網(wǎng)站時(shí)如需要對所查詢地物進(jìn)行三維顯示與分析時(shí),可通過三維顯示按健將其啟動(dòng),并同時(shí)通過數(shù)據(jù)庫中的經(jīng)緯度坐標(biāo)將其定位。
5.2 基于Plug-in及其API的三維數(shù)字校園系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)
首先將GoogleEarth嵌入網(wǎng)站須先下載并安裝GoogleEarth Plug-in插件和申請一個(gè)允許將GoogleEarth嵌入到網(wǎng)頁的key。
5.3 精確定位
當(dāng)用戶在基礎(chǔ)信息顯示欄中選中所查詢的地物時(shí),在GoogleEarth視圖區(qū)域中便自動(dòng)定位到該地物,這只需要在選中地物時(shí)將數(shù)據(jù)庫中的經(jīng)緯度信息傳送給API接口便可。
6 結(jié)論
基于GoogleEarth的三維化研究是一個(gè)新興且發(fā)展迅速的領(lǐng)域[9],本文將GoogleEarth平臺(tái)的虛擬現(xiàn)實(shí)場景和數(shù)字校園結(jié)合,為三維數(shù)字校園的建設(shè)提供了一個(gè)良好的解決方案。通過COM API技術(shù)將GoogleEarth平臺(tái)與三維數(shù)字校園系統(tǒng)建設(shè)相結(jié)合,可以使數(shù)字校園系統(tǒng)實(shí)現(xiàn)強(qiáng)大的三維展示與分析功能。
參考文獻(xiàn):
[1] 唐東躍,熊助國,王金麗.Google Earth及其應(yīng)用展望[J].地理空間信息,2008,6(4):110-113.
[2] 李黎.Google Earth面面觀[J].中國測繪,2006(1):64-67.
[3] 陳強(qiáng),姜立新,帥向華.Google Earth在地震應(yīng)急中的應(yīng)用[J].地震,2008,28(1):121-128.
[4] 銀正彤,鄭文鋒,楊朝暉,等.Google Earth在防震減災(zāi)決策中的應(yīng)用[J].地震研究,2009,32(1):99-103.
[5] 何君毅.Google-Earth在油田邊探井管理中的應(yīng)用[J].油氣田地面工程,2009,28(4):63-64.
[6] 劉紅彥.基于Google Earth Plug-in的實(shí)時(shí)信息發(fā)布技術(shù)[J].時(shí)代教育:教育教學(xué)版,2008(8):111-112.
[7] 韋秋蓓.基于Google Earth的建筑物震害預(yù)測[D].上海:同濟(jì)大學(xué),2008.
[8] 劉祥磊.基于Google Earth管線巡檢系統(tǒng)地圖數(shù)據(jù)的制作方法研究[J].測繪科學(xué),2008,33(2):141-142.
[9] 薛亞婷.基于Google Earth及KML的數(shù)字校園設(shè)計(jì)與實(shí)現(xiàn)方法研究[D].蘭州:蘭州大學(xué),2007.
[10] 劉暢.基于無線傳感器網(wǎng)絡(luò)和Google Earth的數(shù)字校園管理平臺(tái)的設(shè)計(jì)[D].2008.
[11] 朱超平.如何利用Google Earth繪制校園平面圖――以湖北大學(xué)為例[J].湖北大學(xué)學(xué)報(bào):自然科學(xué)版,2008,30(1):93-96.
[12] 林卉,趙長勝,孫建文.數(shù)字校園3維建模與仿真的實(shí)現(xiàn)與設(shè)計(jì)[J].測繪通報(bào),2004(9):43-46.
[13] 曾建剛,苗放,葉成名.基于GML/KML的空間數(shù)據(jù)庫研究[J].計(jì)算機(jī)與數(shù)字工程,2009,37(2):51-54,120.
[14] 楊湘燕,董槐林,吳清鋒.基于KML的GIS數(shù)據(jù)復(fù)用技術(shù)研究[J].廈門大學(xué)學(xué)報(bào):自然科學(xué)版,2009,48(3):334-337.
[15] 漆明生,徐家清.基于KML的地理數(shù)據(jù)表示[J].四川林勘設(shè)計(jì),2008(1):77-80.
[16] 王艷,何憑宗.基于VC++的Google Earth KML地標(biāo)文件的自動(dòng)生成及應(yīng)用[J].北京測繪,2009(2):32-34.
[17] 王修貴.SketchUp在建筑設(shè)計(jì)中的應(yīng)用[J].山西建筑,2008,34(6).
[18] 洪德法.基于ArcScene和SketchUp的虛擬校園的建立[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(12).