徐鋒 吳琰 劉音 淮南師范學(xué)院 電子工程學(xué)院
在公用事業(yè)、城市管理、社會治安、交通物流、大型工礦企業(yè)等部門行業(yè)中存在大量的例行或臨時的巡檢工作需求。人工手寫工作簿巡檢、直接標(biāo)記法、基于條形識別法等傳統(tǒng)巡檢方式存在諸多問題;同時傳統(tǒng)的巡檢平臺較專一,開發(fā)維護成本高,重復(fù)勞動多,不利于推廣,還存在無法現(xiàn)場指導(dǎo)、管理成本高等缺點。因此,傳統(tǒng)巡檢方式在管理、巡查和考評上已不能滿足需求,GIS 可靈活顯示管網(wǎng)、設(shè)備以及各類專業(yè)圖層,提供管理、分析、綜合和查詢空間數(shù)據(jù)的智能化手段,提高了平臺的決策科學(xué)性、可視化和信息化程度 。
針對傳統(tǒng)巡檢方式存在的問題,結(jié)合移動GIS 應(yīng)用系統(tǒng)的關(guān)鍵技術(shù),提出一種基于Android 和BaiduMap(百度地圖)的訂單式移動巡檢系統(tǒng)的設(shè)計方案,系統(tǒng)包括移動用戶端App 和基于B/S 架構(gòu)的后臺管理端兩部分。用戶端通過調(diào)用百度地圖API 實現(xiàn)GIS 定位與路徑導(dǎo)航功能,接收業(yè)務(wù)訂單,支持現(xiàn)場完成巡檢業(yè)務(wù)報單并上傳;后臺管理端通過SQL 數(shù)據(jù)庫對業(yè)務(wù)數(shù)據(jù)進行存儲與管理,制定工作計劃,發(fā)布巡檢業(yè)務(wù)訂單,推送公共消息通告。系統(tǒng)旨在幫助有巡檢工作需求的行業(yè)部門靈活布置規(guī)劃巡檢任務(wù),加強對巡檢工作的把控,增強數(shù)據(jù)分析,提高巡檢工作效率。
Android 系統(tǒng)使用Linux 內(nèi)核,Android 應(yīng)用程序的開發(fā)有兩種方式:程序為Java應(yīng)用,所有的程序軟件完全應(yīng)用于Dalvik虛擬機;使用JNI 原生庫的Java 應(yīng)用程序。Android 應(yīng)用程序框架由Java服務(wù)、應(yīng)用程序編程接口、公共運行庫、原生庫以及原生服務(wù)等組成。Android 系統(tǒng)架構(gòu)大致可分為四層,分別包括底層的Linux 內(nèi)核層、系統(tǒng)運行庫層、應(yīng)用框架層,以及上層的應(yīng)用層。
百度地圖Android 版SDK 為基于移動客戶端開發(fā)LBS 應(yīng)用提供基礎(chǔ)定位能力,支持Android1.5 以及以上設(shè)備,使用百度Android定位SDK 必須注冊GPS 和網(wǎng)絡(luò)使用權(quán)限。定位SDK 采用GPS、基站、Wi-Fi 信號混合定位模式返回當(dāng)前所處的位置信息,而反地理編碼功能是解析當(dāng)前所處的位置坐標(biāo),獲得詳細的地址描述信息。定位SDK 支持多樣化服務(wù)與定位策略,用戶可通過設(shè)置不同的定位時間間隔、選擇不同的定位服務(wù)模式、定制不同的定位結(jié)果信息來滿足自身需求。
移動GIS 應(yīng)用系統(tǒng)可以利用目前的普適性數(shù)據(jù)庫系統(tǒng),普適性數(shù)據(jù)庫包括PostgreSQL、Oracle、 Microsoft SQL Server 等。Microsoft SQL Server 是由Microsoft 開發(fā)的一款數(shù)據(jù)庫,如今其應(yīng)用范圍十分廣泛,最新版本為SQL Server 2017,增加了數(shù)據(jù)庫引擎新功能(數(shù)據(jù)保護、訪問控 制、訪問監(jiān)測)、提高了Linux 版本的安全性、提升了高可用性和災(zāi)害恢復(fù)能力、 增強了自適應(yīng)查詢處理功能等等,該數(shù)據(jù)庫支持C、VB、ASP、Java、JSP、PHP 等多種計算機語言通過接口對其進行訪問。
IIS(Internet Information Services)是Microsoft 公司的服務(wù)器軟件。IIS 是隨Windows 操作系統(tǒng)捆綁發(fā)行的,IIS 在Windows Server上可以免費使用,IIS 與Windows 平臺緊密結(jié)合,支持HTML、ASP、ASP.NET、JSP 等。
基于簡單有效、友好易用的設(shè)計目的,系統(tǒng)的總體框架設(shè)計如圖1 所示。表現(xiàn)層包括移動用戶端和基于B/S 架構(gòu)的巡檢管理端;GIS 服務(wù)層和Web 服務(wù)器為應(yīng)用層,管理端 應(yīng)用Web 服務(wù)器通過Web 瀏覽器和 Web Services 發(fā)送和接受數(shù)據(jù),而移動用戶端通過GIS 服務(wù)層獲取位置定位與路徑導(dǎo)航功能;SQL Server 業(yè)務(wù)數(shù)據(jù)庫為數(shù)據(jù)層,提供相應(yīng)的空間和業(yè)務(wù)數(shù)據(jù)存儲與管理服務(wù)。
圖1 系統(tǒng)總體框架
移動用戶端是由巡檢人使用的基于Android 平臺的客戶端APP,開發(fā)編程語言為Java,。客戶端功能模塊圖如圖2 所示。
圖2 移動用戶端功能模塊
(1)定位模塊包括當(dāng)前位置定位、目標(biāo)位置定位、路徑查詢與導(dǎo)航等功能。通過調(diào)用百度地圖API 在App 訂單業(yè)務(wù)的工作界面上顯示地圖,對當(dāng)前或目標(biāo)位置進行定位與導(dǎo)航,默認比例尺為200 米,默認中心點為使用者當(dāng)前位置。
(2)業(yè)務(wù)模塊包括業(yè)務(wù)訂單和業(yè)務(wù)報單兩部分。管理端向特定用戶發(fā)送業(yè)務(wù)訂單文件,用戶點擊打開訂單,通過點擊訂單中地圖界面的目標(biāo)位置氣泡標(biāo)識即可進行路徑規(guī)劃與導(dǎo)航;業(yè)務(wù)報單內(nèi)容包括經(jīng)緯度地址信息、現(xiàn)場業(yè)務(wù)情況說明包括照片、視頻、文字等信息,報單確認生成后上傳并存儲在管理端服務(wù)器的關(guān)系數(shù)據(jù)庫中。
(3)消息模塊包括系統(tǒng)動態(tài)、部門通知公告等功能。管理員在服務(wù)器后臺管理端可以新建、編輯、推送相關(guān)公共信息;移動用戶端在工作主頁界面以標(biāo)題循環(huán)移動的形式展現(xiàn),點擊標(biāo)題進入相應(yīng)消息界面。
其中移動用戶端業(yè)務(wù)功能模塊中的業(yè)務(wù)報單工作流程如圖3 所示,移動端用戶通過點擊業(yè)務(wù)訂單界面的“執(zhí)行”按鍵進入業(yè)務(wù)報單界面,點擊拍攝或錄像按鍵后調(diào)用移動端設(shè)備(手機)的相機進行拍照或攝像,拍攝完成后進入編輯預(yù)覽界面,然后在完成文字信息的錄入編輯后,點擊“確認”按鍵合并圖像和文字數(shù)據(jù),生成可視化報單上傳至管理端服務(wù)器。
圖3 業(yè)務(wù)報單工作流程
圖4 巡檢管理端功能模塊
系統(tǒng)管理端服務(wù)器基于B/S 架構(gòu),前端采用HTML5+JavaScript 實現(xiàn),后臺數(shù)據(jù)庫為Microsoft SQL Server 2012。前端通過HTML 視圖顯示和操作,使用HTML5 WebSocket技術(shù)向移動用戶端實時推送消息,后臺通過Json 數(shù)據(jù)向移動客戶端返回相關(guān)請求數(shù)據(jù)。
管理端有業(yè)務(wù)管理、消息管理、用戶管理3 個主要功能, 如圖4 所示,各功能模塊分別包含對各自管理對象的創(chuàng)建、修改、刪除、發(fā)送/接收、保存等操作功能。
系統(tǒng)數(shù)據(jù)模型根據(jù)需求分析包含以下4 個實體:用戶(巡檢員/管理員)、業(yè)務(wù)訂單、業(yè)務(wù)報單、消息。客戶端E-R 關(guān)系圖如圖5 所示,其中用戶(巡檢員)實體的屬性包括工號、姓名、手機號、密碼等;業(yè)務(wù)報單實體的屬性包括報單編號、用戶工號、經(jīng)緯度、報單類型、報單名稱、報單內(nèi)容等。
圖 5 客戶端E-R 圖
表1 業(yè)務(wù)報單數(shù)據(jù)表
數(shù)據(jù)字典(Data dictionary)是指用特定的格式記錄數(shù)據(jù)的每個屬性信息,數(shù)據(jù)字典提供了信息管理系統(tǒng)所必需的數(shù)據(jù)元素和基本信息定義,提供了單個數(shù)據(jù)元素所包含的屬性結(jié)構(gòu),每個數(shù)據(jù)元素包括名稱、定義、所屬類名稱、數(shù)據(jù)類型、有效值范圍等,并以字典順序?qū)⑺麄兘M織起來,使用戶和分析員對所有的輸入、輸出、存儲成分和中間計算(處理)有共同的理解。根據(jù)本系統(tǒng)需求分析及E-R 圖設(shè)計,系統(tǒng)數(shù)據(jù)庫包括Users(用戶)、News(消息)、Order(業(yè)務(wù)訂單)和Report(業(yè)務(wù)報單)等4 張數(shù)據(jù)表,其中業(yè)務(wù)報單數(shù)據(jù)表如表1 所示。
系統(tǒng)平臺定義了3 種用戶及權(quán)限,系統(tǒng)管理員負責(zé)系統(tǒng)兩端的安全運行及維護升級;巡檢管理員通過服務(wù)器管理端進行消息推送、業(yè)務(wù)訂單發(fā)布、業(yè)務(wù)數(shù)據(jù)庫管理與分析等操作;巡檢員通過登錄移動用戶端的App 接收訂單,業(yè)務(wù)訂單界面如圖6 所示,在巡檢現(xiàn)場完成可視化報單并上傳管理端服務(wù)器。
圖6 業(yè)務(wù)訂單界面
圖 7 目標(biāo)位置定位界面
圖8 業(yè)務(wù)報單界面
地圖定位功能界面如圖7 所示,程序模塊采用Android 的Fragment 類來實現(xiàn)。首先初始化該模塊Fragment 的布局,導(dǎo)入baidumapapi.jar 包,通過新建initMapView()方法用于顯示地圖及定位,部分關(guān)鍵代碼如下:
...
myMapView = (MapView) fi ndViewById(R.id.myMapView);
myL o c at ionO verL ay = new MyL o c at ion(t h i s,myMapView);
myMapView.getOverlays().add(myLocationOverLay);//監(jiān)聽我的位置
myLocatListener = new LocationListener() {
public void onLocationChanged(Location location) {
if(location != null){
mylon g t it u d e=(i nt)(lo c at ion.getLatitude()*(1E6));
m y l a t i t u d e=(i n t)(l o c a t i o n.getLongitude()*(1E6));
P l a c e P o i n t p d = n e w PlacePoint(mylongtitude, mylatitude);
myPlacePoint = pd;
m M apView.getCont rol ler().animateTo(pd);
}
}
};
...
在業(yè)務(wù)報單模塊ReportFragment 類的onCreate()方法中設(shè)置文本域、拍照/錄像、報送等三個主要按鍵的監(jiān)聽動作,拍攝功能通過openCamera()方法響應(yīng)并實現(xiàn),其中設(shè)置拍照按鍵監(jiān)聽部分代碼如下:
takePhoto.setOnClickListener(new View.OnClickListener()
{
Public void onClick(View v){
openCamera(getActivity());}}移動用戶端通過使用Okhttp3 中的MultipartBody 插件來實現(xiàn)業(yè)務(wù)報單的網(wǎng)絡(luò)上傳,部分關(guān)鍵代碼如下:
...
OkHttpClient okHttpClient = new OkHttpClient();
MultipartBody.Builder requestBody=
new MultipartBody.Builder().setType(MultipartBody.FORM);
RequestBody.addFormDataPart(“UserId”,String.valueOf(userId));
…RequestBody.addFormDataPart(“ReportContent”,“Rep ort”);
If(tempFile.length()>0) {
RequestBody body=RequestBody.create(MediaType.parse(“image/*”),tempFile);
String filename=tempFile.getName();
requestBody.addFormDataPart(“ReportFile”,filename,bo dy);
};
Request request=new Request.Builder().url(“http://www.xjptcs.cs1/check/report”)
.post(resquestBody.build().tag(getContext()).build();
...
在用戶端的業(yè)務(wù)報單界面測試了現(xiàn)場拍攝、文本編輯、報單上傳等功能,如圖8 所示,報單上傳后能夠返回相關(guān)提示,后臺服務(wù)器接收更新后對上傳數(shù)據(jù)進行入庫管理。
針對傳統(tǒng)巡檢方式存在的問題,研究了移動GIS 應(yīng)用相關(guān)技術(shù),引入訂單式工作流程理念,設(shè)計了移動巡檢系統(tǒng)方案,搭建了軟件開發(fā)平臺,分別開發(fā)并實現(xiàn)了基于Android 和Windows 平臺的巡檢移動端和管理端,并初步通過了用戶管理、定位導(dǎo)航、業(yè)務(wù)操作等系統(tǒng)基本功能的測試。該系統(tǒng)目前尚處于初步試用驗證階段, 綜合性能仍有待進一步完善提升,尤其系統(tǒng)管理端服務(wù)器對用戶訪問容量、內(nèi)存壓力等影響系統(tǒng)平臺安全穩(wěn)定運行的指標(biāo)還有待進一步測試評估。