范 恩, 李乾坤, 胡珂立, 吳瑞潛
1(深圳大學 信息工程學院, 深圳 518060)
2(紹興文理學院 機械與電氣工程學院, 紹興 312000)
3(紹興文理學院 土木工程學院, 紹興 312000)
近年來, 由于智能手機集成無線連接、多傳感器傳信息融合以及智能信息處理等技術, 它們被廣泛地應用于諸多領域[1-3]. 考慮到智能手機系統具有開放的操作系統、人性化的用戶界面、高性能的計算能力以及良好的擴展性, 基于智能手機系統的移動應用軟件開發也逐漸受到許多研究人員和軟件工程師的關注[4,5]. 盡管這類移動應用軟件被大量開發和廣泛使用, 但是專業的移動應用軟件依然不足, 其市場需求量還在不斷增加.
在野外地質勘測工作中, 使用記錄紙記錄測量數據, 具有一定的局限性, 不僅工作量大、容易出錯, 而且攜帶測量儀器也非常不方便, 因而極大地限制了土木工程師野外勘測的工作效率[6-8]. 例如, 在巖體結構產狀信息的測量過程中, 需要對結構面的傾向、傾角等參數進行測量, 然而目前仍然采用電子羅盤作為主要的測量工具. 考慮到智能手機先進的集成技術以及便攜優勢, 基于智能手機的移動應用軟件為自動記錄野外地質測量數據提供了一種很好的解決方案[2]. 針對數據采集、數據傳輸、數據存儲和數據處理的整個過程, 均可以采用移動應用軟件來實現. 其中, 測量數據的自動采集和存儲, 主要包括數據的預處理、核檢與查詢, 實現這些功能的移動應用軟件通常被稱為電子手簿[7,9,10].
為了處理地質勘測數據, 中國科學院地質與地球物理研究所開發出一套智能數據助手 (Intelligent Digital Assistant, IDA)系統. 它主要由手機端APP和PC端軟件組成. 為了保證系統功能的準確性, IDA系統針對智能手機的底層感應器進行適當修改. 然而由于IDA系統對智能手機機型有一定要求, 其應用范圍也受到一定限制. 類似地, 清華大學水利電工系開發出一款地質助手(GeoHelper) APP系統[11]. 雖然GeoHelper系統能夠實現基礎的產狀測量功能, 并增加了繪圖功能和巖石特征查詢功能, 但是在繪圖過程中仍然需要手動輸入數據, 同樣也增加了用戶記錄數據的負擔. 因此, 為了讓地質勘測過程變得更加快捷和高效, 要求設計的APP系統在自動記錄數據的同時, 不僅能獲取精準的測量數據, 而且能夠將這些數據及時保存. 此外, 還需要考慮土木工程師野外勘測的習慣, 以方便工程師后期對數據進一步分析和處理.
考慮到智能手機Android系統的快速發展, 2003年Android系統開始研發, 2007年Android 1.0上線,2018年Android P測試版已經發布, 經歷短短十五年的發展, 目前Anroid系統在智能手機市場的占有率高達80%以上[12]. 為此, 本文采用Android Studio作為開發工具, 開發一款基于Android平臺的土木工程地質測量電子手簿APP系統. 該系統首先利用SQLite數據庫對測量數據進行保存, 然后集成百度地圖作為工點定位工具, 最后采用Socket技術實現測試設備與電子手簿APP系統的數據交互. 在具體的開發過程中, 結合野外地質勘測環境的特點以及土木工程師的工作習慣, 進一步優化該APP系統應用界面的布局, 并不斷調試軟件操作的合理性, 使系統功能盡量貼近用戶的操作習慣, 從而提高土木工程師野外地質勘測的工作效率. 與傳統的地質測量電子手簿相比,本文開發的電子手薄APP系統在實現自動測量和自動記錄相關測試數據的基礎上, 利用局域網實現測試設備與APP系統的數據交互, 從而進一步降低測試過程中人工讀取數據的負擔. 特別是在電荷載實驗中, 由于需要對不規則石塊進行壓力測試, 通過局域網傳輸測量數據, 較大地降低了石塊碎裂時可能產生的風險.
為了減輕土木工程師在野外勘測工作中記錄數據的負擔, 本文開發的電子手簿系統通過調用智能手機所集成的先進技術, 能夠實現多模測量數據的自動錄入. 為此, 本文以數據記錄為核心功能, 開發一款基于Android平臺的土木工程地質測量電子手簿APP系統.其主要功能包括: (1)利用SQLite數據庫保存野外采集的數據; (2)利用百度地圖作為定位工具, 獲取工點的定位信息; (3)利用陀螺儀傳感器, 采集巖體結構面傾向和傾角信息; (4)利用智能手機的拍照、錄音等功能對巖體結構產狀信息進行數據的多樣化采集; (5)利用Socket技術實現硬件測量設備與手機電子手簿APP系統的數據交互, 輔助對巖石樣本的電荷載實驗.在具體開發過程中, 同時實現對象測量和數據記錄, 而且不需要進行額外的手工記錄工作, 極大地方便工程師后續對存儲的數據進一步分析和處理.
如圖1所示, 系統由5個模塊組成: 項目管理、工點記錄、定位瀏覽、影音記錄以及電子羅盤. 其中, 項目工程記錄對應項目管理模塊, 輔助的測量工具主要包括地圖定位模塊和電子羅盤模塊. 由于Android Studio作為谷歌官方推薦的開發工具, 相比Eclipse開發平臺, 它具有更高的開發效率[13]. 為此, 本系統使用Android Studio作為開發工具, 同時采用Java作為主要開發語言. 系統開發以測量數據的自動錄入為核心, 為數據采集、數據傳輸、數據存儲和數據處理等操作提供一系列的輔助工具, 使野外地質勘測數據的記錄或處理過程變得更加方便、準確和高效. 此外, 為了做到軟硬件結合, 測試過程中只需要用戶少量的確認操作就可以獲得一組實驗數據.

