沈劍波 雷淵才 王功明 符利勇*(中國林業科學研究院資源信息研究所 北京 0009)(中國科學院生物物理研究所 北京000)
隨著計算機技術的發展,林業因子精準估計越來越受到行業重視。樹高、材積(即木材體積)以及生物量是森林調查中最重要的測樹因子,也是評定林木生長狀況、立地質量以及劃分林層的重要依據[1]。但是,這些因子的測量耗時、調查成本高,通常是通過其他的林業因子(例如直徑等)預估得到。迄今為止,關于樹高曲線、材積方程和生物量模型的構建方法有很多報道,并且發展較成熟。然而如何把這些模型集成到一個系統讓用戶方便計算樹高、材積和生物量,當前國內外研究較少。
目前,關于森林收獲數據維護軟件管理系統較少。如何利用現有的森林調查數據建立面向縣級林業數據服務平臺,實現精準預估森林生長與收獲,以及如何維護與管理這些數據、準確估算森林收獲及立地質量的評價具有重要的意義。針對上述實際需求,開發了面向縣級林業數據服務平臺,可為森林的經營管理提供重要的數據支撐。
森林調查數據目的在于及時掌握森林資源的數量、質量和生長、消亡的動態規律及其與自然環境和經濟、經營等條件之間的關系。目前,國家對于生態環境越來越重視,森林是地球上復雜、多物種、多功能與多效益的生態系統,是陸地生態系統的主體,對維護生態平衡起著決定性作用,其在實現社會經濟可持續發展具有舉足輕重地位[2-5]。目前林業部門森林資源數據多,但真正利用起來能夠盤活的數據卻很少,另外由于森林調查數據多,林業工作者對數據查詢及管理與維護費時費力,消耗人力成本大。
為了解決目前林業生產單位數據量大與人力資源少的矛盾,根據實際生產需要,開發出操作簡單、界面友好的基于縣級林業數據維護與管理平臺,對于精確測算森林生長與收獲,提高林業生產效率具有積極的作用。
基于該平臺用戶可以通過原始數據中的胸徑、樹種以及縣(局)計算出樹高、材積及生物量。可以根據關鍵字進行查詢,導出所需數據生成報表的功能。利用開發的程序計算樹高、材積以及生物量,具有迅速、便捷的特點。其計算結果用于制訂和調整林業經營政策,編制林業生產經營方案和鑒定森林經營效果,可以保證森林資源在國民經濟建設中得到充分利用,并不斷提高其潛在生產力。
系統采用自頂向下的結構化設計方法[6],在設計時,首先考慮系統的任務、環境、需求和局限,然后在總體上設計出能夠滿足系統要求的模塊化體系結構,并設計出每個子系統或子模塊[7]。考慮到交互性和較快的處理速度、存取安全的需求,系統將采用C/S構架[8-9],數據庫設計考慮可擴展字段,并采用組件化軟件開發技術以保證系統的實用性、靈活性、可復用性、交互性以及可擴展性。
系統設計時考慮了人性化、界面友好的特點。例如,不同縣(局)、不同樹種的樹高、材積及生物量的計算公式輸入部分,由于不同樹種的計算公式大同小異,很多情況下只是參數的不同,用戶只需要修改參數而已。若該對話框完全設置為空,用戶則必須重新輸入公式,而樹高、材積及生物量的計算公式一般較為復雜,用戶將會消耗大量時間輸入公式。本研究設計了可編輯的對話框,并把較為通用的樹高、材積及生物量公式固化在編輯框中,用戶根據需要可以對公式進行修改或者編輯,這樣的設計可以大幅度節約用戶的時間與人力成本。本系統的總體設計架構如圖1所示。

