《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > WinCE下基于ArcGIS Mobile實現(xiàn)的嵌入式地圖
WinCE下基于ArcGIS Mobile實現(xiàn)的嵌入式地圖
來源:微型機與應用2012年第3期
陳喜春
(石家莊機械化步兵學院,河北 石家莊 050083)
摘要: 以基于WinCE平臺的指控終端為例,介紹了通過ArcGIS Mobile實現(xiàn)地圖操作以及態(tài)勢圖標繪等功能的應用,。
Abstract:
Key words :

摘  要: 以基于WinCE平臺的指控終端為例,介紹了通過ArcGIS Mobile實現(xiàn)地圖操作以及態(tài)勢圖標繪等功能的應用,。
關鍵詞: WinCE;ArcGIS Mobile;嵌入式GIS,;C#

 很多場合的嵌入式應用,需要涉及地圖操作,。目前嵌入式GIS產(chǎn)品國外主要有ESRI和MapInfo,,國內(nèi)主要有超圖、靈圖等[1],。
 本文介紹在某基于WinCE 6.0操作系統(tǒng)的車載信息終端上嵌入式地圖的實現(xiàn)方法,。主要的目標功能如下:能夠?qū)崿F(xiàn)基本的地圖操作,例如放大,、縮小,、漫游、分圖層顯示,;用戶圖層的繪制,,例如在地圖上疊加軍標、繪制符號等,;能夠接收GPS坐標,、繪制本車或它車的地理位置。
本文的開發(fā)環(huán)境使用VS 2005,、ArcGIS Server v9.3,,編程語言使用C#,目標操作系統(tǒng)為WinCE 6.0,。
1 ArcGIS Mobile開發(fā)環(huán)境
 ArcGIS Server是ESRI公司推出的專業(yè)的GIS應用整合套裝軟件,,其主要目標是提供地理信息網(wǎng)絡服務,在大型GIS系統(tǒng)與終端設備間提供無縫的信息交換與服務,。為了支持PDA,、智能手機之類的手持設備,按照任務的復雜程度,,ArcGIS為移動GIS提供了三種解決方案:ArcGIS Mobile,、ArcPad以及ArcGIS Engine[2]。本文介紹依托ArcGIS Mobile開發(fā)的嵌入式應用,。此外,,還利用ArcMap和ArcCatalog這兩個工具進行地圖制作和地圖發(fā)布,而且這兩個工具也都包含在ArcGIS Server套裝中,。
 ArcGIS Mobile的基本功能包括:瀏覽空間數(shù)據(jù),,捕捉、標注GPS位置,創(chuàng)建或更新點,、線,、面等要素,通過ADO.Net編輯表格數(shù)據(jù),,自動從GIS服務器同步更新數(shù)據(jù)等[3],。
基于ArcGIS Mobile開發(fā)移動應用的基本步驟是:首先使用ArcMap編輯地圖;然后使用ArcCatalog或者ArcGIS Server Manager發(fā)布地圖,;使用Visual Studio 2005以及ArcGIS Mobile SDK開發(fā)應用程序,;最后將數(shù)據(jù)和應用程序部署到目標設備[4]。
2 地圖數(shù)據(jù)的準備
 ArcGIS Mobile開發(fā)的應用,,不僅支持在線應用,,同時也支持離線應用。在應用程序有可用的網(wǎng)絡使用時,,ArcGIS Mobile可以在線同步更新數(shù)據(jù),,并下載到本地設備上作為緩存;當網(wǎng)絡不可用時,,ArcGIS Mobile可以使用緩存數(shù)據(jù),。
 本文描述的終端設備不需要考慮地圖編輯功能,也不需要從地圖服務器讀取數(shù)據(jù),,所以在應用部署時,,應預先生成緩存再直接部署到目標設備上與應用程序一起發(fā)布。
