張俊杰,張海燕,羅 銳
(北京林業大學 信息學院,北京100083)
移動GIS是基于移動計算環境下的地理信息系統,運行于移動終端設備,并具有桌面GIS部分主要功能[1]。由于組成移動GIS的大量新技術,如移動接入技術,移動訪問方式,移動終端的快速發展,移動GIS已經能夠提供實時的空間信息 “4A服務”[2]。對于工作人員,使用智能手機上的數字地圖代替傳統的紙制地圖,通過可視化的圖形編輯和屬性查詢等操作,從而高效完成工作任務;對于普通用戶,可以隨時隨地動態地獲得地里信息,如自己所處的位置,距離最近的餐館,而不再需要查看紙制地圖或者撥打114求助,移動GIS正成為人們生活中的一種重要的信息服務。國內外眾多GIS廠商、數據庫服務器廠商、地里信息標準化組織以及終端設備廠商相繼推出了一些解決方案。如ESRI公司的ArcPad,Oracle公司的Oracle9iAS Wireless,北京超圖軟件的eSuperMap,南京跬步科技的UCMap,OGC的OpenLS等。這些方案相對完善,在各自領域提供著各種移動GIS服務[3-7],目前國內移動GIS領域開發主要集中在基于以上方案的應用軟件開發,對移動GIS平臺的研究和開發較少。另外,這些方案也存在一些不足,如支持的移動終端種類有限,不同廠商間的異構空間數據無法共享,采用較多專有技術,二次開發困難等[8]。為此,本文詳細探討了基于智能手機的移動GIS軟件平臺的開發原理和方法,并在Android平臺上設計實現了一套自主靈活輕便的移動GIS基礎軟件平臺。
移動GIS軟件平臺的邏輯最底層是嵌入式操作系統,如Android,iOS和 Windows Mobile等;在其上面一層是空間數據管理模塊,管理移動GIS空間數據,同時負責與桌面GIS或者WebGIS進行同步傳輸數據;再上面一層是移動GIS平臺的基本功能模塊集,包括空間數據可視化、屬性查詢、投影變換和GPS集成等,該層的各模塊可以根據需要進行裁剪或增加;最上面一層是面向用戶使用的各種移動GIS服務軟件,如圖1所示。圖1顯示了研究開發移動GIS平臺時所必須包含的幾個基本模塊。

圖1 移動GIS體系結構
空間數據文件在內存中是按圖層的方式進行組織和管理的,分點圖層、線圖層和面圖層等,不同圖層負責管理對應實體類型,如點圖層對應點實體,線圖層對應線實體,面圖層對應面實體,見表1。每個實體至少包含著幾何特征數據和屬性特征數據兩方面內容,復雜情況下還包括拓撲關系等,見表2。

表1 圖層及實體類型對照

表2 空間數據內容
空間數據管理的核心就是對圖層和實體的管理。采用現代高級程序語言開發時,一般以面向對象的方式組織圖層和實體。例如先定義BaseShape抽象基類,PointShape、LineShape和PolygonShape根據自己的性質分別繼承Base-Shape。對圖層的操作主要包括打開、編輯、插入、刪除以及關閉等;對實體的操作主要包括增加、刪除、修改以及檢索等。
在移動GIS中,由于移動設備屏幕和分辨率等資源的限制,任意時刻用戶只是看到某個圖像的概貌或該圖的某一個局部的詳細部分,即任何時刻用戶只是瀏覽本幅圖全部圖形對象中的一個較小子集。因此,一般需要建立空間索引提高圖形對象的存取效率。例如在ESRI開發的矢量數據格式Shapefile中,除了記錄每個實體的坐標數據外,還記錄著該實體的最小外包矩形[9],如圖2所示。一般采用K-D樹、K-D-B樹、BSP樹、R樹、四叉樹等算法將地理空間網格劃分[10],每個葉子節點存儲本區域所關聯的圖形對象列表和本區域地理范圍,非葉子節點存儲區域的地理范圍。

圖2 實體最小外包矩形
空間數據可視化就是在移動設備上對空間數據包括點實體、線實體和面實體進行圖形化顯示。實現可視化顯示的第一步就是進行圖形坐標變換,即從地圖的平面坐標到設備的顯示屏坐標的變換。完成這一坐標變換首先要明確圖形坐標和設備坐標兩個概念,圖形坐標是指GIS存儲原始數據所采用的坐標,也就是大部分教材和程序員稱之的邏輯坐標;設備坐標是當前要顯示的圖形對應于設備上的坐標,設備坐標又稱屏幕坐標;在有些情況下,用戶區域坐標或者窗口坐標也稱為設備坐標。主要區別在于坐標原點不同,用戶區域坐標在用戶區域的左上角,而不是整個屏幕,窗口坐標原點在窗口 (窗體包括標題欄等)的左上角,程序開發中一般很少用到窗口坐標。
建立圖形坐標系也就是邏輯坐標系和設備坐標系之間的轉換關系,在 Windows API編程中,由庫函數LptoDP直接轉換即可[11],但在本文中需要自己定義實現。設點(xMapO,yMapO)為 圖 形 坐 標 原 點, 點 (xViewO,yViewO)為設備坐標原點。圖形區域的擴展大小用(xMapRect,yMapRect)表示,設備區域的擴展大小用(xViewRect,yViewRect)表 示, 將 圖 形 坐 標 (xMap,yMap)轉換為設備坐標(xView,yView)的轉換關系為

