摘 要: 隨著智能手機的普及,人們對信息的要求越來越高,現有的警情通報存在實時獲取困難等問題。為解決這些問題,本文提出了一種基于眾包模式的移動警情系統,移動端采用ArcGIS Runtime SDK for Android接口進行二次開發。移動端通過無線網絡實現與服務器端的數據通信以及移動端之間的警情信息共享,最終達到“人人為警”的目的。
關鍵詞: 眾包模式;Android;ArcGIS Server;移動警情
0 引言
眾包是2006年由美國《連線》雜志作家、資深編輯杰夫·豪(Jeff Howe)首次提出的[1]。眾包模式是指能吸引公眾的參與,收集公眾建議,吸納集體智慧。眾包是一種分布式的問題解決和生產模式。在地理空間行業,眾包系統是一種由用戶貢獻并且是自下而上的自發式地理信息[2],其數據是由大量非專業人員志愿獲取并通過互聯網向大眾或相關機構提供的一種開放地理空間數據[3-4]。代表性的眾包地理數據有GPS路線數據(如OpenStreetMap,簡稱OSM)、用戶協作標注編輯的地圖數據(如Wikimapia)、各類社交網站數據(如Twitter、Facebook、微博等)、街旁用戶簽到的興趣點數據等[5]。通過分析現有的警情通報方式[6],發現存在警情信息無法實時獲取、地理位置無法直觀體現等問題。為解決這些問題,本文把警情信息作為一種眾包地理數據,結合眾包模式和移動應用的特點,設計和實現了移動警情系統。
1 建設目標
移動警情系統的建設需要綜合警情通報的業務特點,結合LBS理論、計算機網絡、無線通信、數據庫等技術構建基于眾包模式的移動警情系統,為警情信息的獲取和共享提供一個全面的解決方案。具體包括以下五個方面:(1)提供電子地圖服務。(2)提供移動位置服務。(3)警情信息采集服務。(4)提供警情信息提醒服務。(5)應急路線規劃服務。
2 系統設計
2.1 移動警情系統網絡拓撲架構
移動警情系統的網絡拓撲結構如圖1所示。
2.2 數據管理和交互
移動警情系統的數據管理分為移動端的數據管理和服務器端的數據管理兩個部分。本系統移動端采用輕量級SQLite數據庫存儲和管理數據。服務器端采用MySQL數據庫來模擬后臺數據,并進行數據的相關操作。基本數據分為3類:警情信息、位置信息、文檔和附件,如表1所示。警情數據庫表設計和字段說明如表2所示。
系統數據交互過程是:首先服務器端實現相關的業務數據的邏輯處理,比如相關信息數據的讀取、更新、導入和修改,以及把數據庫中的數據系列化為xml或json格式。然后移動終端通過網絡連接服務器,在數據庫中進行數據的查詢、存儲或修改,最后將所需數據返回給移動終端,完成數據交互。
2.3 功能設計
功能設計如圖2所示。
3 關鍵模塊實現
本系統以ArcGIS Server和Android為開發平臺,在Eclipse開發環境中,針對移動警情的業務流程,使用Java語言基于ArcGIS Runtime SDK for Android的接口進行開發。系統后臺空間數據服務采用ESRI的ArcGIS Server平臺發布基礎地形服務,并使用ArcGIS Server切片緩存技術對基礎地形服務進行切片,實現移動端對空間數據的快速訪問。
3.1 地圖服務
地圖服務主要實現三個功能:電子地圖功能、定位功能、地址查詢功能,具體使用到的方法如圖3所示。
(1)電子地圖功能
電子地圖功能是實現放大、縮小、平移,以及手觸摸式的放大縮小、衛星/交通圖顯示等功能。主要調用zoomin(放大)、zoomout(縮小)、zoomToScale(地圖級別設置)、getRotationAngle(地圖旋轉)和setVisble(不同圖層顯示)五個方法。
(2)定位功能
定位功能就是用戶通過移動設備獲取位置信息(經緯度)并在地圖上展示的功能。系統主要通過兩種方式獲取到定位服務,一是通過點擊“定位”按鈕觸發定位事件,二是通過移動設備的位置更新觸發定位事件。具體為:MapView通過調用getLocationService方法獲取一個LocationService定位服務,通過這個LocationService定位服務可以開啟/關閉GPS,設置一些有用的屬性。同時通過setLocationListener方法來監聽位置的變化。
(3)地址查詢
地址查詢是用戶通過地址名(物理地址名)獲取到位置信息(經緯度)并在地圖上渲染的過程。地址查詢功能的實現過程是實現searchAddress和handleSearchAddress兩個方法,其中handleSearchAddress方法會通過調用ArcGIS Server Geocoding Services實現地理編碼功能,獲取到位置信息,并最終在地圖上渲染。
3.2 警情報告服務
警情報告是用戶采集警情,并在地圖上實時標注的功能。要使用到一個客戶端的要素圖層GraphicsLayer,以及PictureMarker Symbol這個符號類。GraphicsLayer是ArcGIS Runtime for Android中比較重要的圖層類型,也是使用最為頻繁的一個。GraphicsLayer可以包含一個或多個Graphic對象,查詢的返回結果和標注的Graphic數據都要通過它呈現。警情報告主要用到圖4所示的方法。
圖4中,首先調用centerAt()方法在地圖上繪制定位點的位置信息;其次通過getDrawable()方法,獲取警情對應的圖標資源;最后通過addGraphic()方法將警情標注到地圖上,同時與服務器進行同步。
3.3 警情提醒服務
警情提醒服務實現附近警情信息推送,當用戶啟用應用并開啟定位設備時,即可使用警情信息的推送服務。用于限定并進行警情信息過濾的條件主要有三個:經度、緯度、半徑。將此三個要素作為過濾方法getEventInfo()的輸入參數,并將符合條件的警情信息作為輸出參數,即:
public static String[][]getEventInfo(double lat, double lon,int radius){};
通過三個規則限定條件,從服務器獲取警情信息,并將信息置于類型為JOSNArray的stationJsonArray變量中。將stationJsonArray變量的長度作為info數組的長度,并將stationJsonArray變量中所包含的內容一一賦值給info數組,并作為getEventInfo()方法的返回值。
3.4 應急路線規劃服務
應急路線規劃功能是通過用戶輸入出發地和目的地即避難場所,進而由服務器規劃最佳前往路線的過程。主要通過arcgisonline上已經發布的網絡分析服務實現。執行路徑分析可以通過RoutingTask類的solve方法來進行,通過給slove方法傳遞RoutingParameters類型的參數,即可以實現最短路徑的查找。
4 結束語
隨著社會的發展、科技的進步,人們對信息的需求進一步提高,特別在我國這樣一個人口數量龐大的國家,公眾的生活安全越來越重要。本文設計實現的系統具有地圖服務、警情報告、警情提醒服務、應急路徑規劃服務等功能。系統達到了“人人為警”的設計目標,并具有良好的體驗效果。
參考文獻
[1] HOWE J. The rise of crowdsourcing[J]. Wired magazine, 2006,14(6):1-4.
[2] 付品德,孫九林.WebGIS原理與應用[M].北京:高等教育出版社,2012.
[3] HEIPKE C. Crowdsourcing geospatial data[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2010,65(6): 550-557.
[4] GILES J. Wikipedia rival calls in the experts[J]. Nature, 2006,443(7111):493-493.
[5] 單杰,秦昆,黃長青,等.眾源地理數據處理與分析方法探討[J].武漢大學學報(信息科學版),2014(4):390-396.
[6] 彭擁兵.論警情通報制度的價值[J].福建公安高等專科學校學報,2005(2):30-32.