新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > WinCE下基于ArcGIS Mobile實(shí)現(xiàn)的嵌入式地圖

WinCE下基于ArcGIS Mobile實(shí)現(xiàn)的嵌入式地圖

作者: 時間:2012-05-15 來源:網(wǎng)絡(luò) 收藏

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

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