完成空間實體的可視化顯示后,還要顯示地物等地圖標記,即需要設計地圖的符號庫。符號是地圖的語言,是地圖的主要表達方式。與圖層分類相似,地圖符號分為點狀符號、線狀符號以及面狀符號。點狀符號在地圖上只顯示為一個定位點,僅與位置有關,不因比例尺大小的變化而變化,通常情況下設計一種或幾種圖元經過不同排列實現;線狀符號在地圖上表示線狀類型的地物,長度隨比例尺大小的變化而變化,而寬度不隨比例尺變化,具有一維方向性;面狀符號在地圖上表示現實空間中的二維地物,符號大小范圍隨比例尺大小的變化而變化。面狀符號較點狀符號和線狀符號都復雜,需要較多存儲空間,消耗資源也比較大,每次加載需要較多時間,甚至會導致不必要的延時,而且移動GIS服務通常對面狀符號的使用率較低,所以一般在移動終端設備如智能手機上不實現面狀符號,只實現點狀符號與線狀符號[1]。
空間數據中不僅包含幾何特征信息,而且還具有與幾何信息相聯的屬性特征信息[12]。幾何特征表示實體的空間位置和空間關系,屬性特征表示實體的現象或者特征,如圖3所示。移動GIS需要實現兩方面的查詢:一是從左到右方向的查詢,稱基于空間特征的查詢,即從幾何實體到屬性數據的查詢;二是從右到左方向的查詢,稱基于屬性特征的查詢,即從屬性數據到幾何實體的查詢。例如,查出中國地圖數據中省面積大于70萬平方千米,人口數大于2000萬的省份。

圖3 幾何實體與屬性數據連接
設計實現空間數據管理,首先定義SHPInfo和FieldInfo兩個類用來分別保存幾何特征數據和屬性特征數據在文件流中的索引信息。SHPInfo類和FieldInfo類設計如下:


其次,定義描述各圖層在內存中的狀態的類LayerDes。LayerDes類設計如下。

空間實體的加載和顯示由實體類完成。首先定義抽象基類BaseShape如下:

定義子類PointShape,LineShape和PolygonShape,分別根據自身性質實現LoadShape()和DispShape()方法。圖4顯示了空間數據在內存中的邏輯結構。點線面實體及屬性數據查詢的實現效果圖如圖5所示。

圖4 空間數據邏輯結構

圖5 點線面實體及屬性效果
實現空間數據可視化的第一步是進行數據顯示,首先按照2.2節介紹的圖形坐標和設備坐標的轉換關系轉換坐標,然后調用系統畫圖函數在設備上畫圖;第二步是實現地圖的漫游功能,其主要操作包括放大、縮小、左移顯示和右移顯示、上移顯示,下移顯示和全圖顯示。實現地圖漫游,主要由地圖起始坐標 (x,y)和地圖顯示比例scale這3個參數控制。用iWidth表示設備窗口寬度,iHeight表示設備窗口高度,地圖邊界范圍為 (dxmin,dymin)、(dxmax,dymax),對x,y,scale的計算方法如下:

地圖放大通常包括窗口放大和點擊放大兩種操作。實現地圖放大,需要把描述整個屏幕大小的iWdith和iHeight兩個參數替換成用戶指定的顯示范圍;實現地圖縮小需要把顯示比例參數scale縮小,比如乘以一個小數0.6,即scale*=0.6;地圖左移、右移、上移和下移顯示只要把起始坐標 (x,y)朝著目標移動方向增加或減少即可。圖6顯示了系統主界面效果圖。圖6中顯示的*.mxf文件為系統自定義地圖工程文件。

圖6 主界面效果
本文提出并討論了移動GIS的體系結構和設計方法,在此基礎上研發了一套基于Android平臺的移動GIS基礎軟件移動MapGIS。移動MapGIS主要實現把具有幾何特征和屬性特征的矢量數據以面向對象的方式組織,并以地圖的形式表達,向人們提供地圖漫游和信息查詢服務。移動MapGIS在雙核1.4GHz主頻、1G內存的三星Galaxy Note I9220智能手機,和雙核1.7GHz主頻、1G內存的小米1S智能手機上經真機測試,可以無延時的流暢運行。作為一個完整的移動GIS,還應根據用戶具體需求,提供更多的移動空間信息服務,如增加空間分析功能,實現最短路徑、最優路徑求解,增加GPS定位導航功能等,這些內容將在下步研究實現。
[1]CHEN Feixiang.Research on key technologies for mobile spatial information services [D].Beijing:Institute of Remote Sensing Applications,2006 (in Chinese).[陳飛翔.移動空間信息服務關鍵技術研究 [D].北京:中國科學院遙感應用研究所,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). [王方雄,吳邊,怡凱.移動GIS的體系結構與關鍵技術 [J].測繪與空間地理信息,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的精細農田信息采集系統設計 [J].安徽農業科學,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].地震研究,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).[曾武,徐速.基于移動GIS技術的供水管網巡線系統設計與開發 [J].水利水電技術,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).[鄧仕虎,徐文卓.基于移動GIS的城鄉規劃監察執法信息系統 [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).[田根,童小華.基于移動GIS和GPS集成的綠化調查關鍵技術 [J].同濟大學學報 (自然科學版),2007,35(10):1400-1405.]
[8]GUO Jinwei,FAN 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). [郭晉偉,范國珍,于東.基于組件技術的移動GIS應用軟件的設計 [J].小型微型計算機系統,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文件格式轉換的研究與開發 [J].測繪科學,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). [趙波,邊苻苓.面向移動GIS的動態四叉樹空間索引算法 [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編程中的坐標系統 [J].農業網絡信息,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原理與應用 (英文版)[M].徐州:中國礦業大學出版社,2011:152-168.]