陳長軍,陳 源
(1.中南財(cái)經(jīng)政法大學(xué)外國語學(xué)院,湖北 武漢 430073;2.中國地質(zhì)大學(xué)(武漢)遠(yuǎn)程與繼續(xù)教育學(xué)院,湖北 武漢 430074)
地質(zhì)災(zāi)害是指因地質(zhì)動(dòng)力活動(dòng)和環(huán)境異常變化形成的不良地質(zhì)現(xiàn)象,如滑坡、地震等[1]。隨著人類活動(dòng)范圍越來越大,同時(shí)伴隨地球地質(zhì)的變化,其帶來的地質(zhì)災(zāi)害也逐漸引起人們重視。由于地質(zhì)災(zāi)害具有不確定性、破壞性強(qiáng)等特點(diǎn),已成為影響社會(huì)經(jīng)濟(jì)發(fā)展的重要因素之一,嚴(yán)重危害著人類生命與財(cái)產(chǎn)安全[2]。
根據(jù)我國地質(zhì)災(zāi)害信息化建設(shè)的需要,利用計(jì)算機(jī)技術(shù)等對(duì)地質(zhì)災(zāi)害地區(qū)數(shù)據(jù)信息進(jìn)行統(tǒng)計(jì)與信息化處理,使人們能夠很方便地查詢地質(zhì)災(zāi)害點(diǎn)相關(guān)信息已經(jīng)成為必要手段[3]。隨著地質(zhì)災(zāi)害信息化的不斷發(fā)展,已誕生了許多研究成果,如地理信息系統(tǒng)(Geographic Information Sys?tem,GIS)等[4]。高德地圖API(應(yīng)用程序編程接口)具備免費(fèi)且操作性強(qiáng)的特點(diǎn),被廣泛用于開發(fā)基于地理位置信息的應(yīng)用軟件與信息管理系統(tǒng)[5]。
隨著互聯(lián)網(wǎng)的不斷發(fā)展,智能手機(jī)作為信息傳輸?shù)妮d體已融入到人們的日常生活中,移動(dòng)端Android 系統(tǒng)所占市場(chǎng)份額不斷擴(kuò)大,因此可利用Android 平臺(tái)進(jìn)行應(yīng)用軟件推廣[6]。在Eclipse 開發(fā)環(huán)境下,利用Java 作為開發(fā)語言,以簡(jiǎn)潔、形象、生動(dòng)的形式展現(xiàn)地質(zhì)災(zāi)害點(diǎn)情況,使地理位置相關(guān)信息可視化,并實(shí)現(xiàn)地質(zhì)災(zāi)害點(diǎn)標(biāo)注、信息查詢、自我定位、地圖搜索與路線規(guī)劃等功能[7]。同時(shí),通過設(shè)計(jì)與實(shí)現(xiàn)UI 布局,實(shí)現(xiàn)友好的用戶使用界面。
通過查閱相關(guān)文獻(xiàn)了解到,隨著GIS 的廣泛應(yīng)用,一些系統(tǒng)和APP 均開始用于地質(zhì)災(zāi)害信息調(diào)查[8-10]。本文總結(jié)了相關(guān)系統(tǒng)和APP 在技術(shù)與功能上的優(yōu)缺點(diǎn),并結(jié)合實(shí)際需求進(jìn)行改進(jìn),設(shè)計(jì)基于Android 手機(jī)客戶端的地質(zhì)災(zāi)害點(diǎn)位置導(dǎo)航與信息查詢應(yīng)用軟件。同時(shí),在實(shí)現(xiàn)過程中對(duì)系統(tǒng)數(shù)據(jù)量及oracle 數(shù)據(jù)庫特性進(jìn)行分析,利用遠(yuǎn)程加解密方式獲取地質(zhì)災(zāi)害點(diǎn)的地質(zhì)災(zāi)害數(shù)據(jù),采取本地SQLite 數(shù)據(jù)庫用作緩存,從而提高了數(shù)據(jù)獲取速度,且降低了軟件開發(fā)成本。
圖1-圖3 給出了地質(zhì)災(zāi)害點(diǎn)位置導(dǎo)航與信息查詢應(yīng)用軟件的整體技術(shù)路線設(shè)計(jì),分別為基礎(chǔ)理論研究及軟件分析與設(shè)計(jì)、軟件開發(fā)與實(shí)現(xiàn)、軟件測(cè)試分析。
Fig.1 Basic theoretical research and software analysis and design圖1 基礎(chǔ)理論研究及軟件分析與設(shè)計(jì)
Fig.2 Software development and implementation圖2 軟件開發(fā)與實(shí)現(xiàn)
Fig.3 Software test analysis圖3 軟件測(cè)試分析
本文使用三層軟件架構(gòu)模型,包括:用戶界面層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層[11]。在三層架構(gòu)模型的基礎(chǔ)上進(jìn)行Android 應(yīng)用軟件開發(fā),既保證了安全性與穩(wěn)定性,又提升了用戶對(duì)軟件的使用體驗(yàn)??蛻舳思軜?gòu)設(shè)計(jì)如圖4 所示。
軟件設(shè)計(jì)主要圍繞注冊(cè)/登錄、地圖瀏覽、自我定位、地圖搜索、地質(zhì)災(zāi)害點(diǎn)標(biāo)注與信息查詢、出行路線規(guī)劃等功能模塊的需求展開??蛻舳擞脩粲美鐖D5 所示。
該軟件具有龐大的地質(zhì)災(zāi)害點(diǎn)數(shù)據(jù),因此不可能將其存儲(chǔ)在本地?cái)?shù)據(jù)庫,而是需要通過遠(yuǎn)程服務(wù)器進(jìn)行讀取,本地?cái)?shù)據(jù)庫僅用作數(shù)據(jù)緩存。利用輕量級(jí)SQLite 數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù),僅占用很少的Android 系統(tǒng)內(nèi)存。在實(shí)際軟件開發(fā)中,SQLite 可保障數(shù)據(jù)的全面性與安全性,將其用作本地?cái)?shù)據(jù)庫緩存可加快數(shù)據(jù)加載速度[12]。
依據(jù)地質(zhì)災(zāi)害點(diǎn)位置導(dǎo)航與信息查詢應(yīng)用軟件的功能需求,其本地?cái)?shù)據(jù)庫由兩部分組成,其中一部分是管理員表,管理員可輸入賬號(hào)密碼登錄進(jìn)入系統(tǒng)。管理員(ad?min)字段主表如表1 所示。
Fig.4 Client architecture design圖4 客戶端架構(gòu)設(shè)計(jì)
Fig.5 Client user case圖5 客戶端用戶用例
Table 1 Admin field master table表1 管理員(admin)字段主表
本地?cái)?shù)據(jù)庫中的另一部分涵蓋了若干地質(zhì)災(zāi)害點(diǎn)的災(zāi)害信息表,根據(jù)實(shí)際需要將地質(zhì)災(zāi)害點(diǎn)的地質(zhì)災(zāi)害信息分成4 個(gè)不同種類,分別為斜坡(XP)字段主表、崩塌(BT)字段主表、滑坡(HP)字段主表與泥石流(NS)字段主表。這里以斜坡字段主表(見表2)與崩塌字段主表(見表3)為例,滑坡、泥石流字段主表與之類似。
(1)Android 系統(tǒng)應(yīng)用軟件開發(fā)環(huán)境搭建。環(huán)境配置如下:一是安裝Eclipse,二是安裝Android SDK,三是安裝ADT 插件[13]。
Table 2 Slope field(XP)master table表2 斜坡(XP)字段主表
Table 3 Collapse field(BT)master table表3 崩塌(BT)字段主表
(2)配置高德地圖API。首先申請(qǐng)高德地圖開發(fā)者密鑰(key),然后進(jìn)行高德SDK 配置,在高德地圖中封裝了一些常用功能,如位置導(dǎo)航、自我定位、地圖搜索、路徑規(guī)劃等。軟件開發(fā)人員在編寫Android 應(yīng)用程序過程中只需調(diào)用高德地圖API 提供的一些特定接口即可實(shí)現(xiàn)軟件所需的特定功能[14]。
(1)注冊(cè)與登錄。注冊(cè)/登錄界面設(shè)計(jì)原則為清晰且易操作,并在軟件主界面顯示軟件主要功能,如圖6 所示。
Fig.6 Register/login/main interface menu item圖6 注冊(cè)/登錄/主界面菜單項(xiàng)
(2)地質(zhì)災(zāi)害點(diǎn)標(biāo)注與信息查詢。地質(zhì)災(zāi)害點(diǎn)位置導(dǎo)航與信息查詢應(yīng)用軟件的標(biāo)記功能需要根據(jù)經(jīng)度和緯度坐標(biāo)在高德地圖上進(jìn)行標(biāo)記,根據(jù)項(xiàng)目名稱、地理位置、經(jīng)度及緯度添加相關(guān)地質(zhì)災(zāi)害信息[15]。地質(zhì)災(zāi)害信息查詢功能設(shè)置崩塌、滑坡、斜坡、泥石流4 大模塊,點(diǎn)擊標(biāo)注點(diǎn)時(shí)彈出該標(biāo)注點(diǎn)的相關(guān)地質(zhì)災(zāi)害信息,如圖7 所示。
Fig.7 Geological disaster information query and labeling圖7 地質(zhì)災(zāi)害信息查詢與標(biāo)注
(3)自我定位。設(shè)置定位返回按鈕,在代碼實(shí)現(xiàn)上需要:設(shè)置定位回調(diào)監(jiān)聽函數(shù),利用讀取到的經(jīng)緯度信息返回自己所在位置;設(shè)置定位監(jiān)聽函數(shù),在自己所在位置進(jìn)行數(shù)據(jù)記錄;設(shè)置定位成功回調(diào)函數(shù),在自我定位功能實(shí)現(xiàn)后停止監(jiān)聽。
(4)地圖搜索。用戶輸入相應(yīng)目標(biāo)地址的關(guān)鍵詞,即可在地圖上顯示搜索的目標(biāo)地址及相應(yīng)經(jīng)緯度坐標(biāo)。通過地址查詢經(jīng)緯度是指用戶輸入地址名稱,程序通過前向地理編碼獲取與該位置對(duì)應(yīng)的經(jīng)度與緯度[16]。
(5)路線規(guī)劃。路線規(guī)劃功能模塊提供3 種路線規(guī)劃方法:步行路線規(guī)劃、騎行路線規(guī)劃與駕駛路線規(guī)劃。根據(jù)起點(diǎn)、終點(diǎn)及數(shù)據(jù)庫中的地質(zhì)災(zāi)害點(diǎn)信息,為人們規(guī)劃合理的出行路線,在路線經(jīng)過的地方可看到相應(yīng)地質(zhì)災(zāi)害點(diǎn)。通過該功能模塊的設(shè)計(jì),可保證人們出行安全,同時(shí)提高出行效率。
(6)UI 設(shè)計(jì)。Android 有5 種布局模式:線性、相對(duì)、絕對(duì)、表格與單幀,通過不同布局模式可輕松實(shí)現(xiàn)美觀、實(shí)用的UI 界面[17]。
(7)地質(zhì)災(zāi)害點(diǎn)數(shù)據(jù)獲取。通過使用Internet 訪問服務(wù)器端數(shù)據(jù)庫接口獲取地質(zhì)災(zāi)害點(diǎn)的地質(zhì)災(zāi)害數(shù)據(jù)信息。移動(dòng)終端訪問服務(wù)器端接口并以參數(shù)形式提交地質(zhì)災(zāi)害點(diǎn)數(shù)據(jù)信息與身份識(shí)別碼,用于驗(yàn)證上傳數(shù)據(jù)的合法性。具體操作如下:Android 客戶端向服務(wù)器端發(fā)出搜索請(qǐng)求,服務(wù)器端驗(yàn)證身份,若身份匹配則返回相關(guān)的地質(zhì)災(zāi)害點(diǎn)數(shù)據(jù)。返回的地質(zhì)災(zāi)害數(shù)據(jù)用json 進(jìn)行封裝,Android 端接收到數(shù)據(jù)后解析json 數(shù)據(jù)串,最后把相關(guān)的地質(zhì)災(zāi)害點(diǎn)數(shù)據(jù)展現(xiàn)在地質(zhì)災(zāi)害信息查詢功能模塊上[18]。Android 端通過oracle 的jdbc 驅(qū)動(dòng)程序直接訪問oracle 數(shù)據(jù)庫的客戶端。由于地質(zhì)災(zāi)害點(diǎn)位置導(dǎo)航與信息查詢應(yīng)用軟件連接的是遠(yuǎn)程oracle 數(shù)據(jù)庫,因此使用時(shí)必須連接互聯(lián)網(wǎng),從而將地質(zhì)災(zāi)害點(diǎn)相關(guān)數(shù)據(jù)信息表讀入本地?cái)?shù)據(jù)庫。數(shù)據(jù)獲取界面如圖8 所示。
(8)數(shù)據(jù)加密與遠(yuǎn)程傳輸。應(yīng)用軟件在遠(yuǎn)程調(diào)取數(shù)據(jù)時(shí)考慮到數(shù)據(jù)信息易發(fā)生泄露,因此在軟件開發(fā)過程中對(duì)數(shù)據(jù)獲取功能添加了加解密措施。在實(shí)際應(yīng)用過程中,應(yīng)用較多的是RSA 加密技術(shù)。RSA 算法是一種常用的非對(duì)稱加密算法。為確保信息數(shù)據(jù)的安全性,需要更安全的公鑰加密技術(shù),因此AES 公鑰加密算法應(yīng)運(yùn)而生,AES 算法屬于對(duì)稱加密算法[19]。
在使用對(duì)稱加密算法AES 之前,為了不讓AES 的密鑰被外人獲取,本文首先利用RSA 加密算法對(duì)其公有密鑰進(jìn)行一次深度加密,使用時(shí)通過RSA 解密出其公有密鑰,之后再進(jìn)行數(shù)據(jù)傳輸,如此才能保證數(shù)據(jù)的安全性[20]。
地質(zhì)災(zāi)害數(shù)據(jù)在傳輸過程中可使用技術(shù)手段將其轉(zhuǎn)換成為字符串,對(duì)于字符串的操作則簡(jiǎn)單的多。在數(shù)據(jù)傳輸之前,對(duì)數(shù)據(jù)發(fā)送方進(jìn)行身份安全驗(yàn)證,安全驗(yàn)證通過之后方可調(diào)取數(shù)據(jù)庫的數(shù)據(jù),該操作有點(diǎn)類似于網(wǎng)絡(luò)安全通信TCP/IP 協(xié)議中的“三次握手機(jī)制”。
Fig.8 Data acquisition interface圖8 數(shù)據(jù)獲取界面
本文結(jié)合高德地圖API 及Android 開發(fā)技術(shù)設(shè)計(jì)一款地質(zhì)災(zāi)害點(diǎn)位置導(dǎo)航與信息查詢應(yīng)用軟件,通過高德地圖API 嵌入地質(zhì)災(zāi)害信息,實(shí)現(xiàn)地質(zhì)災(zāi)害數(shù)據(jù)的信息化,同時(shí)利用手機(jī)端進(jìn)行推廣,實(shí)現(xiàn)對(duì)地質(zhì)災(zāi)害的監(jiān)控與預(yù)防。隨著GIS 技術(shù)日趨成熟,高德地圖API 與數(shù)據(jù)庫的結(jié)合將廣泛應(yīng)用于地理信息領(lǐng)域。但該軟件還存在不足:一是在軟件實(shí)現(xiàn)過程中,相關(guān)算法尚有較大的改進(jìn)空間,可作進(jìn)一步研究,例如如何能快速查詢地質(zhì)災(zāi)害點(diǎn)相關(guān)數(shù)據(jù),在位置導(dǎo)航過程中如何能更加快速、精確、合理地規(guī)劃出行路線等;二是智能手機(jī)移動(dòng)端還可開發(fā)支持跨平臺(tái)iOS 系統(tǒng)的版本,使iPhone 用戶也可使用該軟件。后續(xù)將優(yōu)化相關(guān)算法并探索iOS 系統(tǒng)版本,同時(shí)研究如何結(jié)合衛(wèi)星攝像技術(shù)將實(shí)時(shí)地質(zhì)災(zāi)害數(shù)據(jù)上傳到客戶端實(shí)現(xiàn)監(jiān)測(cè)預(yù)警,以更好地防患于未然。