圖1 系統功能架構
數據庫設計在系統開發過程中尤為重要, 其合理性將直接影響整個程序的開發進度. 圖2給出了系統的數據庫模型. 其中, c_project為工程表, 所記錄結構面產狀的測量信息都會對應一個項目工程, 可以通過添加該表單來記錄工點結構面信息屬于哪個表單. 在實際中, 每個工程項目均由一位工程師負責數據的記錄和管理, 每個項目都需要保存記錄人的基本信息. 因此,在表中, 通過姓名保存對應工程師的信息. 另外, 工點也是項目中主要記錄信息之一, 是制定數據庫時必需的表單. 每個工點表都詳細地記錄工作地點的位置、地質結構等信息. 側線是以一個工點為基點, 延伸出若干條側線信息. 這些側線都保存了各自的傾向與傾角信息.
在數據存儲方面, 本系統將每個項目單獨存儲為一個數據庫文件, 并將項目名稱作為數據庫文件名. 在單個項目中可能存在多地點工程, 每個工程信息存儲在表c_project中. 這里暫時存儲工程名稱、負責人id以及工程開始時間等信息. 工程的負責人id指向人員表, 在一個工程中會有許多工程師負責工程的不同的業務. 表c_person記錄工程中每個人員的名字信息;c_point作為數據記錄的一個重要環節, 記錄項目的工點信息. 其中, 工點信息包含具體的工作地點(經緯度),以及該地點的地質環境信息. 由于一個工點可以延伸多個側線信息, 根據側線與工點的關系, 可以記錄側線與工點的對應關系以及側線的傾向和傾角, 同時在側線表l_record中生成側線的相關信息. 在每條側線上,可能存在多個結構面信息, 根據該結構面信息, 可以在結構面表c_order中生成它的基本信息.