ArcToolbox為Mobile應用提供了兩個工具,,其中Generate Mobile Service Cache用來生成Mobile地圖服務的緩存,。需要注意的是,為了支持移動應用,,在發(fā)布服務時,,應選中“Mobile Data Access”。如果用戶不需要修改地圖數(shù)據(jù),,還可以創(chuàng)建Basemap,,對地圖數(shù)據(jù)進行高度壓縮,使之在移動設備上的性能更加優(yōu)化[5],。
3 應用程序開發(fā)
 在Visual Studio 2005下提供了智能設備應用程序開發(fā)向?qū)?,可以按照向?qū)нM行應用程序的開發(fā)。為了使用ArcGIS Mobile提供的類,,應當引用相應的命名空間,。
3.1 在應用程序中加入Map控件
 在工具箱的“ArcGIS Mobile Controls”選項卡中提供了與Mobile開發(fā)的各種控件,其中Map控件提供了對地圖內(nèi)容進行管理和控制的功能,。當給窗體添加了一個Map對象時,,Map控件會自動綁定一個MobileService對象。在ArcGIS Mobile中,地圖內(nèi)容通過MobileService控件獲得并發(fā)送,,Map主要負責地圖的表現(xiàn),。地圖服務地址和地圖緩存路徑的設置也保存在MobileService對象中。
3.2 從緩存讀取地圖數(shù)據(jù)
 為了顯示地圖,,首先通過MobileService控件讀取地圖緩存數(shù)據(jù),。基本步驟是:在程序初始化時,,首先通過MobileService的CacheStoragePath屬性設置緩存路徑,,然后利用MobileService的Open方法,,打開緩存,。示例代碼如下(省略了異常捕獲語句):
mobileService1.CacheStoragePath=@"\MapCache";
mobileService1.Open(CacheOpenMode.Open),;
3.3 地圖基本操作的實現(xiàn)
 地圖的基本操作如放大,、縮小和漫游等可以通過Map控件的MapActions屬性來實現(xiàn)。MapActions是與Map控件關聯(lián)的地圖操作模式集合,,常用的有PanMapAction,、ZoomInMapAction等。將需要的地圖操作模式添加到MapActions集合,,在地圖操作模式需要改變時,,設置Map控件的CurrentMapAction屬性為MapActions集合中的一種,當前的地圖操作模式也就隨之改變,。
例如,,準備通過點擊工具欄的Button實現(xiàn)地圖放大操作,則首先創(chuàng)建ZoomInMapAction的新實例,,然后將新實例加入Map控件的MapActions,,響應Button單擊事件,將Map控件的CurrentMapAction屬性設置為 ZoomInMapAction,。代碼如下:
 private ESRI.ArcGIS.Mobile.MapActions.
 ZoomInMapAction zoomInMapAction1,;
 this.zoomInMapAction1=new ESRI.ArcGIS.
 Mobile.MapActions.zoomInMapAction1
 (this.components),;
  this.map1.MapActions.Add(this.zoomInMapAction1),;
  this.map1.CurrentMapAction=zoomInMapAction1;
 在移動設備沒有鼠標,、觸摸屏等定位設備時,,可以采取一種變通的方式進行地圖的縮放,這就是Envelope類,。Envelope用來定義一個幾何對象的區(qū)域,,可以借助它先獲取地圖的顯示區(qū)域,然后改變Envelope,再設置地圖的顯示區(qū)域,。代碼如下:
 this.envelop1=this.map1.GetExtent(),;
 this.envelop1.Resize(0.5);
 this.map1.SetExtent(this.envelop1),;
 利用Map控件的GetExtent和SetExtent方法來獲取及設置地圖的可視區(qū)域,。CenterAt方法可以改變地圖的中心位置。為了在屏幕坐標和地理坐標之間進行轉(zhuǎn)換,,可以調(diào)用Map控件的ToMap和ToClient方法,。