圖1 系統流程結構圖
本系統采用Microsoft Visual Basic 6.0為開發語言,開發過程中運用了VBSCRIPT技術,以ACCESS為后臺數據庫,利用ADO數據庫技術[10-11],實現了根據以不同的縣(局)以及樹種對數據庫的樹高、材積及生物量的數據維護。
信息資源是系統建設的重要基礎成果,是信息共享和交換的物理基礎。主要包括原始數據庫、成果數據庫。各種數據通過統一的數據庫標準,為業務應用層提供數據保障。
數據訪問層是對后臺數據庫進行訪問,并為業務處理層提供服務的組件層。數據訪問組件基于C/S模式利用ADO數據庫引擎對后臺數據庫進行訪問,實現數據的增加、修改、刪除、計算樹高、材積生物量與材積以及按條件搜索查詢等功能。
本平臺根據需求設計的表,主要有縣局表(T_Bureau)、樹種表(T_Tree)和公式與收獲表(T_Formulas)等,在字段設計過程中,需要考慮命名規范、兼容性等要求,設計好的字段內容如表1-表3所示。在實際應用過程中,某些字段和具體時間有關,如表1中的“***年縣局編碼”、表2中的“***年樹種代碼”等,對于這種情況,我們設計了與期數匹配的動態字段,從而為程序的可擴展性提供了基礎。

表1 縣局代碼表

表2 樹種代碼表

表3 公式與森林收獲表
此外,本系統還提供按條件添加數據的功能,即用戶可以根據關鍵字段(如縣局名稱等)及樹種名稱添加數據,以及計算樹高、材積以及生物量,并能夠按照條件進行查詢、修改與刪除數據的功能。為了滿足用戶的需要,可以將結果導出為EXCEL報表,并進行對應的導入和維護。
林業數據維護與服務平臺主要實現的功能模塊主要有以下6個模塊,如圖2所示。

圖2 林業數據維護與服務平臺功能模塊
3.2.1 按條件(縣、樹種、樣地號)添加數據
實現按照縣局名稱、樹種名稱對樹高、材積、生物量的公式錄入的功能,根據樹種名稱添加記錄的界面如圖3、圖4所示。

圖3 縣局選擇界面

圖4 樹種選擇界面
ADO是Active Data Object的縮寫,稱為ActiveX數據對象。利用ADO對象,通過ODBC驅動程序或OLE DB連接字符串,可實現對任意數據庫的存取和訪問,訪問的數據類型也更加豐富[12-14]。使用ADO技術,需要通過選擇“工程”菜單中的“引用”來為 ADO 對象庫添加一個引用,然后在“引用”對話框中選擇“Microsoft ActiveX Data Objects 2.6 Library”。
讀取數據庫中的縣局名稱顯示在圖4種左邊的ListBox框中。
3.2.2 修改數據的功能
實現按照縣局名稱、樹種名稱對樹高、材積、生物量的公式進行添加或者修改的功能。點擊保存時,則會彈出相應的對話框,提示用戶是否修改原記錄,若數據庫里有該條記錄,則提醒用戶是否修改原記錄,若數據庫中無該條記錄,則直接保存。
3.2.3 刪除數據的功能
在此模塊下,用戶首先可以查詢相關數據,若需要刪除,則用戶可以點擊刪除按鈕進行刪除對數據進行刪除。
3.2.4 計算樹高、材積及生物量功能
在此功能模塊下,使用了VBScript技術[15-18],對系統進行管理,加強了界面的動態性和交互性。當用戶輸入胸徑,相應的樹高值、材積及生物量值能夠實時計算出來,并顯示在相應的對話框中。
該模塊實現了依據所輸入的胸徑獲取實時獲取樹高、材積以及生物量的功能,并具備數據檢錯的功能。實現根據輸入胸徑,按照所輸入的公式計算樹高、材積、生物量的功能,采用VBScript中的JS函數進行運算,需要在窗體中添加Microsoft Script Control 1.0,具體添加步驟為:需要通過選擇“工程”菜單中的“組件”,勾選Microsoft Script Control 1.0即可,并拖入窗體。實現代碼如下:
Function JS(ByVal Expressions As String) As String
Dim MsscAs Object
Set Mssc=CreateObject("MSScriptControl.ScriptControl")
Mssc.Language="vbscript"
On Error GoToEvalErr
JS=Mssc.Eval(Expressions)
Exit Function
EvalErr:
Exit Function
End FunctionFunctionJS(ByVal Expressions As String) As String
Dim MsscAs Object
Set Mssc=CreateObject("MSScriptControl.ScriptControl")
Mssc.Language="vbscript"
On Error GoToEvalErr
JS=Mssc.Eval(Expressions)
Exit Function
EvalErr:
Exit Function
當輸入相應的胸徑后,實時計算出相應的樹高、材積及生物量,并顯示在相應的對話框中。具體實現代碼如下所示:
Private Sub TextDm_Change()
Dim d As Double
Dim h As Double
Dim s As String
Dim t As String
Dim u As String
ScriptControl1.Language="vbscript"
If Len(TextDm.Text) > 0 Then
d=TextDm.Text
Else
d=0
End If
s=LCase(TextHformulas.Text)
s=Replace(s, "d", d)
TextH.Text=JS(s)‘樹高計算
h=TextH.Text
t=LCase(TextVformulas.Text)
t=Replace(t, "d", d)
t=Replace(t, "h", h)
TextV.Text=JS(t)’材積計算
u=LCase(TextBformulas.Text)
u=Replace(u, "d", d)
u=Replace(u, "h", h)
TextB.Text=JS(u)’生物量計算
End Sub
計算模塊的流程圖如圖5所示。