圖2 系統的數據庫設計
除上述這些必要的數據外, 由于采用智能手機記錄測量數據, 還可以為工程和工點添加音頻格式和圖片格式的數據資料, 并保存在本地文件中. 根據文件的路徑、所屬工程和工點, 自動在影音表 multi_mechanices中添加對應的信息記錄.
系統采用Android Studio軟件進行開發, 使用Java語言進行操作邏輯編寫, 利用可擴展標記語言(XML), 編輯界面布局, 采用SQLite數據庫實現移動端數據存儲; 同時, 集成百度地圖獲取工點的定位信息, 并結合智能手采集的相關信息, 經過處理后呈現在電子羅盤界面 上; 然后根據數據和界面顯示信息更新顯示指向, 完成對指針的旋轉, 從而顯示正確的指向. 通過電子羅盤可以減少物理羅盤操作過程中繁瑣的步驟, 而且讀數更加方便、快捷.
2.3.1 工點記錄
工點記錄模塊是對工點的一些基本信息進行保存,如圖3所示. 其中, 日期、記錄人以及編號是在根據使用者和系統當前時間由系統自動生成; 定位信息在點擊R后, 跳轉界面獲取定位信息, 并將數據返回到當前界面的對應信息欄; 類似地, 產狀也是通過點擊R后,跳轉界面獲取到產狀信息后, 提交返回到當前界面指定的信息欄中. 當完成所有的信息錄入后, 點擊保存,實現將工點信息自動錄入到數據庫.
2.3.2 項目管理
項目管理的核心是實現對SQLite數據庫db文件的操作, 如圖 4 所示. 這里, 一個文件代表一個項目, 項目的新建和刪除都是通過Android系統對文件的操作完成. 由于一個項目可以包含多個工程, 因此在數據庫文件中可以通過工程新建一個表結構來實現信息的保存.
2.3.3 電子羅盤
電子羅盤是基于手機中陀螺儀傳感器實現的, 其設計界面如圖5所示. 首先獲取陀螺儀采集的相關信息, 經過處理后呈現在智能手機顯示界面上, 再通過數據和界面顯示信息更新顯示指向, 完成對指針的旋轉,從而顯示正確的指向.
2.3.4 電荷載實驗
電荷載實驗需要采用WiFi網絡與外部測試設備連接, 從而實現數據交互. 其中, 智能手機作為客戶端,通過Socket連接測試設備的內置WiFi模塊, 同時建立socketServer服務, 最后通過傳輸協議實現外部測試設備與智能手機的數據通信. 相關傳輸指令包括開始實驗、數據字段和實驗結束等, 在電荷載試驗界面中分別對應不同的按鈕, 如圖6所示.

圖3 工點記錄界面

圖4 項目管理界面
新建項目是新建一個以項目名為文件名的數據庫db文件, 并修改當前工作項目為新建項目, 后續操作的數據庫文件為選中的數據庫文件. 在工程管理中, 可以通過預先定義的字段記錄數據, 從而規范數據類型, 保證記錄數據的格式統一. 然后, 將記錄數據的SQL文件保存在移動端, 為后續數據交互提供更多的可能性. 如文件復制, SQL文件可以在多類平臺上進行查看和修改.
具體測試流程如下: 首先, 在項目管理界面, 單擊新建工程, 彈出對話框, 輸入項目的名稱; 然后, 在指定文件目錄下創建同名的數據庫文件, 為該項目的數據存儲提供一個數據庫容器; 同時, 新建項目后, 系統會自動刷新上面的項目目錄, 重新在指定文件夾下, 遍歷所有的項目文件, 并更新界面數據信息; 選中新建的項目, 作為當前運行的測試項目. 測試結果如圖7和表1.

圖5 電子陀螺儀測試
工點記錄通過利用手機中自帶的傳感器等工具實現土木工程勘測數據的實時記錄, 能夠將記錄過程的誤差降到最低, 從而為后續數據分析做好準備. 工點記錄界面會根據界面啟動時收到的工點id來判斷是新增工點信息還是修改工點信息. 如果需要修改工點信息, 系統會獲取該工點信息, 自動填充到工點界面相應控件. 工點添加屬于對信息的錄入, 在錄入過程中會調用百度地圖獲取的定位信息和電子羅盤獲取的傾向傾角信息, 最后一起回傳給數據記錄界面, 并添加到對應的輸入框中.

