張俊杰,張海燕,羅 銳
(北京林業(yè)大學(xué) 信息學(xué)院,北京100083)
移動(dòng)GIS是基于移動(dòng)計(jì)算環(huán)境下的地理信息系統(tǒng),運(yùn)行于移動(dòng)終端設(shè)備,并具有桌面GIS部分主要功能[1]。由于組成移動(dòng)GIS的大量新技術(shù),如移動(dòng)接入技術(shù),移動(dòng)訪問方式,移動(dòng)終端的快速發(fā)展,移動(dòng)GIS已經(jīng)能夠提供實(shí)時(shí)的空間信息 “4A服務(wù)”[2]。對(duì)于工作人員,使用智能手機(jī)上的數(shù)字地圖代替?zhèn)鹘y(tǒng)的紙制地圖,通過可視化的圖形編輯和屬性查詢等操作,從而高效完成工作任務(wù);對(duì)于普通用戶,可以隨時(shí)隨地動(dòng)態(tài)地獲得地里信息,如自己所處的位置,距離最近的餐館,而不再需要查看紙制地圖或者撥打114求助,移動(dòng)GIS正成為人們生活中的一種重要的信息服務(wù)。國(guó)內(nèi)外眾多GIS廠商、數(shù)據(jù)庫(kù)服務(wù)器廠商、地里信息標(biāo)準(zhǔn)化組織以及終端設(shè)備廠商相繼推出了一些解決方案。如ESRI公司的ArcPad,Oracle公司的Oracle9iAS Wireless,北京超圖軟件的eSuperMap,南京跬步科技的UCMap,OGC的OpenLS等。這些方案相對(duì)完善,在各自領(lǐng)域提供著各種移動(dòng)GIS服務(wù)[3-7],目前國(guó)內(nèi)移動(dòng)GIS領(lǐng)域開發(fā)主要集中在基于以上方案的應(yīng)用軟件開發(fā),對(duì)移動(dòng)GIS平臺(tái)的研究和開發(fā)較少。另外,這些方案也存在一些不足,如支持的移動(dòng)終端種類有限,不同廠商間的異構(gòu)空間數(shù)據(jù)無法共享,采用較多專有技術(shù),二次開發(fā)困難等[8]。為此,本文詳細(xì)探討了基于智能手機(jī)的移動(dòng)GIS軟件平臺(tái)的開發(fā)原理和方法,并在Android平臺(tái)上設(shè)計(jì)實(shí)現(xiàn)了一套自主靈活輕便的移動(dòng)GIS基礎(chǔ)軟件平臺(tái)。
移動(dòng)GIS軟件平臺(tái)的邏輯最底層是嵌入式操作系統(tǒng),如Android,iOS和 Windows Mobile等;在其上面一層是空間數(shù)據(jù)管理模塊,管理移動(dòng)GIS空間數(shù)據(jù),同時(shí)負(fù)責(zé)與桌面GIS或者WebGIS進(jìn)行同步傳輸數(shù)據(jù);再上面一層是移動(dòng)GIS平臺(tái)的基本功能模塊集,包括空間數(shù)據(jù)可視化、屬性查詢、投影變換和GPS集成等,該層的各模塊可以根據(jù)需要進(jìn)行裁剪或增加;最上面一層是面向用戶使用的各種移動(dòng)GIS服務(wù)軟件,如圖1所示。圖1顯示了研究開發(fā)移動(dòng)GIS平臺(tái)時(shí)所必須包含的幾個(gè)基本模塊。
圖1 移動(dòng)GIS體系結(jié)構(gòu)
空間數(shù)據(jù)文件在內(nèi)存中是按圖層的方式進(jìn)行組織和管理的,分點(diǎn)圖層、線圖層和面圖層等,不同圖層負(fù)責(zé)管理對(duì)應(yīng)實(shí)體類型,如點(diǎn)圖層對(duì)應(yīng)點(diǎn)實(shí)體,線圖層對(duì)應(yīng)線實(shí)體,面圖層對(duì)應(yīng)面實(shí)體,見表1。每個(gè)實(shí)體至少包含著幾何特征數(shù)據(jù)和屬性特征數(shù)據(jù)兩方面內(nèi)容,復(fù)雜情況下還包括拓?fù)潢P(guān)系等,見表2。
表1 圖層及實(shí)體類型對(duì)照
表2 空間數(shù)據(jù)內(nèi)容
空間數(shù)據(jù)管理的核心就是對(duì)圖層和實(shí)體的管理。采用現(xiàn)代高級(jí)程序語(yǔ)言開發(fā)時(shí),一般以面向?qū)ο蟮姆绞浇M織圖層和實(shí)體。例如先定義BaseShape抽象基類,PointShape、LineShape和PolygonShape根據(jù)自己的性質(zhì)分別繼承Base-Shape。對(duì)圖層的操作主要包括打開、編輯、插入、刪除以及關(guān)閉等;對(duì)實(shí)體的操作主要包括增加、刪除、修改以及檢索等。
在移動(dòng)GIS中,由于移動(dòng)設(shè)備屏幕和分辨率等資源的限制,任意時(shí)刻用戶只是看到某個(gè)圖像的概貌或該圖的某一個(gè)局部的詳細(xì)部分,即任何時(shí)刻用戶只是瀏覽本幅圖全部圖形對(duì)象中的一個(gè)較小子集。因此,一般需要建立空間索引提高圖形對(duì)象的存取效率。例如在ESRI開發(fā)的矢量數(shù)據(jù)格式Shapefile中,除了記錄每個(gè)實(shí)體的坐標(biāo)數(shù)據(jù)外,還記錄著該實(shí)體的最小外包矩形[9],如圖2所示。一般采用K-D樹、K-D-B樹、BSP樹、R樹、四叉樹等算法將地理空間網(wǎng)格劃分[10],每個(gè)葉子節(jié)點(diǎn)存儲(chǔ)本區(qū)域所關(guān)聯(lián)的圖形對(duì)象列表和本區(qū)域地理范圍,非葉子節(jié)點(diǎn)存儲(chǔ)區(qū)域的地理范圍。
圖2 實(shí)體最小外包矩形
空間數(shù)據(jù)可視化就是在移動(dòng)設(shè)備上對(duì)空間數(shù)據(jù)包括點(diǎn)實(shí)體、線實(shí)體和面實(shí)體進(jìn)行圖形化顯示。實(shí)現(xiàn)可視化顯示的第一步就是進(jìn)行圖形坐標(biāo)變換,即從地圖的平面坐標(biāo)到設(shè)備的顯示屏坐標(biāo)的變換。完成這一坐標(biāo)變換首先要明確圖形坐標(biāo)和設(shè)備坐標(biāo)兩個(gè)概念,圖形坐標(biāo)是指GIS存儲(chǔ)原始數(shù)據(jù)所采用的坐標(biāo),也就是大部分教材和程序員稱之的邏輯坐標(biāo);設(shè)備坐標(biāo)是當(dāng)前要顯示的圖形對(duì)應(yīng)于設(shè)備上的坐標(biāo),設(shè)備坐標(biāo)又稱屏幕坐標(biāo);在有些情況下,用戶區(qū)域坐標(biāo)或者窗口坐標(biāo)也稱為設(shè)備坐標(biāo)。主要區(qū)別在于坐標(biāo)原點(diǎn)不同,用戶區(qū)域坐標(biāo)在用戶區(qū)域的左上角,而不是整個(gè)屏幕,窗口坐標(biāo)原點(diǎn)在窗口 (窗體包括標(biāo)題欄等)的左上角,程序開發(fā)中一般很少用到窗口坐標(biāo)。
建立圖形坐標(biāo)系也就是邏輯坐標(biāo)系和設(shè)備坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,在 Windows API編程中,由庫(kù)函數(shù)LptoDP直接轉(zhuǎn)換即可[11],但在本文中需要自己定義實(shí)現(xiàn)。設(shè)點(diǎn)(xMapO,yMapO)為 圖 形 坐 標(biāo) 原 點(diǎn), 點(diǎn) (xViewO,yViewO)為設(shè)備坐標(biāo)原點(diǎn)。圖形區(qū)域的擴(kuò)展大小用(xMapRect,yMapRect)表示,設(shè)備區(qū)域的擴(kuò)展大小用(xViewRect,yViewRect)表 示, 將 圖 形 坐 標(biāo) (xMap,yMap)轉(zhuǎn)換為設(shè)備坐標(biāo)(xView,yView)的轉(zhuǎn)換關(guān)系為
完成空間實(shí)體的可視化顯示后,還要顯示地物等地圖標(biāo)記,即需要設(shè)計(jì)地圖的符號(hào)庫(kù)。符號(hào)是地圖的語(yǔ)言,是地圖的主要表達(dá)方式。與圖層分類相似,地圖符號(hào)分為點(diǎn)狀符號(hào)、線狀符號(hào)以及面狀符號(hào)。點(diǎn)狀符號(hào)在地圖上只顯示為一個(gè)定位點(diǎn),僅與位置有關(guān),不因比例尺大小的變化而變化,通常情況下設(shè)計(jì)一種或幾種圖元經(jīng)過不同排列實(shí)現(xiàn);線狀符號(hào)在地圖上表示線狀類型的地物,長(zhǎng)度隨比例尺大小的變化而變化,而寬度不隨比例尺變化,具有一維方向性;面狀符號(hào)在地圖上表示現(xiàn)實(shí)空間中的二維地物,符號(hào)大小范圍隨比例尺大小的變化而變化。面狀符號(hào)較點(diǎn)狀符號(hào)和線狀符號(hào)都復(fù)雜,需要較多存儲(chǔ)空間,消耗資源也比較大,每次加載需要較多時(shí)間,甚至?xí)?dǎo)致不必要的延時(shí),而且移動(dòng)GIS服務(wù)通常對(duì)面狀符號(hào)的使用率較低,所以一般在移動(dòng)終端設(shè)備如智能手機(jī)上不實(shí)現(xiàn)面狀符號(hào),只實(shí)現(xiàn)點(diǎn)狀符號(hào)與線狀符號(hào)[1]。
空間數(shù)據(jù)中不僅包含幾何特征信息,而且還具有與幾何信息相聯(lián)的屬性特征信息[12]。幾何特征表示實(shí)體的空間位置和空間關(guān)系,屬性特征表示實(shí)體的現(xiàn)象或者特征,如圖3所示。移動(dòng)GIS需要實(shí)現(xiàn)兩方面的查詢:一是從左到右方向的查詢,稱基于空間特征的查詢,即從幾何實(shí)體到屬性數(shù)據(jù)的查詢;二是從右到左方向的查詢,稱基于屬性特征的查詢,即從屬性數(shù)據(jù)到幾何實(shí)體的查詢。例如,查出中國(guó)地圖數(shù)據(jù)中省面積大于70萬平方千米,人口數(shù)大于2000萬的省份。
圖3 幾何實(shí)體與屬性數(shù)據(jù)連接
設(shè)計(jì)實(shí)現(xiàn)空間數(shù)據(jù)管理,首先定義SHPInfo和FieldInfo兩個(gè)類用來分別保存幾何特征數(shù)據(jù)和屬性特征數(shù)據(jù)在文件流中的索引信息。SHPInfo類和FieldInfo類設(shè)計(jì)如下:
其次,定義描述各圖層在內(nèi)存中的狀態(tài)的類LayerDes。LayerDes類設(shè)計(jì)如下。
空間實(shí)體的加載和顯示由實(shí)體類完成。首先定義抽象基類BaseShape如下:
定義子類PointShape,LineShape和PolygonShape,分別根據(jù)自身性質(zhì)實(shí)現(xiàn)LoadShape()和DispShape()方法。圖4顯示了空間數(shù)據(jù)在內(nèi)存中的邏輯結(jié)構(gòu)。點(diǎn)線面實(shí)體及屬性數(shù)據(jù)查詢的實(shí)現(xiàn)效果圖如圖5所示。
圖4 空間數(shù)據(jù)邏輯結(jié)構(gòu)
圖5 點(diǎn)線面實(shí)體及屬性效果
實(shí)現(xiàn)空間數(shù)據(jù)可視化的第一步是進(jìn)行數(shù)據(jù)顯示,首先按照2.2節(jié)介紹的圖形坐標(biāo)和設(shè)備坐標(biāo)的轉(zhuǎn)換關(guān)系轉(zhuǎn)換坐標(biāo),然后調(diào)用系統(tǒng)畫圖函數(shù)在設(shè)備上畫圖;第二步是實(shí)現(xiàn)地圖的漫游功能,其主要操作包括放大、縮小、左移顯示和右移顯示、上移顯示,下移顯示和全圖顯示。實(shí)現(xiàn)地圖漫游,主要由地圖起始坐標(biāo) (x,y)和地圖顯示比例scale這3個(gè)參數(shù)控制。用iWidth表示設(shè)備窗口寬度,iHeight表示設(shè)備窗口高度,地圖邊界范圍為 (dxmin,dymin)、(dxmax,dymax),對(duì)x,y,scale的計(jì)算方法如下:
地圖放大通常包括窗口放大和點(diǎn)擊放大兩種操作。實(shí)現(xiàn)地圖放大,需要把描述整個(gè)屏幕大小的iWdith和iHeight兩個(gè)參數(shù)替換成用戶指定的顯示范圍;實(shí)現(xiàn)地圖縮小需要把顯示比例參數(shù)scale縮小,比如乘以一個(gè)小數(shù)0.6,即scale*=0.6;地圖左移、右移、上移和下移顯示只要把起始坐標(biāo) (x,y)朝著目標(biāo)移動(dòng)方向增加或減少即可。圖6顯示了系統(tǒng)主界面效果圖。圖6中顯示的*.mxf文件為系統(tǒng)自定義地圖工程文件。
圖6 主界面效果
本文提出并討論了移動(dòng)GIS的體系結(jié)構(gòu)和設(shè)計(jì)方法,在此基礎(chǔ)上研發(fā)了一套基于Android平臺(tái)的移動(dòng)GIS基礎(chǔ)軟件移動(dòng)MapGIS。移動(dòng)MapGIS主要實(shí)現(xiàn)把具有幾何特征和屬性特征的矢量數(shù)據(jù)以面向?qū)ο蟮姆绞浇M織,并以地圖的形式表達(dá),向人們提供地圖漫游和信息查詢服務(wù)。移動(dòng)MapGIS在雙核1.4GHz主頻、1G內(nèi)存的三星Galaxy Note I9220智能手機(jī),和雙核1.7GHz主頻、1G內(nèi)存的小米1S智能手機(jī)上經(jīng)真機(jī)測(cè)試,可以無延時(shí)的流暢運(yùn)行。作為一個(gè)完整的移動(dòng)GIS,還應(yīng)根據(jù)用戶具體需求,提供更多的移動(dòng)空間信息服務(wù),如增加空間分析功能,實(shí)現(xiàn)最短路徑、最優(yōu)路徑求解,增加GPS定位導(dǎo)航功能等,這些內(nèi)容將在下步研究實(shí)現(xiàn)。
[1]CHEN Feixiang.Research on key technologies for mobile spatial information services [D].Beijing:Institute of Remote Sensing Applications,2006 (in Chinese).[陳飛翔.移動(dòng)空間信息服務(wù)關(guān)鍵技術(shù)研究 [D].北京:中國(guó)科學(xué)院遙感應(yīng)用研究所,2006.]
[2]WANG Fangxiong,WU Bian,YI Kai.The architecture and key technique of mobile GIS [J].Geomatics & Spatial Information Technology,2007,30 (6):12-18 (in Chinese). [王方雄,吳邊,怡凱.移動(dòng)GIS的體系結(jié)構(gòu)與關(guān)鍵技術(shù) [J].測(cè)繪與空間地理信息,2007,30 (6):12-18.]
[3]CHEN Weijia,LI Mingfeng,WANG Yongming,et al.Information acquisition system design of precise agriculture based on ArcPad [J].Journal of Anhui Agri Sci,2009,37 (30):15035-15037 (in Chinese). [陳偉佳,李明峰,王永明,等.基于ArcPad的精細(xì)農(nóng)田信息采集系統(tǒng)設(shè)計(jì) [J].安徽農(nóng)業(yè)科學(xué),2009,37 (30):15035-15037.]
[4]ZHANG Wei,SHEN Xiaojian,CHEN Jifeng.Earthquake message intelligent positioning system based on eSuperMap[J].Journal of Seismological Research,2011,34 (4):547-551(in Chinese).[張薇,沈曉健,陳吉鋒.基于eSuperMap的手機(jī)地震短信智能定位系統(tǒng) [J].地震研究,2011,34(4):547-551.]
[5]ZENG Wu,XU Su.Design and development of mobile GIS based water supply pipeline walking system [J]. Water Resources and Hydropower Engineering,2011,42 (1):92-95(in Chinese).[曾武,徐速.基于移動(dòng)GIS技術(shù)的供水管網(wǎng)巡線系統(tǒng)設(shè)計(jì)與開發(fā) [J].水利水電技術(shù),2011,42 (1):92-95.]
[6]DENG Shihu,XU Wenzhuo.Research on urban planning supervision information system based on mobile GIS [J].Geospatial Information,2012,10 (3):130-133 (in Chinese).[鄧仕虎,徐文卓.基于移動(dòng)GIS的城鄉(xiāng)規(guī)劃監(jiān)察執(zhí)法信息系統(tǒng) [J].地理空間信息,2012,10 (3):130-133.]
[7]TIAN Gen,TONG Xiaohua.A new method integration of mobile GIS and GPS for landscaping survey [J].Journal of Tongji University (Natural Science),2007,35 (10):1400-1405 (in Chinese).[田根,童小華.基于移動(dòng)GIS和GPS集成的綠化調(diào)查關(guān)鍵技術(shù) [J].同濟(jì)大學(xué)學(xué)報(bào) (自然科學(xué)版),2007,35(10):1400-1405.]
[8]GUO Jinwei,F(xiàn)AN Guozhen,YU Dong.Design and implementation of mobile GIS application software based on compo-nent technology [J].Journal of Chinese Computer Systems,2007,3 (3):466-469 (in Chinese). [郭晉偉,范國(guó)珍,于東.基于組件技術(shù)的移動(dòng)GIS應(yīng)用軟件的設(shè)計(jì) [J].小型微型計(jì)算機(jī)系統(tǒng),2007,3 (3):466-469.]
[9]LIU Wei,ZHANG Hairong.A way of format translation from DXF file to Shape file based on GML [J].Science of Surveying and Mapping,2007,32 (4):177-178 (in Chinese). [劉偉,張海榮.基于GML從DXF文件到Shape文件格式轉(zhuǎn)換的研究與開發(fā) [J].測(cè)繪科學(xué),2007,32 (4):177-178.]
[10]ZHAO Bo,BIAN Fuling.Dynamic quad tree spatial index algorithm for mobile GIS [J].Computer Engineering,2007,33 (15):86-88 (in Chinese). [趙波,邊苻苓.面向移動(dòng)GIS的動(dòng)態(tài)四叉樹空間索引算法 [J].計(jì)算機(jī)工程,2007,33 (15):86-88.]
[11]CHE Zhongzhi.Coordinate systems of windows programming[J].Agriculture Network Information,2009 (7):122-144(in Chinese). [車忠志.Windows編程中的坐標(biāo)系統(tǒng) [J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2009 (7):122-144.]
[12]XIA Chunlin.Principle and application of GIS [M].Xuzhou:China University of Mining and Technology Press,2011:152-168 (in Chinese). [夏春林.GIS原理與應(yīng)用 (英文版)[M].徐州:中國(guó)礦業(yè)大學(xué)出版社,2011:152-168.]