3.4 用戶圖層符號標繪的實現(xiàn)
 軍事上的態(tài)勢標繪常常需要在地圖圖層之上疊加各種軍標符號,比較簡單的方法是響應Map控件的Paint事件,。Display對象在Map圖層之上顯示,,當所有的圖層繪制完畢后,重繪Display之前會觸發(fā)Paint事件,,此時可以使用Display對象繪制圖形,、文本和圖像。需要說明的是,,Display對象繪制的內(nèi)容不可以保持,,用戶應注意重繪。調(diào)用Display對象繪制一個圓點的代碼如下:
 private void map1_Paint(object sender,,
 MapPaintEventArgs e)
 {
 e.Display.DrawPoint(
  new Pen(Color.Blue),,
  new SolidBrush(Color.Red), 3,,
  map1.ToMap(100,, 100));
 }

 


 另一種繪制用戶符號的方法是借助繪圖圖層(graphic layers),,Map控件的MapGraphicLayers屬性表示繪圖圖層的集合,。地圖中包括地理圖層(geographic layers)、注解圖層(annotation layers)和繪圖圖層(graphic layers)三類圖層,。前兩類圖層的數(shù)據(jù)都由數(shù)據(jù)源讀取,,繪圖圖層則由用戶控制,可以在地理圖層,、注解圖層之上顯示額外的信息,。其使用方法是:首先為Map控件的MapGraphicLayers屬性添加MapGraphicLayer對象或其派生對象的實例,然后重載該實例的Draw()方法,。這樣當Map重繪時,,就會通過Draw()方法完成用戶符號的繪制。
3.5 GPS定位功能的實現(xiàn)
 ArcGIS Mobile提供了3個GPS相關的控件對GPS進行支持:(1)FileGpsConnection控件:提供文件GPS連接,,它可以從一個包含GPS數(shù)據(jù)的文本文件中,,模擬一個GPS連接,,這樣在調(diào)試中會非常方便;(2)Seria1P0rtGpsConnection控件:提供串口GPS連接,,主要用在實際應用中,;(3)GpsDisplay和上述兩種GpsConnection聯(lián)動,實現(xiàn)GPS信息在地圖上的表現(xiàn),。
在沒有GPS設備的時候,,可以使用FileGpsConnection進行調(diào)試。FileGpsConnection的原理就是從一個包含GPS數(shù)據(jù)的文本文件,,模擬GPS連接,。將FileGpsConnection對象的FileName屬性指定為這個GPS數(shù)據(jù)文件,然后調(diào)用Open和Close方法就可以打開或關閉GPS連接,。每次GPS位置點改變時,,都會觸發(fā)GpsChanged事件,在此事件中,,可以更新地圖的位置,。
3.6 應用程序的部署
 在部署應用程序之前要在移動設備上安裝一些必要的支持文件,,一個是.NET CF運行,,另一個是ArcGISMobile.CAB和AGMRuntime.CAB,通過ActiveSync把它們拷貝到移動設備并運行,;然后把項目生成的可執(zhí)行文件拷貝到移動設備上,,即可以運行創(chuàng)建的應用程序。
 如果在VS 2005環(huán)境下調(diào)試應用程序,,應用程序會自動部署到目標設備上,。
 本文介紹了使用ArcGIS Mobile開發(fā)嵌入式GIS應用的基本方法,這些方法已經(jīng)在工程實踐中得到了應用,。本文的主要目標是實現(xiàn)態(tài)勢,、軍標在移動設備上的顯示,ArcGIS Mobile作為一款專業(yè)的移動GIS平臺,,這些功能只是其中一小部分,。ArcGIS Mobile的進一步開發(fā),例如數(shù)據(jù)的現(xiàn)地編輯,、數(shù)據(jù)回傳等應結(jié)合ArcGIS Server來實現(xiàn),。
參考文獻
[1] 陳敦根,蔣浩宇,,范躍祖.嵌入式GIS軟件ArcPad的二次開發(fā)技術(shù)[J].嵌人式軟件應用,,2006(22):37-39.
[2] ESRI.ArcGIS desktop help[CP/DK].2008.
[3] 賀軍政,毛奎中,,林均玲.基于移動GIS的測繪系統(tǒng)設計與實現(xiàn)[J].測繪工程,,2010(8):39-42.
[4] 吳泳鋒.使用ArcGIS Mobile SDK 9.3開發(fā)移動設備應用[EB/OL].http://www.docin.com/p-20680 8084.html.2011-08-01.
[5] 朱磊,,陳鵬,何兵,,等.基于ArcGIS Mobile的移動地理信息系統(tǒng)的關鍵技術(shù)[J].鐵道勘察,,2009(12):58-54.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。