陳昊 史守正
摘要:針對(duì)高等教育缺少對(duì)植物方面的人文教育、校園植物園利用率低下等問題,利用ArcGIS Runtime SDK for Android移動(dòng)開發(fā)技術(shù),基于蘇州科技大學(xué)石湖校區(qū)校園地圖以及存儲(chǔ)于SpatiaLite數(shù)據(jù)庫中的校園植物數(shù)據(jù)庫,開發(fā)出基于Android平臺(tái)的校園植物園系統(tǒng)。該系統(tǒng)可以滿足用戶在校園內(nèi)隨時(shí)隨地地學(xué)習(xí)、觀賞植物,使校園植物園得以充分利用。
關(guān)鍵詞:校園植物園 ArcGIS Runtime SDK for Android SpatiaLite
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)08-0188-02
高校的綠化建設(shè)是校園建設(shè)中非常重要的一項(xiàng)內(nèi)容,每所學(xué)校都有大面積的綠化植物,這些植物都是增進(jìn)學(xué)校人文教育的重要途徑。通過調(diào)查發(fā)現(xiàn)雖然當(dāng)代大學(xué)生非常喜歡校內(nèi)植物,但他們對(duì)校內(nèi)很多植物的名稱和特性都一無所知。由此可見,很多學(xué)校還是缺乏人文教育,而且沒有充分利用好校內(nèi)資源。很多學(xué)者都針對(duì)這一問題展開了研究,例如蘭思仁的福建農(nóng)林大學(xué)教學(xué)植物園探析[1]。隨著信息時(shí)代的發(fā)展,很多學(xué)校也提出建立虛擬校園植物園,如沈瑩的校園虛擬植物園建設(shè)實(shí)踐研究[2],但大多都是以計(jì)算機(jī)為固定終端設(shè)備,因此無法滿足師生在校園內(nèi)隨時(shí)隨地去學(xué)習(xí)、觀賞植物。
移動(dòng)GIS是以智能手機(jī)或平板電腦為終端GIS系統(tǒng),是繼桌面 GIS、WebGIS之后又一新的技術(shù)熱點(diǎn)[3]?;贏ndroid手機(jī)系統(tǒng),借助ESRI公司提供的ArcGISRuntime SDK for Android插件,即能通過Eclipse平臺(tái)進(jìn)行手機(jī)APP開發(fā),設(shè)計(jì)出一款基于校園植物的的移動(dòng)地理信息系統(tǒng),可以很方便幫助校內(nèi)師生隨時(shí)隨地欣賞、學(xué)習(xí)校園植物。
1 系統(tǒng)開發(fā)理論基礎(chǔ)
1.1 ArcGIS Runtime SDK for Android簡(jiǎn)介
ArcGIS Runtime SDK for Android基于Android的GIS軟件開發(fā)包,它為開發(fā)者提供了定位、地理數(shù)據(jù)采集、空間數(shù)據(jù)分析等諸多空間數(shù)據(jù)處理方案[4]。雖然ArcGIS Runtime SDK for Android目前具有很多功能,但是在處理離線矢量數(shù)據(jù)方面,ArcGIS Runtime SDK for Android的功能比較差,加載大量的離線矢量數(shù)據(jù)時(shí)很慢,無法進(jìn)行復(fù)雜的編輯功能。
目前ArcGIS Runtime SDK for Android已經(jīng)擁有很多版本,10.2.4及之前的版本,開發(fā)者可將封裝的ArcGIS Runtime SDK for Android插件在Eclipse中下載后,即可調(diào)用該插件進(jìn)行開發(fā)編程。10.2.4之后的版本,支持基于Gradle自動(dòng)化構(gòu)建工具的Android Studio集成開發(fā)環(huán)境[5]。
1.2 SpatiaLite簡(jiǎn)介
SpatiaLite空間數(shù)據(jù)庫是一個(gè)簡(jiǎn)單、實(shí)用的輕量級(jí)數(shù)據(jù)庫,它是在SQLite的基礎(chǔ)上增加了對(duì)空間數(shù)據(jù)的支持,具有管理空間數(shù)據(jù)的能力。它遵守OGC標(biāo)準(zhǔn),支持SQL語言對(duì)幾何類型字段的操作[6]。SpatiaLite操作簡(jiǎn)單,易于管理GIS環(huán)境下中小型GIS數(shù)據(jù)庫,支持R-tree的數(shù)據(jù)檢索,數(shù)據(jù)庫的訪問速度快,很適合在Android設(shè)備上進(jìn)行空間數(shù)據(jù)管理,正好可以解決ArcGIS for Android對(duì)離線矢量數(shù)據(jù)處理能力差的難題[7]。
2 系統(tǒng)設(shè)計(jì)
校園植物園系統(tǒng)(BG University)是以掌上電腦或智能手機(jī)為硬件開發(fā)平臺(tái),在Eclipse3.7平臺(tái)上下載ArcGIS Runtime SDK for Android10.2.4插件進(jìn)行二次開發(fā),并通過SpatiaLite管理工具SpatiaLite GUI存儲(chǔ)、管理校園植物的空間數(shù)據(jù)和屬性數(shù)據(jù)。
2.1 功能設(shè)計(jì)
本系統(tǒng)主要功能分為定位,地圖瀏覽與操作,植物查詢與編輯,校內(nèi)導(dǎo)航和輔助功能,具體的功能結(jié)構(gòu)(如圖1所示)。
2.1.1 定位
系統(tǒng)可通過Android設(shè)備中的GPS、移動(dòng)通訊網(wǎng)絡(luò)、WIFI網(wǎng)絡(luò)來進(jìn)行定位。
2.1.2 地圖瀏覽與操作
校園地圖可加載離線2D平面圖與遙感影像,地圖除了可以支持放縮、平移、旋轉(zhuǎn)等基本功能,還利用Android提供的方向傳感器,使地圖隨著用戶面對(duì)的方向進(jìn)行旋轉(zhuǎn),方便用戶識(shí)別地圖,查看植物信息。
2.1.3 植物查詢、編輯
植物查詢不僅包含關(guān)鍵字查詢、分類查詢,還通過定位功能+緩沖區(qū)組成的附近查詢功能。植物編輯功能可滿足用戶對(duì)校內(nèi)植物進(jìn)行更新,修改等操作, 保證了校園植物數(shù)據(jù)庫的實(shí)時(shí)性,有效性。
2.1.4 校內(nèi)導(dǎo)航
校內(nèi)導(dǎo)航是分為人行導(dǎo)航與車行導(dǎo)航,通過路徑分析,為用戶提供最優(yōu)路徑,方便用戶快速到達(dá)目的地。
2.1.5 輔助功能
輔助功能包括拍照、微博分享、意見反饋,植物好搜百科鏈接,學(xué)校簡(jiǎn)介,關(guān)于我們,一鍵退出等功能。
2.2 數(shù)據(jù)庫設(shè)計(jì)
系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)是校園植物園系統(tǒng)建設(shè)的關(guān)鍵。校園植物數(shù)據(jù)庫的所有數(shù)據(jù)都儲(chǔ)存在SpatiaLite數(shù)據(jù)庫中。數(shù)據(jù)庫主要包括為兩個(gè)部分,即校園植物信息和植物最佳觀測(cè)點(diǎn)信息,(如圖2所示)。對(duì)于校園植物的屬性信息需要注意的是:校園植物的屬性信息包含兩張表,attributes表存儲(chǔ)目前校園內(nèi)所有植物的屬性信息,當(dāng)校園種植新植物時(shí),新植物的屬性信息將存儲(chǔ)在attributes1里。
3 系統(tǒng)主要功能實(shí)現(xiàn)
3.1 底圖數(shù)據(jù)的制作
系統(tǒng)使用的校園底圖有2D平面圖和遙感影像圖,它們都是切片包tpk格式。tpk主要是用于將緊湊型切片文件打包形成離線地圖包,它相當(dāng)于一張圖片,沒有屬性信息。Tpk的制作步驟:(1)在ArcMap選擇Customize > ArcMap Options > sharing,確?!癊nable ArcGIS Runtime Tools”被勾選上;(2)在ArcMap中選擇File > Share As > Tile Package;(3)在Tile Package選項(xiàng)卡下設(shè)置文件存儲(chǔ)路徑;(4)在Tile Format中設(shè)置相關(guān)參數(shù);(5)在Item Description中設(shè)置描述信息;(6)生成tpk文件。
3.2 兩種地圖旋轉(zhuǎn)方式的靈活切換
其一是通過監(jiān)聽用戶的手勢(shì)操作對(duì)地圖進(jìn)行任意旋轉(zhuǎn)。其二是通過使用Android方向傳感器,監(jiān)聽手機(jī)對(duì)應(yīng)的方位,校園地圖隨即旋轉(zhuǎn)到該方位。系統(tǒng)中通過一個(gè)按鈕來切換兩種地圖旋轉(zhuǎn)方法。為了保證系統(tǒng)的運(yùn)行效率,第二種旋轉(zhuǎn)方法的編碼是利用Runnable接口實(shí)現(xiàn)多線程,核心代碼如下:
//首先創(chuàng)建一個(gè)傳感器管理器和一個(gè)傳感器監(jiān)聽器
private SensorManager sensorManager;
//這個(gè)監(jiān)聽器由自己定義,在方向感應(yīng)器感應(yīng)到手機(jī)方向有變化的時(shí)候,可以采取相應(yīng)的操作
private MySensorEventListener mySensorEventListener= new MySensor EventListener();
private final class MySensorEventListener implements SensorEventListener{
@Override
//可以得到傳感器實(shí)時(shí)測(cè)量出來的變化值
public void onSensorChanged(SensorEvent event) {
//方向傳感器
if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
// direction表示手機(jī)指向的方位
float direction = event.values[0];
}
//當(dāng)監(jiān)聽到手機(jī)方位時(shí),便可將地圖旋轉(zhuǎn)到對(duì)應(yīng)的方位
mMapView.setRotationAngle(-direction)。
3.3 WKT字符串與Geometry的轉(zhuǎn)換
系統(tǒng)在進(jìn)行植物查詢與編輯時(shí),需要進(jìn)行點(diǎn)、線、面狀植物的WKT字符串與幾何對(duì)象的互轉(zhuǎn),即實(shí)現(xiàn)SpatiaLite中POINT、LINESTRING、POLYGON的WKT字符串與ArcGIS Runtime SDK for Android 中Geometry的Point、Polyline、Polygon的互轉(zhuǎn)。
在Geometry生成WKT字符串時(shí),很多資料把Polyline、Polygon放在一個(gè)情況下討論,由于WKT中線是用LINESTRING表示,因此系統(tǒng)是把這兩個(gè)類型分開討論。
//Polygon情況下的生成代碼
if(“POLYGON”.equals(type.name())){
MultiPath pg = (MultiPath)geometry;
geoStr = type.name()+”(“+””;
int pathSize = pg.getPathCount();
for(int j=0;j String temp = “(“; int size = pg.getPathSize(j); Point pt = pg.getPoint(i); temp+=pt.getX()+””+pt.getY()+”,”;} Point pt = pg.getPoint(0); temp+=pt.getX()+””+pt.getY()+”,”; temp=temp.substring(0,temp.length()-1)+”)”; geoStr +=temp+”,”;} geoStr = geoStr.substring(0, geoStr.length()-1)+”)”;}else //Polyline情況下的生成代碼 if(“POLYLINE”.equals(type.name())){ MultiPath pg = (MultiPath)geometry; geoStr = “LINESTRING”+””; int pathSize = pg.getPathCount(); for(int j=0;j Point pt = pg.getPoint(i); temp+=pt.getX()+””+pt.getY()+”,”;} temp=temp.substring(0,temp.length()-1)+”)”; geoStr +=temp+”,”;} geoStr=geoStr.substring(0,geoStr.length()-1);} 4 結(jié)語 校園植物園系統(tǒng)可以滿足用戶在校園里隨時(shí)隨地學(xué)習(xí)、觀賞植物,有助于提高學(xué)校人文科學(xué)教育。系統(tǒng)中包含了學(xué)校內(nèi)所有植物,植物信息全完善,并且可以在完全離線的情況下使用該系統(tǒng)。同時(shí)系統(tǒng)也提供了每個(gè)植物的好搜百科鏈接,以及微博分享等功能,方便用戶進(jìn)一步全面學(xué)習(xí)植物知識(shí)。 參考文獻(xiàn) [1]蘭思仁,朱里瑩,董建文,等.福建農(nóng)林大學(xué)教學(xué)植物園探析[J].福建林業(yè)科技,2014,44(2):127-131. [2]沈瑩.校園虛擬植物園在教學(xué)中的應(yīng)用[J].現(xiàn)代園藝,2016(2):219-220. [3]王世舉,楊斌,高桂勝,等.移動(dòng)GIS在數(shù)字校園服務(wù)中的應(yīng)用與研究[J].理信息世界,2015,22(3):38-44. [4]李越.基于Android的地質(zhì)災(zāi)害野外調(diào)查信息采集系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)[D].云南:云南大學(xué),2015. [5]聶上森.基于ArcGIS Runtime SDK的外業(yè)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2015. [6]李玲,王慶,王慧青.基于Spatialite輕量級(jí)空間數(shù)據(jù)庫的GIS數(shù)據(jù)管理[J].地理信息世界,2010(4):71-75. [7]張海瑞,吳學(xué)饒,蘭小機(jī).基于ArcGIS for Android野外實(shí)習(xí)數(shù)據(jù)采集與導(dǎo)航系統(tǒng)的實(shí)現(xiàn)[J].測(cè)繪工程,2015,24(3):36-39.