圖5 計算模塊流程圖
3.2.5 按條件進行搜索與查詢的功能
該系統實現了根據條件查詢記錄的功能,以往的森林調查數據是一些EXCEL表格,用戶查詢想獲取的數據往往耗費過高的人力成本與時間成本。為了滿足用戶根據需要查詢所需要的數據,設定相關的關鍵字,供用戶搜索查詢。用戶只要選擇相應的關鍵字,對應的數據記錄即可顯示在界面中的DataGridview控件中。
系統設計了用戶常用的幾個字段,例如樹種代碼、樹種名稱、縣局名稱等,用戶只需搜索關鍵字設置為縣局代碼、者縣局名稱以及樹種名稱或者這幾個字段的組合,就可以搜索到符合搜索條件的所有記錄。例如按照樹種進行查詢記錄,實現的核心代碼如下所示:
Dim strSql As String
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.Provider="Microsoft.Jet.OleDB.4.0"
conn.OpenApp.Path& "DataBaseProcDB.mdb"
conn.CursorLocation=adUseClient
strSql="select * from T_Formulas where 樹種名稱='" + cbxSpecies.Text + "' order by 編號 DESC"
Set rs=conn.Execute(strSql)
Set DataGrid1.DataSource=rs
3.2.6 生成報表及數據導入導出功能
對林分的林分因子可以按照不同字段,如縣局名稱、樹種名稱等進行查詢,并對檢索數據結果可以進行導出報表,用戶也可以根據需要對外部數據進行導入的操作。
根據上述設計原則,我們在Windows平臺下,借助VB6.0+VBScript語言、Access數據庫,開發了基于林業的數據服務平臺,具有精確計算樹高、材積以及生物量等指標,具備常規數據庫基本操作,包括增刪改和條件(模糊)搜索等。
在公式設置、計算及導入數據庫模塊中,用戶根據界面提示,可輸入相關公式。考慮到公式輸入的繁瑣,且由于不同縣局及樹種公式的變化多數只需要修改相關公式的參數即可,故林業數據將公式固化在Text編輯框中,用戶只需根據需要對公式進行修改。這樣將會大大節省用戶操作時間,提高界面的友好性。當用戶輸入胸徑時,相應的樹高、材積以及生物量會實時依據用戶所輸入的樹高公式、材積公式,以及生物量公式精準地計算并顯示在相應的Text對話框中。這些數據為森林經營及管理者及時了解森林生長收獲情況提供數據支撐。如圖6所示。