圖6 電荷載界面

圖7 新建項目測試結果
具體測試流程如下: 首先, 在主界面單擊工點記錄,先判斷用戶是否選擇正在運行的項目; 選擇確定后, 自動在項目數據庫下查找該項目的所有工程. 如果存在多個工程, 在界面左上角會出現切換工程的下拉列表(默認第一個). 選擇工程后, 更新界面中的工點信息, 此時用戶可以編輯工程中的工點信息. 單擊新增, 跳轉到工點信息輸入界面, 然后輸入工點的數據信息, 程序在添加過程中會自動驗證數據. 如果數據不符合規定, 會提示用戶信息輸入有誤, 從而保證數據存儲的規范性和格式統一. 相關測試結果如圖8所示.

表8 測試記錄數據

圖8 工點記錄測試結果
如圖9所示, 電荷載實驗是與硬件設備協同工作的一部分, 需要連接到硬件的WiFi模塊. 選擇采用WiFi傳輸數據, 主要因為其傳輸速率遠大于藍牙的傳輸速率. WiFi連接成功后, 實驗立刻開始, 系統會以硬件為服務端、智能手機為客戶端建立一個Socket連接進行數據傳輸. 在使用測試設備對巖石施加壓力的測試過程中, 測量壓力值會周期地傳輸到手機端, 系統收到數據后會對數據進行自動解析、提取出壓力數據并繪制折線圖, 同時顯示在電荷載測試界面上, 最后將數據保存到數據庫中.
具體測試流程如下:
(1) 開啟設備電源: 巖石力學設備開啟后, 會自動啟動WiFi模塊, 連接手機APP.
(2) 單擊“工點記錄”: 新建工點測試項目文件, 進入測試界面.
(3) 單擊“連接”: 創建手機端與設備端的Socket連接(如果連接成功, 界面會自動提示用戶).
(4) 單擊“開始”: 設備自動進行初始化校準, 同時開始測試, 手機端收到測試數據后, 會根據傳輸協議自動解析數據, 并繪制曲線圖, 同時記錄數據, 如圖10所示.
(5) 單擊“保存”: 測試結束時, 手機端可以保存測試數據, 并更新巖石力學測試數據列表, 同時關閉測試界面.
在測試過程中, 如果測試樣本碎裂, 則實驗成功,發送結束指令到手機端; 否則實驗失敗, 單擊開始, 重新校準儀器, 手機端自動清除上次數據, 并重復步驟(4).
在實際野外地質勘測中, 使用記錄紙記錄測量數據具有一定的局限性. 為此, 針對野外地質勘測中需要記錄大量數據的實際需求, 本文采用Java語言開發一款基于Android平臺的地質測量電子手簿APP系統.該系統已成功應用于野外地質勘測工作中, 同時獲得用戶的廣泛認可. 該電子手簿利用SQLite數據庫保存項目獲取的相關數據, 集成百度地圖采集工點的定位信息, 借助陀螺儀測量巖石面的傾向和傾角, 最后采用Socket技術連接硬件設備, 同時獲取巖體電荷載的實驗數據. 通過使用本軟件可以提高野外地質勘測工作的效率, 減輕測量工作的負擔, 同時測量數據的電子文檔化也便于后續數據的分析與處理.

圖9 巖石力學實測實驗

圖10 手機端測試結果
相對傳統的土木工程地質測量電子手簿APP系統, 本系統在實現自動記錄測量數據的基礎上, 進一步將軟硬件結合, 通過局域網實現測試設備與系統的數據交互, 從而使數據的獲取過程變得更加自動化. 此外,在數據傳輸的同時, 系統能夠實現自動記錄數據, 從而減少人工記錄過程所產生的誤差. 因此, 本文所開發的電子手簿在實際野外地質勘測工作中具有一定的使用價值和借鑒意義. 在系統開發后期, 還將根據已記錄的結構面產狀信息, 在APP中顯示對應的施密特網圖,以滿足地質勘測工作中更多的功能需求.