陳云坪,孫 源,楊 玥,李皓昱,馬存詩,侯 磊,陳 彥
(1.電子科技大學 自動化工程學院,成都 611731;2.中國科學院 遙感與數字地球研究所,北京 100094)
葉面積指數(LAI)是表征植物生長狀態和結構的重要參數,在遙感實驗驗證中,LAI的野外測量是涉及生態和農業等領域的常規工作。目前常用的儀器有LAI2200、TRAC、CI-100、HemiView等[1-5],測量方法主要是消光系數法和攝影測量法[6-8],儀器均為手持便攜式,部分需攜帶電腦輔助進行數據處理。這些設備均需人工操作進行逐點測量,工作強度大,效率低,難以滿足星地同步實驗中多點同步測量的需求。除此以外,還面臨難以獲取長時間LAI序列數據、實驗實施過程受天氣影響大、數據獲取效率低等問題。基于無線傳感器技術與數據系統管理技術[9-11],本文研發了LAI全自動組網監測系統,實現了對LAI、植被冠層溫度等環境信息的實時監測。系統的設計與實現為LAI野外測量提供了新的解決方案。
系統整體架構如圖1所示,整個系統中,采集節點負責數據的收集及與匯聚節點的內部無線通信。采集節點可帶5路以上不同的傳感器,以獲取溫度、濕度、LAI等環境參數;匯聚節點負責外部通信及采集節點的控制管理,采集的數據由匯聚節點通過2G/3G/4G網絡上傳至云服務器,在服務器上完成數據的自動歸類、整理、入庫等工作,隨后實驗人員就可以通過Web端對數據進行訪問。

圖1 系統架構圖
系統采用模塊化開發的方式,整個系統分為4個模塊(見圖2),即通信模塊、數據管理模塊、控制模塊和可視化模塊。通信功能和數據處理功能在服務器端完成,客戶端則負責信息查詢顯示及采集頻率的設置。

圖2 LAI全自動組網監測系統功能模塊
服務器端采用Supersocket框架,該框架性能極大地簡化上位機和下位機的通信連接過程。且對多線程支持良好,能同時接收多路下位機發送過來的數據。SuperSocket程序可包含多個AppServer,每次有新客戶端訪問時,都會創建一個新的會話,因此不同下位機發送的數據不會混淆,保證數據記錄歸檔明確。
服務器與匯聚節點之間的通信過程具體為:在程序開始運行時,服務器端先進行聯網,然后等待匯聚節點請求入網的命令,當服務器端收到匯聚節點連接命令后,給匯聚節點發送確認命令,如果匯聚節點收到這個命令,就建立服務器與匯聚節點之間的通信,此后就可以進行數據傳輸的操作。
上位機服務器與下位機匯聚節點之間的通信協議的設計,是保證數據實時、穩定傳輸的關鍵技術之一。協議將通信包分為包頭、包體和包尾3部分。其中包頭長度固定,含起始標志、幀長度和幀控制;包體含傳輸的有效信息,長度由有效信息內容決定;包尾含校驗位和截止標志。通信協議的詳細說明如表1所示。

表1 通信協議說明
由于傳輸數據可能較多,需要由下位機多次發送數據,因此服務器首先將下位機發送的幀數據放置在緩沖區中,確定數據接收完畢后根據幀控制位判斷幀類型。如果是命令幀和應答幀,數據將進入相應的程序模塊進行處理;如果是數據幀,將提取相應的數據幀標志,以確定數據表類型,并根據發送的網絡編號,確定數據信息所屬監控網絡,然后解析數據并將其存儲在數據庫的采集數據表中。數據獲取模塊工作流程圖如圖3所示。
數據庫的邏輯結構設計主要包括定義標識實體以及各實體的相關屬性。數據庫中的部分實體關系如圖4所示。其中,用戶表(WSNUser)用于存儲用戶的賬號密碼和權限等信息,監控網絡表(WSNNet)用于存儲監控網絡的權限;采集數據表(WSNUploadData)用于存儲監測網絡獲取的LAI數值、冠層溫度、信號強度、電池電量和采集時間等數據;地理位置表(SNNodeLocationTable)用于存儲每個監測網絡節點的經緯度信息,便于節點在地圖中的動態顯示;采集頻率表(WSNTimeSetTable)用于存儲每個網絡的采集頻率信息,便于給多個節點設置不同的采集頻率,方便用戶管理。

圖3 數據獲取流程圖

