曹文德,董東林,原菲菲,茹偉娜,孫文潔,李 傲
(1.中國礦業(yè)大學(xué)(北京)地球科學(xué)與測繪工程學(xué)院 ,北京 100083)
地理學(xué)是一門與自然和社會密切相關(guān)的科學(xué)[1]。通過野外實(shí)習(xí),可以加深對地理學(xué)基本原理和實(shí)際問題的理解和認(rèn)識,培養(yǎng)地理學(xué)的空間觀念和綜合分析能力,掌握發(fā)現(xiàn)問題和解決問題的方法。野外地理實(shí)習(xí)涉及的內(nèi)容非常廣泛,包括地質(zhì)、地貌、水文、電子地圖、定位越野等,這也使得實(shí)習(xí)過程更加復(fù)雜[2-5]。本文利用Windows Phone智能機(jī)操作系統(tǒng),設(shè)計(jì)出野外實(shí)習(xí)系統(tǒng),使得每個(gè)實(shí)習(xí)小組可以利用系統(tǒng)中的模塊,查看實(shí)習(xí)路線和每個(gè)實(shí)習(xí)點(diǎn)的一系列相關(guān)資料以及復(fù)雜地理現(xiàn)象的演示模擬,加深對實(shí)習(xí)的理解,提升實(shí)習(xí)效果和學(xué)生的參與性,培養(yǎng)學(xué)生的創(chuàng)造性思維,豐富教學(xué)內(nèi)容,彌補(bǔ)野外學(xué)習(xí)條件不足。
Windows Phone是一個(gè)全新的平臺,為用戶帶來Metro式體驗(yàn),同時(shí)微軟把Office辦公軟件、Zune媒體播放器、Xbox游戲機(jī)、Bing搜索和地圖、Skydrive和圖片云服務(wù)全部整合到Windows Phone中,因而受到業(yè)界的廣泛關(guān)注[5]。它延續(xù)使用C#語言來開發(fā)應(yīng)用,采用Silverlight和XNA 2個(gè)開發(fā)框架。
本系統(tǒng)采用Visual Studio 2010,并安裝了Windows Phone開發(fā)的SDK,采用面向?qū)ο蟮恼Z言C#。在構(gòu)建地圖程序之前首先要做的就是獲得一個(gè)Bing Map API密鑰。在ManiPage.xmal中,使用Credentials Provider屬性:
“Silverlight for Windows Phone”是Windows Phone 7的應(yīng)用程序開發(fā)平臺。當(dāng)創(chuàng)建一個(gè)新的Windows Phone應(yīng)用程序時(shí),新解決方案包括Silverlight MainPage.xaml頁面,在設(shè)計(jì)視圖中,這個(gè)頁面顯示為Windows Phone 7用戶界面的預(yù)覽效果,可以拖放控件到設(shè)計(jì)界面,實(shí)時(shí)查看Windows Phone 7屏幕的布局預(yù)覽效果。當(dāng)在Visual Studio 2010中開發(fā)Silverlight應(yīng)用程序時(shí),如果修改了XAML代碼,修改將會反映到Windows Phone 7模擬器屏幕上。
在Windows Phone UI設(shè)計(jì)過程中,我們一方面需要考慮屏幕的分辨率,另一方面還要考慮整體界面的風(fēng)格??梢酝ㄟ^WPDT Beta,以所見即所得的方式來進(jìn)行UI的設(shè)計(jì),還可以把UI設(shè)計(jì)與數(shù)據(jù)分離。系統(tǒng)界面如圖1所示。
圖1 系統(tǒng)運(yùn)行界面
通過此系統(tǒng)的功能模塊(見圖2)可以實(shí)現(xiàn)高效自主的野外地理實(shí)習(xí):
1)實(shí)習(xí)中小組明確自己的位置,地圖下方實(shí)時(shí)顯示當(dāng)前坐標(biāo),并在地圖中以圖釘形式顯示實(shí)習(xí)點(diǎn)位置。
圖2 系統(tǒng)模塊總體設(shè)計(jì)圖
2)在實(shí)習(xí)點(diǎn)可以文本的方式記錄數(shù)據(jù),或者在繪圖板進(jìn)行地質(zhì)地貌素描(見圖3)。
3)可以查看和回顧小組實(shí)習(xí)路線,查看是否有遺漏實(shí)習(xí)點(diǎn)。
4)實(shí)習(xí)中遇到典型難懂的地理現(xiàn)象,可以查看模擬視頻或者典型圖片。
5)通過地質(zhì)地貌數(shù)據(jù)表的錄入,采用數(shù)據(jù)字典技術(shù)和Windows Phone自適應(yīng)鍵盤輸入,加快數(shù)據(jù)錄入。
6)實(shí)習(xí)中每到一個(gè)實(shí)習(xí)點(diǎn)可以查看該實(shí)習(xí)點(diǎn)標(biāo)注,在繪圖板中快速進(jìn)行地質(zhì)地貌素描,繪制簡單的示意圖,明確該實(shí)習(xí)點(diǎn)的教學(xué)內(nèi)容。
在系統(tǒng)的應(yīng)用程序欄(如圖4所示)可以實(shí)現(xiàn)以下操作:定位目前所處位置、查詢實(shí)習(xí)路線、動態(tài)添加和查看實(shí)習(xí)點(diǎn)標(biāo)注、衛(wèi)星圖和道路、地形圖切換。
圖3 繪圖板
圖4 應(yīng)用程序欄模塊
數(shù)據(jù)的獲取大部分需要在實(shí)習(xí)目的地進(jìn)行采集,從而使數(shù)據(jù)更具有現(xiàn)場性。通過文件夾的方法,把各種內(nèi)容資料分批存儲,有助于確定各種數(shù)據(jù)的完整性。整個(gè)數(shù)據(jù)內(nèi)容可以通過幾個(gè)階段來完成。第一階段是通過分析,確定數(shù)據(jù)的用途和適用范圍,以及相應(yīng)的數(shù)據(jù)獲取手段,確保數(shù)據(jù)是在能夠獲取的范圍內(nèi),從而設(shè)計(jì)出合理的總體設(shè)計(jì)方案。第二階段是收集整理數(shù)據(jù),根據(jù)數(shù)據(jù)的特性來對數(shù)據(jù)進(jìn)行收集、整理、歸納和分類,必要時(shí)可對數(shù)據(jù)進(jìn)行編碼,最終完成所有數(shù)據(jù)內(nèi)容的獲取,具體數(shù)據(jù)組織過程如圖5所示。
2.3.1 數(shù)據(jù)庫
圖5 數(shù)據(jù)組織結(jié)構(gòu)圖
Windows Phone不支持直接操作物理文件,沿用了傳統(tǒng)Silverlight的做法,使用Isolated Storage的虛擬目錄空間,可有效防止病毒的擴(kuò)散,但也使我們操作起來不方便。Windows Phone只有本地存儲,自身不帶數(shù)據(jù)庫存儲,所以要想在Windows Phone上使用數(shù)據(jù)庫,只能通過第三方嵌入式數(shù)據(jù)庫來實(shí)現(xiàn)。各種第三方軟件的優(yōu)缺點(diǎn)對比情況如表1所示。
表1 數(shù)據(jù)庫優(yōu)缺點(diǎn)對比
在Windows Phone中使用數(shù)據(jù)庫注意事項(xiàng):①根據(jù)應(yīng)用的實(shí)際需要,從性能、穩(wěn)定性和占用內(nèi)存大小、許可證類型和易用性等方面來考慮具體選擇數(shù)據(jù)的存儲方式;②記住資源大小的限制;③切記釋放資源。綜上所述,本系統(tǒng)采用的是Sqlite for Windows Phone 7。
2.3.2 GPS 定位
Windows Phone 可以支持GPS,也可以支持A-GPS。GPS使用專用硬件通過衛(wèi)星定位,不過在室內(nèi)沒有信號(在本系統(tǒng)中不再考慮這個(gè)問題),而且耗電比較嚴(yán)重;A-GPS使用基站或者網(wǎng)絡(luò)來定位,相對比較靈活,但精度相比GPS較差。定位的相關(guān)技術(shù)用到的類主要是GeoCoordinateWatcher,要想使用這個(gè)類,需要引用System.Device程序集,并且使用System.Device.Location名稱空間,還要確保在WMAppManifest.xml中包含以下的權(quán)限:
GeoCoordinateWatcher構(gòu)造函數(shù)可以指定定位精度,有2個(gè)選項(xiàng):Default和High。創(chuàng)建了GeoCoordinateWatcher對象以后,可以為它添加一個(gè)PositionChanged事件處理函數(shù)。通過GeoCoordinate參數(shù),我們可以獲得位置的相關(guān)信息。GPS定位并在當(dāng)前地圖上以圖釘?shù)男问斤@示所在位置代碼:
watcher = new GeoCoordinateWatcher(GeoPositionA ccuracy.High);
watcher.MovementThreshold = 20;
watcher.PositionChanged += new EventHandler
watcher.Start();
//當(dāng)定位服務(wù)已準(zhǔn)備就緒并接收數(shù)據(jù)時(shí),它將開始引發(fā) PositionChanged 事件
void watcher_PositionChanged(object sender,GeoPosi tionChangedEventArgs
Location location = new Location();//實(shí)例化一個(gè)位置類的實(shí)例
//將當(dāng)前的經(jīng)緯度值賦給位置對象
location.Latitude = e.Position.Location.Latitude;
location.Longitude = e.Position.Location.Longitude;
Pushpin pushpin = new Pushpin();//實(shí)例化一個(gè)圖釘實(shí)例
pushpin.Content = "當(dāng)前位置";
pushpin.Location = location;
this.map1.Children.Add(pushpin);
2.3.3 選擇器
在開發(fā)第三方應(yīng)用程序的某些時(shí)候,我們需要調(diào)用系統(tǒng)發(fā)送短信、E-Mail等功能。在Windows Mobile的基礎(chǔ)上,系統(tǒng)提供了許多的API,有時(shí)在用戶沒有察覺的情況下發(fā)送短信、郵件和撥打電話[6,7]。但是在Windows Phone上悄悄地做這些事情暫時(shí)是無法實(shí)現(xiàn)的,這是因?yàn)閃indows Phone的執(zhí)行模型把應(yīng)用程序限制在自己的隔離存儲空間內(nèi),包括程序的執(zhí)行和文件的訪問,所以應(yīng)用程序無法直接訪問公共存儲空間(如聯(lián)系人列表),也不能直接調(diào)用其他的程序(如電話、短信程序等)。雖然Windows Phone沒有提供直接訪問這些功能的API,但是提供了間接的訪問方式,即訪問器和選擇器。通過這2個(gè)工具可以訪問系統(tǒng)中的一些功能,而且微軟已經(jīng)為用戶封裝好了,只需簡單地調(diào)用就可以實(shí)現(xiàn)。調(diào)用Launchers或者Choosers的時(shí)候,征求用戶的建議以便決定是否繼續(xù)使用。啟用Search Task的代碼如下:
SearchTask St=new SearchTask();
St.SearchQuery=txt.SearchQuery.Text;
St.Show();
2.3.4 路線計(jì)算
Bing Maps提供了一組SOAP Services,通過使用這些服務(wù)能夠?qū)崿F(xiàn)地理位置計(jì)算、路徑計(jì)算等額外的功能。
地理編碼服務(wù)(Geocode Service),服務(wù)地址是:http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc。地理編碼服務(wù)可以通過搜索地名來匹配在地圖上對應(yīng)的位置(經(jīng)度和緯度),或者通過實(shí)際位置的經(jīng)度和緯度來確定對應(yīng)在地圖上的位置。
路由功能服務(wù)(Route Service),服務(wù)的地址是:http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc。路由功能服務(wù)可以通過計(jì)算地點(diǎn)的坐標(biāo)來顯示線路的功能,如百度地圖中常用的駕車線路功能等。
2.3.5 數(shù)字字典技術(shù)
采用數(shù)據(jù)字典技術(shù),將地質(zhì)地貌數(shù)據(jù)錄入的描述內(nèi)容做成模版[8]。當(dāng)用戶使用時(shí),可以直接將模版上的信息調(diào)入,用戶不修改或經(jīng)過很少修改就可以快速完成地質(zhì)地貌數(shù)據(jù)錄入,同時(shí)可以規(guī)范用戶數(shù)據(jù)的錄入,避免了描述信息的混亂,有利于數(shù)據(jù)的管理。
地理野外實(shí)習(xí)系統(tǒng)可幫助學(xué)生擺脫單方面聽老師講解和跟隨老師完成實(shí)習(xí)的思維定式,極大地鍛煉了學(xué)生的獨(dú)立自主能力。借助系統(tǒng),實(shí)習(xí)者按沿途實(shí)習(xí)點(diǎn)的實(shí)習(xí)要求自己觀察、測量、記錄與總結(jié), 培養(yǎng)學(xué)生識圖、自主定位的能力。
[1]郭巍,薛林福.虛擬野外地質(zhì)實(shí)習(xí)系統(tǒng)(VFGTS)——野外地質(zhì)實(shí)踐教學(xué)平臺[J].世界地質(zhì),2010,29(3):523-525
[2]詹云軍,袁艷斌,黃解軍,等.地理野外綜合實(shí)習(xí)教學(xué)系統(tǒng)的設(shè)計(jì)與應(yīng)用[J].理工高教教育研究,2008,27(2):144-145
[3]趙榮,孫鵬.GPS技術(shù)在野外地質(zhì)實(shí)習(xí)中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010(5):44-45
[4]鄧峣,葉春.地理野外實(shí)習(xí)遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)與應(yīng)用[J].南京師范大學(xué)學(xué)報(bào):工程技術(shù)版,2010,10(4):88-91
[5]程久苗,朱永恒.高師地理科學(xué)專業(yè)野外實(shí)習(xí)成績評價(jià)指標(biāo)與評價(jià)方法探討[J].安徽師范大學(xué)學(xué)報(bào):自然科學(xué)版,2009,32(4):385-387
[6]DevDiv移動開發(fā)社區(qū).移動開發(fā)全平臺解決方案[M].北京:海洋出版社,2011
[7]Petzoi D C.Windows Phone 7程序設(shè)計(jì)[M].北京,人民郵電出版社,2012
[8]余豐華,吳沖龍,劉剛.基于移動GIS的野外地質(zhì)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2004(24):82-83