沈劍波 雷淵才 王功明 符利勇*(中國(guó)林業(yè)科學(xué)研究院資源信息研究所 北京 0009)(中國(guó)科學(xué)院生物物理研究所 北京000)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,林業(yè)因子精準(zhǔn)估計(jì)越來(lái)越受到行業(yè)重視。樹(shù)高、材積(即木材體積)以及生物量是森林調(diào)查中最重要的測(cè)樹(shù)因子,也是評(píng)定林木生長(zhǎng)狀況、立地質(zhì)量以及劃分林層的重要依據(jù)[1]。但是,這些因子的測(cè)量耗時(shí)、調(diào)查成本高,通常是通過(guò)其他的林業(yè)因子(例如直徑等)預(yù)估得到。迄今為止,關(guān)于樹(shù)高曲線、材積方程和生物量模型的構(gòu)建方法有很多報(bào)道,并且發(fā)展較成熟。然而如何把這些模型集成到一個(gè)系統(tǒng)讓用戶方便計(jì)算樹(shù)高、材積和生物量,當(dāng)前國(guó)內(nèi)外研究較少。
目前,關(guān)于森林收獲數(shù)據(jù)維護(hù)軟件管理系統(tǒng)較少。如何利用現(xiàn)有的森林調(diào)查數(shù)據(jù)建立面向縣級(jí)林業(yè)數(shù)據(jù)服務(wù)平臺(tái),實(shí)現(xiàn)精準(zhǔn)預(yù)估森林生長(zhǎng)與收獲,以及如何維護(hù)與管理這些數(shù)據(jù)、準(zhǔn)確估算森林收獲及立地質(zhì)量的評(píng)價(jià)具有重要的意義。針對(duì)上述實(shí)際需求,開(kāi)發(fā)了面向縣級(jí)林業(yè)數(shù)據(jù)服務(wù)平臺(tái),可為森林的經(jīng)營(yíng)管理提供重要的數(shù)據(jù)支撐。
森林調(diào)查數(shù)據(jù)目的在于及時(shí)掌握森林資源的數(shù)量、質(zhì)量和生長(zhǎng)、消亡的動(dòng)態(tài)規(guī)律及其與自然環(huán)境和經(jīng)濟(jì)、經(jīng)營(yíng)等條件之間的關(guān)系。目前,國(guó)家對(duì)于生態(tài)環(huán)境越來(lái)越重視,森林是地球上復(fù)雜、多物種、多功能與多效益的生態(tài)系統(tǒng),是陸地生態(tài)系統(tǒng)的主體,對(duì)維護(hù)生態(tài)平衡起著決定性作用,其在實(shí)現(xiàn)社會(huì)經(jīng)濟(jì)可持續(xù)發(fā)展具有舉足輕重地位[2-5]。目前林業(yè)部門森林資源數(shù)據(jù)多,但真正利用起來(lái)能夠盤活的數(shù)據(jù)卻很少,另外由于森林調(diào)查數(shù)據(jù)多,林業(yè)工作者對(duì)數(shù)據(jù)查詢及管理與維護(hù)費(fèi)時(shí)費(fèi)力,消耗人力成本大。
為了解決目前林業(yè)生產(chǎn)單位數(shù)據(jù)量大與人力資源少的矛盾,根據(jù)實(shí)際生產(chǎn)需要,開(kāi)發(fā)出操作簡(jiǎn)單、界面友好的基于縣級(jí)林業(yè)數(shù)據(jù)維護(hù)與管理平臺(tái),對(duì)于精確測(cè)算森林生長(zhǎng)與收獲,提高林業(yè)生產(chǎn)效率具有積極的作用。
基于該平臺(tái)用戶可以通過(guò)原始數(shù)據(jù)中的胸徑、樹(shù)種以及縣(局)計(jì)算出樹(shù)高、材積及生物量??梢愿鶕?jù)關(guān)鍵字進(jìn)行查詢,導(dǎo)出所需數(shù)據(jù)生成報(bào)表的功能。利用開(kāi)發(fā)的程序計(jì)算樹(shù)高、材積以及生物量,具有迅速、便捷的特點(diǎn)。其計(jì)算結(jié)果用于制訂和調(diào)整林業(yè)經(jīng)營(yíng)政策,編制林業(yè)生產(chǎn)經(jīng)營(yíng)方案和鑒定森林經(jīng)營(yíng)效果,可以保證森林資源在國(guó)民經(jīng)濟(jì)建設(shè)中得到充分利用,并不斷提高其潛在生產(chǎn)力。
系統(tǒng)采用自頂向下的結(jié)構(gòu)化設(shè)計(jì)方法[6],在設(shè)計(jì)時(shí),首先考慮系統(tǒng)的任務(wù)、環(huán)境、需求和局限,然后在總體上設(shè)計(jì)出能夠滿足系統(tǒng)要求的模塊化體系結(jié)構(gòu),并設(shè)計(jì)出每個(gè)子系統(tǒng)或子模塊[7]??紤]到交互性和較快的處理速度、存取安全的需求,系統(tǒng)將采用C/S構(gòu)架[8-9],數(shù)據(jù)庫(kù)設(shè)計(jì)考慮可擴(kuò)展字段,并采用組件化軟件開(kāi)發(fā)技術(shù)以保證系統(tǒng)的實(shí)用性、靈活性、可復(fù)用性、交互性以及可擴(kuò)展性。
系統(tǒng)設(shè)計(jì)時(shí)考慮了人性化、界面友好的特點(diǎn)。例如,不同縣(局)、不同樹(shù)種的樹(shù)高、材積及生物量的計(jì)算公式輸入部分,由于不同樹(shù)種的計(jì)算公式大同小異,很多情況下只是參數(shù)的不同,用戶只需要修改參數(shù)而已。若該對(duì)話框完全設(shè)置為空,用戶則必須重新輸入公式,而樹(shù)高、材積及生物量的計(jì)算公式一般較為復(fù)雜,用戶將會(huì)消耗大量時(shí)間輸入公式。本研究設(shè)計(jì)了可編輯的對(duì)話框,并把較為通用的樹(shù)高、材積及生物量公式固化在編輯框中,用戶根據(jù)需要可以對(duì)公式進(jìn)行修改或者編輯,這樣的設(shè)計(jì)可以大幅度節(jié)約用戶的時(shí)間與人力成本。本系統(tǒng)的總體設(shè)計(jì)架構(gòu)如圖1所示。
圖1 系統(tǒng)流程結(jié)構(gòu)圖
本系統(tǒng)采用Microsoft Visual Basic 6.0為開(kāi)發(fā)語(yǔ)言,開(kāi)發(fā)過(guò)程中運(yùn)用了VBSCRIPT技術(shù),以ACCESS為后臺(tái)數(shù)據(jù)庫(kù),利用ADO數(shù)據(jù)庫(kù)技術(shù)[10-11],實(shí)現(xiàn)了根據(jù)以不同的縣(局)以及樹(shù)種對(duì)數(shù)據(jù)庫(kù)的樹(shù)高、材積及生物量的數(shù)據(jù)維護(hù)。
信息資源是系統(tǒng)建設(shè)的重要基礎(chǔ)成果,是信息共享和交換的物理基礎(chǔ)。主要包括原始數(shù)據(jù)庫(kù)、成果數(shù)據(jù)庫(kù)。各種數(shù)據(jù)通過(guò)統(tǒng)一的數(shù)據(jù)庫(kù)標(biāo)準(zhǔn),為業(yè)務(wù)應(yīng)用層提供數(shù)據(jù)保障。
數(shù)據(jù)訪問(wèn)層是對(duì)后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),并為業(yè)務(wù)處理層提供服務(wù)的組件層。數(shù)據(jù)訪問(wèn)組件基于C/S模式利用ADO數(shù)據(jù)庫(kù)引擎對(duì)后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),實(shí)現(xiàn)數(shù)據(jù)的增加、修改、刪除、計(jì)算樹(shù)高、材積生物量與材積以及按條件搜索查詢等功能。
本平臺(tái)根據(jù)需求設(shè)計(jì)的表,主要有縣局表(T_Bureau)、樹(shù)種表(T_Tree)和公式與收獲表(T_Formulas)等,在字段設(shè)計(jì)過(guò)程中,需要考慮命名規(guī)范、兼容性等要求,設(shè)計(jì)好的字段內(nèi)容如表1-表3所示。在實(shí)際應(yīng)用過(guò)程中,某些字段和具體時(shí)間有關(guān),如表1中的“***年縣局編碼”、表2中的“***年樹(shù)種代碼”等,對(duì)于這種情況,我們?cè)O(shè)計(jì)了與期數(shù)匹配的動(dòng)態(tài)字段,從而為程序的可擴(kuò)展性提供了基礎(chǔ)。
表1 縣局代碼表
表2 樹(shù)種代碼表
表3 公式與森林收獲表
此外,本系統(tǒng)還提供按條件添加數(shù)據(jù)的功能,即用戶可以根據(jù)關(guān)鍵字段(如縣局名稱等)及樹(shù)種名稱添加數(shù)據(jù),以及計(jì)算樹(shù)高、材積以及生物量,并能夠按照條件進(jìn)行查詢、修改與刪除數(shù)據(jù)的功能。為了滿足用戶的需要,可以將結(jié)果導(dǎo)出為EXCEL報(bào)表,并進(jìn)行對(duì)應(yīng)的導(dǎo)入和維護(hù)。
林業(yè)數(shù)據(jù)維護(hù)與服務(wù)平臺(tái)主要實(shí)現(xiàn)的功能模塊主要有以下6個(gè)模塊,如圖2所示。
圖2 林業(yè)數(shù)據(jù)維護(hù)與服務(wù)平臺(tái)功能模塊
3.2.1 按條件(縣、樹(shù)種、樣地號(hào))添加數(shù)據(jù)
實(shí)現(xiàn)按照縣局名稱、樹(shù)種名稱對(duì)樹(shù)高、材積、生物量的公式錄入的功能,根據(jù)樹(shù)種名稱添加記錄的界面如圖3、圖4所示。
圖3 縣局選擇界面
圖4 樹(shù)種選擇界面
ADO是Active Data Object的縮寫(xiě),稱為ActiveX數(shù)據(jù)對(duì)象。利用ADO對(duì)象,通過(guò)ODBC驅(qū)動(dòng)程序或OLE DB連接字符串,可實(shí)現(xiàn)對(duì)任意數(shù)據(jù)庫(kù)的存取和訪問(wèn),訪問(wèn)的數(shù)據(jù)類型也更加豐富[12-14]。使用ADO技術(shù),需要通過(guò)選擇“工程”菜單中的“引用”來(lái)為 ADO 對(duì)象庫(kù)添加一個(gè)引用,然后在“引用”對(duì)話框中選擇“Microsoft ActiveX Data Objects 2.6 Library”。
讀取數(shù)據(jù)庫(kù)中的縣局名稱顯示在圖4種左邊的ListBox框中。
3.2.2 修改數(shù)據(jù)的功能
實(shí)現(xiàn)按照縣局名稱、樹(shù)種名稱對(duì)樹(shù)高、材積、生物量的公式進(jìn)行添加或者修改的功能。點(diǎn)擊保存時(shí),則會(huì)彈出相應(yīng)的對(duì)話框,提示用戶是否修改原記錄,若數(shù)據(jù)庫(kù)里有該條記錄,則提醒用戶是否修改原記錄,若數(shù)據(jù)庫(kù)中無(wú)該條記錄,則直接保存。
3.2.3 刪除數(shù)據(jù)的功能
在此模塊下,用戶首先可以查詢相關(guān)數(shù)據(jù),若需要?jiǎng)h除,則用戶可以點(diǎn)擊刪除按鈕進(jìn)行刪除對(duì)數(shù)據(jù)進(jìn)行刪除。
3.2.4 計(jì)算樹(shù)高、材積及生物量功能
在此功能模塊下,使用了VBScript技術(shù)[15-18],對(duì)系統(tǒng)進(jìn)行管理,加強(qiáng)了界面的動(dòng)態(tài)性和交互性。當(dāng)用戶輸入胸徑,相應(yīng)的樹(shù)高值、材積及生物量值能夠?qū)崟r(shí)計(jì)算出來(lái),并顯示在相應(yīng)的對(duì)話框中。
該模塊實(shí)現(xiàn)了依據(jù)所輸入的胸徑獲取實(shí)時(shí)獲取樹(shù)高、材積以及生物量的功能,并具備數(shù)據(jù)檢錯(cuò)的功能。實(shí)現(xiàn)根據(jù)輸入胸徑,按照所輸入的公式計(jì)算樹(shù)高、材積、生物量的功能,采用VBScript中的JS函數(shù)進(jìn)行運(yùn)算,需要在窗體中添加Microsoft Script Control 1.0,具體添加步驟為:需要通過(guò)選擇“工程”菜單中的“組件”,勾選Microsoft Script Control 1.0即可,并拖入窗體。實(shí)現(xiàn)代碼如下:
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
當(dāng)輸入相應(yīng)的胸徑后,實(shí)時(shí)計(jì)算出相應(yīng)的樹(shù)高、材積及生物量,并顯示在相應(yīng)的對(duì)話框中。具體實(shí)現(xiàn)代碼如下所示:
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)‘樹(shù)高計(jì)算
h=TextH.Text
t=LCase(TextVformulas.Text)
t=Replace(t, "d", d)
t=Replace(t, "h", h)
TextV.Text=JS(t)’材積計(jì)算
u=LCase(TextBformulas.Text)
u=Replace(u, "d", d)
u=Replace(u, "h", h)
TextB.Text=JS(u)’生物量計(jì)算
End Sub
計(jì)算模塊的流程圖如圖5所示。
圖5 計(jì)算模塊流程圖
3.2.5 按條件進(jìn)行搜索與查詢的功能
該系統(tǒng)實(shí)現(xiàn)了根據(jù)條件查詢記錄的功能,以往的森林調(diào)查數(shù)據(jù)是一些EXCEL表格,用戶查詢想獲取的數(shù)據(jù)往往耗費(fèi)過(guò)高的人力成本與時(shí)間成本。為了滿足用戶根據(jù)需要查詢所需要的數(shù)據(jù),設(shè)定相關(guān)的關(guān)鍵字,供用戶搜索查詢。用戶只要選擇相應(yīng)的關(guān)鍵字,對(duì)應(yīng)的數(shù)據(jù)記錄即可顯示在界面中的DataGridview控件中。
系統(tǒng)設(shè)計(jì)了用戶常用的幾個(gè)字段,例如樹(shù)種代碼、樹(shù)種名稱、縣局名稱等,用戶只需搜索關(guān)鍵字設(shè)置為縣局代碼、者縣局名稱以及樹(shù)種名稱或者這幾個(gè)字段的組合,就可以搜索到符合搜索條件的所有記錄。例如按照樹(shù)種進(jìn)行查詢記錄,實(shí)現(xiàn)的核心代碼如下所示:
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 樹(shù)種名稱='" + cbxSpecies.Text + "' order by 編號(hào) DESC"
Set rs=conn.Execute(strSql)
Set DataGrid1.DataSource=rs
3.2.6 生成報(bào)表及數(shù)據(jù)導(dǎo)入導(dǎo)出功能
對(duì)林分的林分因子可以按照不同字段,如縣局名稱、樹(shù)種名稱等進(jìn)行查詢,并對(duì)檢索數(shù)據(jù)結(jié)果可以進(jìn)行導(dǎo)出報(bào)表,用戶也可以根據(jù)需要對(duì)外部數(shù)據(jù)進(jìn)行導(dǎo)入的操作。
根據(jù)上述設(shè)計(jì)原則,我們?cè)赪indows平臺(tái)下,借助VB6.0+VBScript語(yǔ)言、Access數(shù)據(jù)庫(kù),開(kāi)發(fā)了基于林業(yè)的數(shù)據(jù)服務(wù)平臺(tái),具有精確計(jì)算樹(shù)高、材積以及生物量等指標(biāo),具備常規(guī)數(shù)據(jù)庫(kù)基本操作,包括增刪改和條件(模糊)搜索等。
在公式設(shè)置、計(jì)算及導(dǎo)入數(shù)據(jù)庫(kù)模塊中,用戶根據(jù)界面提示,可輸入相關(guān)公式??紤]到公式輸入的繁瑣,且由于不同縣局及樹(shù)種公式的變化多數(shù)只需要修改相關(guān)公式的參數(shù)即可,故林業(yè)數(shù)據(jù)將公式固化在Text編輯框中,用戶只需根據(jù)需要對(duì)公式進(jìn)行修改。這樣將會(huì)大大節(jié)省用戶操作時(shí)間,提高界面的友好性。當(dāng)用戶輸入胸徑時(shí),相應(yīng)的樹(shù)高、材積以及生物量會(huì)實(shí)時(shí)依據(jù)用戶所輸入的樹(shù)高公式、材積公式,以及生物量公式精準(zhǔn)地計(jì)算并顯示在相應(yīng)的Text對(duì)話框中。這些數(shù)據(jù)為森林經(jīng)營(yíng)及管理者及時(shí)了解森林生長(zhǎng)收獲情況提供數(shù)據(jù)支撐。如圖6所示。
圖6 基于任意輸入公式的計(jì)算
在條件搜索模塊中,該模塊則提供了根據(jù)縣局代碼、縣局名稱及樹(shù)種名稱進(jìn)行搜索查詢的功能,用戶根據(jù)需要將查詢的數(shù)據(jù)進(jìn)行導(dǎo)出或打印,并可以將外部數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)的功能。這些功能的開(kāi)發(fā)提供了更精準(zhǔn)數(shù)據(jù)服務(wù)給森林經(jīng)營(yíng)管理者,有助于更及時(shí)準(zhǔn)確了解每個(gè)縣(局)的森林生長(zhǎng)與收獲情況。如圖7所示。
圖7 條件搜索及導(dǎo)入導(dǎo)出
開(kāi)發(fā)了面向縣級(jí)林業(yè)數(shù)據(jù)服務(wù)平臺(tái),對(duì)于森林資源數(shù)據(jù)庫(kù)的管理及維護(hù),以及根據(jù)所在區(qū)域及樹(shù)種名稱進(jìn)行樹(shù)高、材積以及生物量的計(jì)算等提供信息服務(wù)和專業(yè)分析,對(duì)基層林業(yè)工作者實(shí)時(shí)掌握該地區(qū)的森林蓄積、生物量等定量指標(biāo)具有重要積極促進(jìn)作用。
以VB6.0為開(kāi)發(fā)語(yǔ)言,采用VBScript技術(shù),ADO數(shù)據(jù)庫(kù)技術(shù)庫(kù)等,著眼于現(xiàn)有林業(yè)調(diào)查數(shù)據(jù),建設(shè)一個(gè)安全、可靠、實(shí)用、可擴(kuò)展的面向縣級(jí)林業(yè)數(shù)據(jù)服務(wù)平臺(tái),盡可能減少財(cái)力投入,最大限度地滿足林業(yè)生產(chǎn)及科研的實(shí)際需要。同時(shí),平臺(tái)的設(shè)計(jì)注重簡(jiǎn)潔,功能齊全、使用方便、靈活,用戶界面友好,以便于用戶的管理和使用。
該平臺(tái)的推廣與使用有助于提高基層林業(yè)工作人員的數(shù)據(jù)維護(hù)效率,降低數(shù)據(jù)維護(hù)成本,實(shí)現(xiàn)精準(zhǔn)林業(yè)提高森林經(jīng)營(yíng)水平輔助經(jīng)營(yíng)決策具有積極的促進(jìn)作用。
[1] 孟憲宇.測(cè)樹(shù)學(xué)[M].3版.北京:中國(guó)林業(yè)出版社,2006.
[2] 張永利. 中國(guó)森林生態(tài)系統(tǒng)服務(wù)功能研究[M]. 北京:科學(xué)出版社,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] 幸樂(lè). 基于J2EE的物流管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 電子科技大學(xué), 2015.
[7] 高東靜,林云,彭鑫,等.面向設(shè)計(jì)層次優(yōu)化的軟件自動(dòng)化重構(gòu)[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(10):8- 13.
[8] 姜吉婷,韓勇,張小壘,等.基于B/S與C/S協(xié)同服務(wù)的高校資產(chǎn)與實(shí)驗(yàn)室綜合管理平臺(tái)的設(shè)計(jì)實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(3):47- 50,63.
[9] 張書(shū)強(qiáng). 基于C/S結(jié)構(gòu)的光纜生產(chǎn)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 南開(kāi)大學(xué), 2016.
[10] 沈劍波, 雷相東, 舒清態(tài),等. 森林健康評(píng)價(jià)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2014,24(8):206- 209.
[11] 劉紅梅,安道星.Visual Basic程序設(shè)計(jì)案例教程[M].北京:人民郵電出版社,2014.
[12] 陳靜, 范乃吉, 袁曉東,等. Matlab環(huán)境下的Oracle數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)[J]. 計(jì)算機(jī)應(yīng)用, 2015(S1):78- 82.
[13] 彭志敏. 基于ADO數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的財(cái)務(wù)智能管理系統(tǒng)的設(shè)計(jì)[J]. 自動(dòng)化與儀器儀表, 2016(11):105- 106.
[14] 徐楓, 馬國(guó)之, 劉良旭. 基于ADO技術(shù)的數(shù)據(jù)庫(kù)訪問(wèn)研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2004, 25(1):107- 110.
[15] 王棋, 王帥, 趙海洋. 基于EPS中VBScript二次開(kāi)發(fā)在地籍處理中的應(yīng)用[J]. 測(cè)繪與空間地理信息, 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企業(yè)倉(cāng)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].吉林大學(xué), 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.