圖4 數據庫實體關系圖
系統采用Microsoft SQL Server 2008數據庫,通過ASP.NET MVC和Entity Framework 4(EF 4)訪問數據庫,對數據進行管理和提取。EF的核心內容是EDM(Entity Data Model),底層是ADO.NET provider,上層是應用程序,它能提供一種更靈活、簡單、方便的數據訪問方式[12]。
客戶端Web界面的前端使用了html語言、API jQuery EasyUI、Highcharts圖表庫和百度地圖等控件,后臺則是用C#語言自主開發,從而完成Web動態網站的應用。
客戶端采用ASP.NET開發框架和MVC開發模式。使用MVC開發模式實現的代碼能夠將業務邏輯、數據和頁面顯示相互分離[13],方便后期維護[14]。
LAI查詢模塊中涉及到連接數據庫問題,這里使用ADO.NET框架[15]。ODBC是ADO.NET框架下的一種訪問數據庫的技術,可為不同的數據庫(如MySQL和 SQL Server)提供驅動程序[16]。因為有統一的API,所以客戶端應用程序可以根據提供的API訪問提供ODBC驅動程序的任何數據庫。系統采用Datagride表形式顯示查詢信息。
Web端界面使用了jQuery EasyUI中封裝的控件,效果如圖5所示。實驗人員可查看節點地址、數據記錄時間、LAI值、冠層溫度以及電池電量和信號強度等信息。所查數據可通過原始數據導出功能將數據導出到Excel表中,Excel表會根據監控網絡的名稱和查詢時間段自動命名。
理論上,某些環境參數(如LAI)在短時間內變化不大,但由于采樣環境,如太陽高度角、光照強度、風以及云等環境條件的變化,不同時間的測量結果會出現較大的波動。為獲取準確的LAI值,利用高時間頻率的測量數據,基于拉依達準則,本文構建了數據過濾算法,該算法可獲得1 d中最具代表意義的LAI值。該方法相比于其他直接獲取LAI值的方法不僅提高了測量精度,具有更高的準確性和穩定性,同時大大減少了導出數據量。使用Web端LAI每日數據導出功能可導出每日LAI數據。

圖5 LAI值查詢后的界面
數據過濾算法的主要作用是濾除異常值,包括在數據采集過程中由環境因素和設備因素造成的異常值。環境因素主要包括環境過亮、過暗以及云干擾,這3種情況下采集到的數據分別用49、48和47來表示。設備因素是指設備的某些異常導致的數據采集失敗,這種情況下的數據用0表示。算法整體思路為:首先判斷并剔除上述LAI數據異常值,然后以n個數據寬度的一維滑動窗口遍歷剩余數據,進一步去除異常數據,最后求出當天的LAI代表值。具體操作如下:
(1)對每一條數據進行初步判斷,刪除數據采集過程中的異常值,即刪除LAI值等于49、48、47或0的數據。
(2)對窗口中的n個數據求取均值和標準差,

(3)用如下條件對窗口中的每個值進行判斷:
(3)

(5)滑動窗口,遍歷完所有數據后,對所有保存的窗口均值再取均值,即可得當天LAI代表值,
(4)

利用無線傳感器網絡進行組網數據采集,需要了解每個節點的位置信息,但通過數據查詢的方式不便于了解位置信息,此外環境參數的測量值對采樣的位置非常敏感[17-18],因此對所有監控網絡添加了動態節點圖的顯示功能,便于比較準確地知道某個時刻節點的工作狀態和工作位置。
基于百度地圖提供的JavaScript API接口,在系統中設計并實現了基于電子地圖和遙感影像的地圖展示和節點標注功能,實驗人員可以在Web端通過選擇查詢網絡、查詢日期和查詢時刻,得到相應的動態節點圖,其靜態或動態效果如圖6所示。

圖6 節點位置分布圖
采集頻率設置模塊允許用戶在系統網站上修改指定站點的數據采集頻率。當用戶在網站上選擇了某個站點,并且輸入了采集頻率的數值,系統會訪問數據庫中的存放采集頻率的表,即WSNTimeSetTable表,然后根據用戶選擇的站點去索引對應的數據。如果數據庫之前沒有該站點的采集頻率,則存入用戶設置的值,如果數據庫中已經有了該站點的采集頻率,則將原值修改為用戶設置的新值。
采集頻率設置模塊的另一個重要部分是服務端與站點下位機之間的通信,兩者通過socket通信方式進行連接,完成數據傳輸。
本文針對LAI值、溫濕度等生態及環境參數的野外實驗長時間監測及星地同步測量的需要,設計并實現了LAI全自動組網監測系統,解決了LAI多點、同步、長時間測量的問題。系統具備性能穩定、操作簡便、用戶體驗性好等特點;系統通過對每個監控網絡的特定標識實現對多個無線傳感器網絡的分辨,實現了對多個監控區域的數據管理;基于電子地圖和遙感影像,加入了節點動態圖,使數據展示更全面直觀。由于不需要現場測量,極大地降低了實驗成本。本系統已在四川省農業科學研究院彭州基地、中國科學院遙感所沽源真實性檢驗站、華南農業大學增城教學科研基地進行了建設實施,并取得良好效果。下一步將在系統中增加數據高級分析功能,使實驗人員不僅能獲取實施數據,還能快速獲取分析結果。