圖6 基于任意輸入公式的計算
在條件搜索模塊中,該模塊則提供了根據縣局代碼、縣局名稱及樹種名稱進行搜索查詢的功能,用戶根據需要將查詢的數據進行導出或打印,并可以將外部數據導入數據庫的功能。這些功能的開發提供了更精準數據服務給森林經營管理者,有助于更及時準確了解每個縣(局)的森林生長與收獲情況。如圖7所示。

圖7 條件搜索及導入導出
開發了面向縣級林業數據服務平臺,對于森林資源數據庫的管理及維護,以及根據所在區域及樹種名稱進行樹高、材積以及生物量的計算等提供信息服務和專業分析,對基層林業工作者實時掌握該地區的森林蓄積、生物量等定量指標具有重要積極促進作用。
以VB6.0為開發語言,采用VBScript技術,ADO數據庫技術庫等,著眼于現有林業調查數據,建設一個安全、可靠、實用、可擴展的面向縣級林業數據服務平臺,盡可能減少財力投入,最大限度地滿足林業生產及科研的實際需要。同時,平臺的設計注重簡潔,功能齊全、使用方便、靈活,用戶界面友好,以便于用戶的管理和使用。
該平臺的推廣與使用有助于提高基層林業工作人員的數據維護效率,降低數據維護成本,實現精準林業提高森林經營水平輔助經營決策具有積極的促進作用。
[1] 孟憲宇.測樹學[M].3版.北京:中國林業出版社,2006.
[2] 張永利. 中國森林生態系統服務功能研究[M]. 北京:科學出版社,2010.
[3] Miah M D, Man Y S, Koike M. Forests to Climate Change Mitigation[M]. Springer Berlin Heidelberg, 2011.
[4] Peterson D L, Vose J M, Patel-Weynand T. Climate Change and United States Forests[M]. Springer Netherlands, 2014.
[5] Malik A, Mertz O, Fensholt R. Mangrove forest decline: consequences for livelihoods and environment in South Sulawesi[J]. Regional Environmental Change, 2017, 17(1):1- 13.
[6] 幸樂. 基于J2EE的物流管理系統的設計與實現[D]. 電子科技大學, 2015.
[7] 高東靜,林云,彭鑫,等.面向設計層次優化的軟件自動化重構[J].計算機應用與軟件,2017,34(10):8- 13.
[8] 姜吉婷,韓勇,張小壘,等.基于B/S與C/S協同服務的高校資產與實驗室綜合管理平臺的設計實現[J].計算機應用與軟件,2014,31(3):47- 50,63.
[9] 張書強. 基于C/S結構的光纜生產管理系統的設計與實現[D]. 南開大學, 2016.
[10] 沈劍波, 雷相東, 舒清態,等. 森林健康評價系統設計與實現[J]. 計算機技術與發展, 2014,24(8):206- 209.
[11] 劉紅梅,安道星.Visual Basic程序設計案例教程[M].北京:人民郵電出版社,2014.
[12] 陳靜, 范乃吉, 袁曉東,等. Matlab環境下的Oracle數據庫訪問技術[J]. 計算機應用, 2015(S1):78- 82.
[13] 彭志敏. 基于ADO數據庫訪問技術的財務智能管理系統的設計[J]. 自動化與儀器儀表, 2016(11):105- 106.
[14] 徐楓, 馬國之, 劉良旭. 基于ADO技術的數據庫訪問研究與實現[J]. 計算機工程與設計, 2004, 25(1):107- 110.
[15] 王棋, 王帥, 趙海洋. 基于EPS中VBScript二次開發在地籍處理中的應用[J]. 測繪與空間地理信息, 2011, 34(6):191- 193.
[16] Fu X, He X, Lau K S. Spectrality of Self-Similar Tiles[J]. Constructive Approximation, 2015, 42(3):519- 541.
[17] 盧玉申. ASP企業倉庫管理系統的設計與實現[D].吉林大學, 2015.
[18] Yalamanchili S, Kumari K S. Comparison of manual and automatic testing using genetic algorithm for information handling system[C]//International Conference on Signal Processing, Communication, Power and Embedded System. IEEE, 2017:1795- 1799.