黎曦 黃海虹 張新耐 曾良
【摘 要】本文介紹了為鞏固管護好造林綠化成果,利用GPS、全站儀采集野外定位信息、樹木坐標、胸徑,測定小班面積及區(qū)域,而建立針對性的造林綠化工程的林業(yè)信息平臺系統,以實現綠化工程信息的采集工作在業(yè)務上達到系統、規(guī)范、先進、科學與實用的統一。
【關鍵詞】綠化;開發(fā);數據庫;界面
1 開發(fā)環(huán)境
本系統以Eclipse為開發(fā)平臺,安裝了JDK、ADT、Android SDK等等工具包,以ArcGIS Runtime SDK for Android 10.2為二次開發(fā)工具,集成一系列功能模塊。
1.1 Eclipse
Eclipse是一個開放源代碼的、基于Java的、可擴展的開發(fā)平臺,是框架與服務的集合, 基于擴展點的插件體系結構。 支持多重平臺特性,多種語言,是系統開發(fā)領域中應用最為廣泛的平臺之一。
Eclipse的特點:一實現了真正的可拓展、可配置 ,二支持多重平臺特性,多種語言 ,三文檔生成器javadoc(從源碼注釋中提取文檔)。
1.2 JDK工具包
Java Development Kit是太陽微系統針對Java開發(fā)人員發(fā)布的免費軟件開發(fā)工具包。
JDK的組成: 編譯器javac(由將源程序轉成字節(jié)碼)、打包工具jar(將相關的類文件打包成一個文件)、 文檔生成器javadoc(從源碼注釋中提取文檔)、 查錯工具jdb 、 系統調試組件、 檢測工具Jconsole等。
1.3 Android SDK
Android software development kit 是 Android專屬的軟件開發(fā)工具包。
1.4 ADT工具包
Android Development Tools,在Eclipse編譯IDE環(huán)境中為 Android開發(fā)提供開發(fā)工具的升級或者變更。
1.5 ArcGIS Runtime SDK for Android工具包
該工具包為Esri公司為二次系統開發(fā)者提供的移動應用開發(fā)包,支持iOS、Android、Windows Phone三大主流移動操作系統。 最主要的控件MapView提供了基本的在線離線切片數據的顯示功能,可以直接加載ArcGIS制作的離線切片數據,切片數據中含有基本的投影、空間參考、地理坐標等地理信息,在此基礎上可以實現顯示和導航地圖、查找地址和位置、識別定位GIS特征、測量線和區(qū)域、ArcGIS在線、搜尋并共享地圖資源、采集GIS數據等功能。
2 數據庫簡介
2.1 SQLite
SQLite是一款基于文本的輕型關系型數據庫,占用資源非常低,但是存儲容量足夠大,支持數據庫大小達到2T,處理速度快,支持跨平臺,輸入存儲讀入簡單,能夠使用C、 PHP、Java、C#、Python等很多語言,支持的SQL語句不遜色于其他開源數據庫,最重要的是Android手機中內置SQLite數據庫,為開發(fā)提供了很大便利。
2.2 字段介紹
(1)小班區(qū)域 (_id INTEGER PRIMARY KEY AUTOINCREMENT, Geometry WKT TEXT,QYMC TEXT, OtherInfo TEXT, Area TEXT)
(2)樹木點 (_id INTEGER PRIMARY KEY AUTOINCREMENT, GeometryWKTTEXT, TreeTypeTEXT, TreeHeightText, TreeDBH, OtherInfo TEXT)
(3)攝影點(_id INTEGER PRIMARY KEY AUTOINCREMENT, dataBLOB, longitude TEXT, latitude TEXT, altitudeTEXT, otherinfo TEXT)
(4)用戶(_id INTEGER PRIMARY KEY AUTOINCREMENT, NameTEXT, Password TEXT)。
3 系統功能實現
3.1 界面實現
考慮用戶在不同階段的操作,盡量將所有所需控件展現在界面上的原則進行界面設計,主要分以下三個步驟: 利用Linear Layout對整個手機屏幕進行分割 ;TobHost對所有控件按功能模塊劃分;Fragment按照不同的操作模式顯示結果或顯示控制按鈕 。運用規(guī)范的圖片Button搭建起最終整體的界面框架 。
3.2 功能實現
3.2.1 圖層控制
在圖層控制Fragment中通過getActivity獲取父界面,再通過findViewById方法獲取mapview控件,由mapview的getLayer方法得到對應的切片數據圖層與Graphiclayer圖層,通過圖層的setVisible方法即可實現圖層能見控制功能。
3.2.2 GPS相關功能
(1)定位
通過getSystemService方法可以得到LocationManager,通過LocationManager的requestLocationUpdates方法可以設相應位置變化監(jiān)聽的最小時間間隔和最小距離間隔。在onLocationChanged函數中可獲得當前位置的GPS經緯度信息。
(2)GPS開關控制
通過Locationmanager的removeUpdates方法停止位置變化監(jiān)聽。
3.2.3 采集圖像
(1)拍照
通過getCameraInstance方法得到Camera,通過Camera的autoFocus和takePicture方法可得到自動對焦的影像數據。
通過LocationListener的onLocationChanged方法可得到攝影瞬間的經緯度信息及高程信息。綜合利用平板電腦中各類硬件設備與傳感器即可實現影像及附屬信息的采集。
(2)入庫
通過SQLiteDatabase的getWritableDatabase方法得到可寫數據庫,將相片存成BLOB格式,最終攝影空間位置信息、影像數據以及其他備注信息全部封裝在ContentValues中,調用WriteableDatabase的insert方法即可完成入庫操作。
(3)列表查看
通過SQLiteDatabase的getReadableDatabase方法得到只讀數據庫,通過只讀數據庫的query方法可所有攝影數據的Cursor對象,讀出其中所有的經緯度信息,通過坐標系轉換得到攝影點在mapview中的位置,給予攝影點位PictureMarkerSymbol后生成Graphic,通過GraphicLayer的addGraphic方法即可完成攝影點位的地圖顯示。
(4)還原展示
通過SQLiteDatabase的getReadableDatabase方法得到只讀數據庫,通過攝影點數據記錄的id得到對應數據記錄,將屬性與圖像綁定到對應控件完成顯示。通過SQLiteDatabase的getWritableDatabase方法得到可寫數據庫,通過關鍵字id找到對應數據記錄通過delete語句可完成數據刪除。
3.2.4 切換底圖
運用startActivityForResult方法打開選擇底圖窗體,窗體加載時讀取默認文件下的底圖,將每一個底圖名稱生成一個RadioButton,選擇對應地圖名稱,信息通過setArguments方法傳到地圖窗口生成localTiledLayer并且添加到MapView,完成底圖的切換。
3.2.5 小班區(qū)域與樹木點繪制
GraphicLayer是ArcGIS Runtime SDK for Android中提供給用戶編繪圖形的專用圖層,Graphiclayer中可以繪制任何幾何類型,要想繪制幾何圖形就必須先新建Graphiclayer并加載到MapView中。
(1)繪制
為mapview綁定onSingleTap單擊監(jiān)聽器,單擊屏幕時,記錄點擊點屏幕坐標,通過MapView的tomappoint方法將屏幕坐標轉換為與底圖坐標系投影均相同的地理坐標點結合針對不同的繪制類型生成不同的Simplesymbol生成Graphic并通過addGraphic方法將新生成的Graphic加載到MapView的Graphiclayer完成繪制。
(2)撤銷操作
撤銷一步就刪除Multipoint中最后一個點,然后使用GraphicLayer的UpdataGraphic方法,用編輯后的Multipoint重新生成的圖形更新GraphicLayer中最后一個Graphic就可完成撤銷操作。
(3)完善屬性并入庫
通過startActivityForResult方法打開屬性補充窗口,完善屬性信息后回傳到主窗體,通過SQLiteDatabase的getWritableDatabase獲得事前生成的可寫數據庫,通過Graphic的getAttributeValue方法獲得對應字段的屬性值,然后將Graphic的getGeometry方法得到對應Geometry,再通過自己編寫的GeometryToWKT方法將幾何信息轉化為WKT字符串存儲,最后將WKT以及對應的屬性信息封裝到ContentValues中通過getWritableDatabase的insert方法將所有信息存入SQLite數據庫,最后將可寫數據庫關閉就可完成數據的入庫操作。
(4)屏幕選取
通過GraphicLayer的getGraphicIDs方法獲取當前點擊位置所有在一定容差內的Graphic對象。
(5)屬性編輯
通過通過Fragment的setArguments方法傳到對應點編輯Fragment,Fragment內可以完成編輯刪除操作。
(6)數據瀏覽
利用ListFragment布局用于數據顯示,通過getReadableDatabase方法獲得只讀數據庫,通過只讀數據庫的query方法獲取數據集合Cursor,利用SimpleCursorAdapter生成適配器,將適配器利用setListAdapter方法即可實現數據顯示。
4 系統優(yōu)點
4.1 所有數據均實時存儲到數據庫,即使程序出現BUG數據不會丟失
4.2 繪制保存標記操作簡便,將盡量多的操作從按鈕中解放到手勢操作
4.3 自動分類信息統計,自動讀取當前數據庫中數據,分類并進行數據統計
[責任編輯:朱麗娜]