陳云坪,孫 源,楊 玥,李皓昱,馬存詩,侯 磊,陳 彥
(1.電子科技大學(xué) 自動化工程學(xué)院,成都 611731;2.中國科學(xué)院 遙感與數(shù)字地球研究所,北京 100094)
葉面積指數(shù)(LAI)是表征植物生長狀態(tài)和結(jié)構(gòu)的重要參數(shù),在遙感實驗驗證中,LAI的野外測量是涉及生態(tài)和農(nóng)業(yè)等領(lǐng)域的常規(guī)工作。目前常用的儀器有LAI2200、TRAC、CI-100、HemiView等[1-5],測量方法主要是消光系數(shù)法和攝影測量法[6-8],儀器均為手持便攜式,部分需攜帶電腦輔助進行數(shù)據(jù)處理。這些設(shè)備均需人工操作進行逐點測量,工作強度大,效率低,難以滿足星地同步實驗中多點同步測量的需求。除此以外,還面臨難以獲取長時間LAI序列數(shù)據(jù)、實驗實施過程受天氣影響大、數(shù)據(jù)獲取效率低等問題?;跓o線傳感器技術(shù)與數(shù)據(jù)系統(tǒng)管理技術(shù)[9-11],本文研發(fā)了LAI全自動組網(wǎng)監(jiān)測系統(tǒng),實現(xiàn)了對LAI、植被冠層溫度等環(huán)境信息的實時監(jiān)測。系統(tǒng)的設(shè)計與實現(xiàn)為LAI野外測量提供了新的解決方案。
系統(tǒng)整體架構(gòu)如圖1所示,整個系統(tǒng)中,采集節(jié)點負責(zé)數(shù)據(jù)的收集及與匯聚節(jié)點的內(nèi)部無線通信。采集節(jié)點可帶5路以上不同的傳感器,以獲取溫度、濕度、LAI等環(huán)境參數(shù);匯聚節(jié)點負責(zé)外部通信及采集節(jié)點的控制管理,采集的數(shù)據(jù)由匯聚節(jié)點通過2G/3G/4G網(wǎng)絡(luò)上傳至云服務(wù)器,在服務(wù)器上完成數(shù)據(jù)的自動歸類、整理、入庫等工作,隨后實驗人員就可以通過Web端對數(shù)據(jù)進行訪問。
圖1 系統(tǒng)架構(gòu)圖
系統(tǒng)采用模塊化開發(fā)的方式,整個系統(tǒng)分為4個模塊(見圖2),即通信模塊、數(shù)據(jù)管理模塊、控制模塊和可視化模塊。通信功能和數(shù)據(jù)處理功能在服務(wù)器端完成,客戶端則負責(zé)信息查詢顯示及采集頻率的設(shè)置。
圖2 LAI全自動組網(wǎng)監(jiān)測系統(tǒng)功能模塊
服務(wù)器端采用Supersocket框架,該框架性能極大地簡化上位機和下位機的通信連接過程。且對多線程支持良好,能同時接收多路下位機發(fā)送過來的數(shù)據(jù)。SuperSocket程序可包含多個AppServer,每次有新客戶端訪問時,都會創(chuàng)建一個新的會話,因此不同下位機發(fā)送的數(shù)據(jù)不會混淆,保證數(shù)據(jù)記錄歸檔明確。
服務(wù)器與匯聚節(jié)點之間的通信過程具體為:在程序開始運行時,服務(wù)器端先進行聯(lián)網(wǎng),然后等待匯聚節(jié)點請求入網(wǎng)的命令,當(dāng)服務(wù)器端收到匯聚節(jié)點連接命令后,給匯聚節(jié)點發(fā)送確認命令,如果匯聚節(jié)點收到這個命令,就建立服務(wù)器與匯聚節(jié)點之間的通信,此后就可以進行數(shù)據(jù)傳輸?shù)牟僮鳌?/p>
上位機服務(wù)器與下位機匯聚節(jié)點之間的通信協(xié)議的設(shè)計,是保證數(shù)據(jù)實時、穩(wěn)定傳輸?shù)年P(guān)鍵技術(shù)之一。協(xié)議將通信包分為包頭、包體和包尾3部分。其中包頭長度固定,含起始標(biāo)志、幀長度和幀控制;包體含傳輸?shù)挠行畔?,長度由有效信息內(nèi)容決定;包尾含校驗位和截止標(biāo)志。通信協(xié)議的詳細說明如表1所示。
表1 通信協(xié)議說明
由于傳輸數(shù)據(jù)可能較多,需要由下位機多次發(fā)送數(shù)據(jù),因此服務(wù)器首先將下位機發(fā)送的幀數(shù)據(jù)放置在緩沖區(qū)中,確定數(shù)據(jù)接收完畢后根據(jù)幀控制位判斷幀類型。如果是命令幀和應(yīng)答幀,數(shù)據(jù)將進入相應(yīng)的程序模塊進行處理;如果是數(shù)據(jù)幀,將提取相應(yīng)的數(shù)據(jù)幀標(biāo)志,以確定數(shù)據(jù)表類型,并根據(jù)發(fā)送的網(wǎng)絡(luò)編號,確定數(shù)據(jù)信息所屬監(jiān)控網(wǎng)絡(luò),然后解析數(shù)據(jù)并將其存儲在數(shù)據(jù)庫的采集數(shù)據(jù)表中。數(shù)據(jù)獲取模塊工作流程圖如圖3所示。
數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計主要包括定義標(biāo)識實體以及各實體的相關(guān)屬性。數(shù)據(jù)庫中的部分實體關(guān)系如圖4所示。其中,用戶表(WSNUser)用于存儲用戶的賬號密碼和權(quán)限等信息,監(jiān)控網(wǎng)絡(luò)表(WSNNet)用于存儲監(jiān)控網(wǎng)絡(luò)的權(quán)限;采集數(shù)據(jù)表(WSNUploadData)用于存儲監(jiān)測網(wǎng)絡(luò)獲取的LAI數(shù)值、冠層溫度、信號強度、電池電量和采集時間等數(shù)據(jù);地理位置表(SNNodeLocationTable)用于存儲每個監(jiān)測網(wǎng)絡(luò)節(jié)點的經(jīng)緯度信息,便于節(jié)點在地圖中的動態(tài)顯示;采集頻率表(WSNTimeSetTable)用于存儲每個網(wǎng)絡(luò)的采集頻率信息,便于給多個節(jié)點設(shè)置不同的采集頻率,方便用戶管理。
圖3 數(shù)據(jù)獲取流程圖
圖4 數(shù)據(jù)庫實體關(guān)系圖
系統(tǒng)采用Microsoft SQL Server 2008數(shù)據(jù)庫,通過ASP.NET MVC和Entity Framework 4(EF 4)訪問數(shù)據(jù)庫,對數(shù)據(jù)進行管理和提取。EF的核心內(nèi)容是EDM(Entity Data Model),底層是ADO.NET provider,上層是應(yīng)用程序,它能提供一種更靈活、簡單、方便的數(shù)據(jù)訪問方式[12]。
客戶端Web界面的前端使用了html語言、API jQuery EasyUI、Highcharts圖表庫和百度地圖等控件,后臺則是用C#語言自主開發(fā),從而完成Web動態(tài)網(wǎng)站的應(yīng)用。
客戶端采用ASP.NET開發(fā)框架和MVC開發(fā)模式。使用MVC開發(fā)模式實現(xiàn)的代碼能夠?qū)I(yè)務(wù)邏輯、數(shù)據(jù)和頁面顯示相互分離[13],方便后期維護[14]。
LAI查詢模塊中涉及到連接數(shù)據(jù)庫問題,這里使用ADO.NET框架[15]。ODBC是ADO.NET框架下的一種訪問數(shù)據(jù)庫的技術(shù),可為不同的數(shù)據(jù)庫(如MySQL和 SQL Server)提供驅(qū)動程序[16]。因為有統(tǒng)一的API,所以客戶端應(yīng)用程序可以根據(jù)提供的API訪問提供ODBC驅(qū)動程序的任何數(shù)據(jù)庫。系統(tǒng)采用Datagride表形式顯示查詢信息。
Web端界面使用了jQuery EasyUI中封裝的控件,效果如圖5所示。實驗人員可查看節(jié)點地址、數(shù)據(jù)記錄時間、LAI值、冠層溫度以及電池電量和信號強度等信息。所查數(shù)據(jù)可通過原始數(shù)據(jù)導(dǎo)出功能將數(shù)據(jù)導(dǎo)出到Excel表中,Excel表會根據(jù)監(jiān)控網(wǎng)絡(luò)的名稱和查詢時間段自動命名。
理論上,某些環(huán)境參數(shù)(如LAI)在短時間內(nèi)變化不大,但由于采樣環(huán)境,如太陽高度角、光照強度、風(fēng)以及云等環(huán)境條件的變化,不同時間的測量結(jié)果會出現(xiàn)較大的波動。為獲取準(zhǔn)確的LAI值,利用高時間頻率的測量數(shù)據(jù),基于拉依達準(zhǔn)則,本文構(gòu)建了數(shù)據(jù)過濾算法,該算法可獲得1 d中最具代表意義的LAI值。該方法相比于其他直接獲取LAI值的方法不僅提高了測量精度,具有更高的準(zhǔn)確性和穩(wěn)定性,同時大大減少了導(dǎo)出數(shù)據(jù)量。使用Web端LAI每日數(shù)據(jù)導(dǎo)出功能可導(dǎo)出每日LAI數(shù)據(jù)。
圖5 LAI值查詢后的界面
數(shù)據(jù)過濾算法的主要作用是濾除異常值,包括在數(shù)據(jù)采集過程中由環(huán)境因素和設(shè)備因素造成的異常值。環(huán)境因素主要包括環(huán)境過亮、過暗以及云干擾,這3種情況下采集到的數(shù)據(jù)分別用49、48和47來表示。設(shè)備因素是指設(shè)備的某些異常導(dǎo)致的數(shù)據(jù)采集失敗,這種情況下的數(shù)據(jù)用0表示。算法整體思路為:首先判斷并剔除上述LAI數(shù)據(jù)異常值,然后以n個數(shù)據(jù)寬度的一維滑動窗口遍歷剩余數(shù)據(jù),進一步去除異常數(shù)據(jù),最后求出當(dāng)天的LAI代表值。具體操作如下:
(1)對每一條數(shù)據(jù)進行初步判斷,刪除數(shù)據(jù)采集過程中的異常值,即刪除LAI值等于49、48、47或0的數(shù)據(jù)。
(2)對窗口中的n個數(shù)據(jù)求取均值和標(biāo)準(zhǔn)差,
(3)用如下條件對窗口中的每個值進行判斷:
(3)
(5)滑動窗口,遍歷完所有數(shù)據(jù)后,對所有保存的窗口均值再取均值,即可得當(dāng)天LAI代表值,
(4)
利用無線傳感器網(wǎng)絡(luò)進行組網(wǎng)數(shù)據(jù)采集,需要了解每個節(jié)點的位置信息,但通過數(shù)據(jù)查詢的方式不便于了解位置信息,此外環(huán)境參數(shù)的測量值對采樣的位置非常敏感[17-18],因此對所有監(jiān)控網(wǎng)絡(luò)添加了動態(tài)節(jié)點圖的顯示功能,便于比較準(zhǔn)確地知道某個時刻節(jié)點的工作狀態(tài)和工作位置。
基于百度地圖提供的JavaScript API接口,在系統(tǒng)中設(shè)計并實現(xiàn)了基于電子地圖和遙感影像的地圖展示和節(jié)點標(biāo)注功能,實驗人員可以在Web端通過選擇查詢網(wǎng)絡(luò)、查詢?nèi)掌诤筒樵儠r刻,得到相應(yīng)的動態(tài)節(jié)點圖,其靜態(tài)或動態(tài)效果如圖6所示。
圖6 節(jié)點位置分布圖
采集頻率設(shè)置模塊允許用戶在系統(tǒng)網(wǎng)站上修改指定站點的數(shù)據(jù)采集頻率。當(dāng)用戶在網(wǎng)站上選擇了某個站點,并且輸入了采集頻率的數(shù)值,系統(tǒng)會訪問數(shù)據(jù)庫中的存放采集頻率的表,即WSNTimeSetTable表,然后根據(jù)用戶選擇的站點去索引對應(yīng)的數(shù)據(jù)。如果數(shù)據(jù)庫之前沒有該站點的采集頻率,則存入用戶設(shè)置的值,如果數(shù)據(jù)庫中已經(jīng)有了該站點的采集頻率,則將原值修改為用戶設(shè)置的新值。
采集頻率設(shè)置模塊的另一個重要部分是服務(wù)端與站點下位機之間的通信,兩者通過socket通信方式進行連接,完成數(shù)據(jù)傳輸。
本文針對LAI值、溫濕度等生態(tài)及環(huán)境參數(shù)的野外實驗長時間監(jiān)測及星地同步測量的需要,設(shè)計并實現(xiàn)了LAI全自動組網(wǎng)監(jiān)測系統(tǒng),解決了LAI多點、同步、長時間測量的問題。系統(tǒng)具備性能穩(wěn)定、操作簡便、用戶體驗性好等特點;系統(tǒng)通過對每個監(jiān)控網(wǎng)絡(luò)的特定標(biāo)識實現(xiàn)對多個無線傳感器網(wǎng)絡(luò)的分辨,實現(xiàn)了對多個監(jiān)控區(qū)域的數(shù)據(jù)管理;基于電子地圖和遙感影像,加入了節(jié)點動態(tài)圖,使數(shù)據(jù)展示更全面直觀。由于不需要現(xiàn)場測量,極大地降低了實驗成本。本系統(tǒng)已在四川省農(nóng)業(yè)科學(xué)研究院彭州基地、中國科學(xué)院遙感所沽源真實性檢驗站、華南農(nóng)業(yè)大學(xué)增城教學(xué)科研基地進行了建設(shè)實施,并取得良好效果。下一步將在系統(tǒng)中增加數(shù)據(jù)高級分析功能,使實驗人員不僅能獲取實施數(shù)據(jù),還能快速獲取分析結(jié)果。