姜黎黎
(遼寧省林業(yè)調(diào)查規(guī)劃監(jiān)測院,沈陽 110122)
森林采伐限額制度是《森林法》確立的一項(xiàng)重要的法律制度。森林采伐限額編制是以保護(hù)發(fā)展森林資源、改善生態(tài)環(huán)境和推進(jìn)生態(tài)文明、建設(shè)美麗中國為宗旨,以森林可持續(xù)經(jīng)營理論為依據(jù),以培育健康、穩(wěn)定、高效的森林生態(tài)系統(tǒng)和提供更多更好的優(yōu)質(zhì)林產(chǎn)品為目標(biāo)。編制限額和實(shí)施限額的目的是不斷增加森林資源數(shù)量和提升森林資源質(zhì)量,穩(wěn)步增強(qiáng)森林生態(tài)系統(tǒng)的整體功能。森林合理年采伐量測算是森林采伐限額編制的重點(diǎn)內(nèi)容、核心內(nèi)容,如何科學(xué)地測算采伐限額主伐合理年伐量,將決定著編限單位森林采伐限額編制的成果質(zhì)量和準(zhǔn)確性,意義十分重大[1]。
遼寧省十四五森林采伐限額編制,以森林資源管理“一張圖”年度更新成果為基礎(chǔ),嚴(yán)格按照采伐限額的編制原則,區(qū)分不同森林類別、樹種、林分起源和經(jīng)營目標(biāo),以促進(jìn)森林結(jié)構(gòu)調(diào)整和提高林分質(zhì)量為目的,合理年采伐量測算是遼寧省“十四五”森林采伐限額編制的重中之重。為提高合理年采伐量測算效率和測算準(zhǔn)確性,研究探討了根據(jù)國家林草局《關(guān)于編制“十四五”期間年森林采伐限額編制工作的通知》(林資發(fā)[2019]99 號(hào))的要求,結(jié)合遼寧省實(shí)際,充分利用國家林草局下發(fā)的森林合理年伐量測算系統(tǒng)測算合理年采伐量,通過Py-thon 編寫程序?qū)崿F(xiàn)森林合理年采伐量測算數(shù)據(jù)提取及測算方法。
利用Python 的Tkinter 模塊,設(shè)計(jì)工具界面,主要使用了Entry、Button、Label 等控件,如圖1。
圖1
數(shù)據(jù)庫是測算數(shù)據(jù)的存儲(chǔ)和提取的容器,數(shù)據(jù)庫中一共需要兩張數(shù)據(jù)表:測算數(shù)據(jù)小班表,測算數(shù)據(jù)中間表。測算數(shù)據(jù)小班表用來存儲(chǔ)導(dǎo)入的小班表(Excel 格式),測算數(shù)據(jù)中間表用來存儲(chǔ)測算數(shù)據(jù)小班表標(biāo)準(zhǔn)化處理后的結(jié)果,也是數(shù)據(jù)提取的基礎(chǔ)表。
將各編限單位按照編限要求填寫好編限單位名稱、編限單位代碼、是否參與編限、編限權(quán)屬的小班序列表導(dǎo)入到Access 數(shù)據(jù)庫中的測算數(shù)據(jù)小班表中。主要是使用Python 的xlrd 模塊讀取Excel 文件,用pypyodbc 模塊寫入Access 數(shù)據(jù)庫。xlrd 是Py-thon 讀取Excel 的擴(kuò)展模塊,可以實(shí)現(xiàn)指定表單、指定單元格的讀取。pypyodbc 是一個(gè)Python ODBC 庫,具有極大的兼容性、可嵌入性和代碼移植性,可在多平臺(tái)下運(yùn)行。
將測算數(shù)據(jù)小班表標(biāo)準(zhǔn)化處理,生成數(shù)據(jù)中間表。
對數(shù)據(jù)中間表劃分編限類型。
3.3.1 編限類型分類
根據(jù)國家林草局下發(fā)的森林合理年伐量測算系統(tǒng)需要的6 張數(shù)據(jù)表,對參與編限的森林資源數(shù)據(jù)進(jìn)行編限類型劃分,一共劃分為7 個(gè)大類型:一般用材林主伐、短輪伐用材林主伐、公益林更新采伐、撫育采伐、低產(chǎn)(效)林改造、其他采伐、不參與編限,具體劃分情況如表1。
表1 森林資源數(shù)據(jù)編限類型劃分
3.3.2 確定編限類型劃分條件
根據(jù)《森林經(jīng)營技術(shù)規(guī)程》DB21/T 706—2013結(jié)合遼寧省森林經(jīng)營實(shí)際,確定各編限類型的劃分條件,讓每個(gè)參與編限測算的小班數(shù)據(jù)都能準(zhǔn)確的劃分編限類型。
3.3.3 使用Python+pypyodbc,利用SQL 的UPDATE語句對數(shù)據(jù)中間表劃分編限類型。
如公益林生態(tài)疏伐的劃分語句為:
UPDATE XIAOBAN SET編限類型=′44′WHERE森林類別代碼in(′1′,′3′,′4′)And 齡組代碼=′2′And 郁閉度>=0.8
按照森林合理年伐量測算系統(tǒng)的要求提取需要的測算數(shù)據(jù)表,以一般用材林主伐為例(即01.txt),如下:
SELECT * FROM (SELECT 編限單位代碼,′233′as 林種代碼,szdm,numb,起源代碼,林木權(quán)屬,
ROUND(SUM(IIF(齡組代碼=′1′,面積,0)),2) AS幼齡林面積,SUM(IIF(齡組代碼=′1′,小班蓄積,0))AS 幼齡林蓄積,
ROUND(SUM(IIF(齡組代碼=′2′,面積,0)),2) AS中齡林面積,SUM(IIF(齡組代碼=′2′,小班蓄積,0))AS 中齡林蓄積,
ROUND(SUM(IIF(齡組代碼=′3′,面積,0)),2) AS近熟林面積,SUM(IIF(齡組代碼=′3′,小班蓄積,0))AS 近熟林蓄積,
ROUND(SUM(IIF(齡組代碼=′4′,面積,0)),2) AS成熟林面積,SUM(IIF(齡組代碼=′4′,小班蓄積,0))AS 成熟林蓄積,
ROUND(SUM(IIF(齡組代碼=′5′,面積,0)),2) AS過熟林面積,SUM(IIF(齡組代碼=′5′,小班蓄積,0))AS 過熟林蓄積,TZMB
FROM (SELECT 編限單位代碼,(select code from codetable where name=trim(優(yōu)勢樹種)&起源代碼)AS szdm,(select num from codetable where name=trim(優(yōu)勢樹種) &起源代碼) AS numb,(select mubiao from codetable where name=trim(優(yōu)勢樹種)&起源代碼)AS tzmb,地類代碼,森林類別代碼,起源代碼,林種代碼,郁閉度,齡組代碼,面積,小班蓄積,林木權(quán)屬FROM XIAOBAN WHERE 編限類型in (′10′,′41′,′42′) AND 林種代碼in (′233′) AND 起源代碼=′2′) GROUP BY 編限單位代碼,林木權(quán)屬,起源代碼,szdm,numb,TZMB)
WHERE 幼齡林蓄積+中齡林蓄積+近熟林蓄積+成熟林蓄積+過熟林蓄積>0
使用SQL 多表嵌套查詢語句,利用IIF、SUM 函數(shù)等提取一般用材林主伐測算數(shù)據(jù),最后一個(gè)WHERE條件很重要,經(jīng)過測試發(fā)現(xiàn),如果符合一般用材林主伐條件的某樹種,幼齡林蓄積+中齡林蓄積+近熟林蓄積+成熟林蓄積+過熟林蓄積=0的情況下,導(dǎo)入森林合理年伐量測算系統(tǒng)會(huì)報(bào)錯(cuò),導(dǎo)致導(dǎo)入失敗,所以必須通過WHERE 條件篩選掉等于0的情況。
使用Python 自帶的I/O 接口,利用for 循環(huán)構(gòu)建函數(shù)逐行讀取提取結(jié)果并導(dǎo)出為文本文件(01-06.txt)。代碼如下:
將導(dǎo)出的文本文件(01-06.txt),導(dǎo)入到森林合理年伐量測算系統(tǒng)中進(jìn)行測算,計(jì)算出該單位的合理年伐量。
綜上所述,通過該方法,實(shí)現(xiàn)森林合理年采伐量測算數(shù)據(jù)的一鍵提取,結(jié)合森林合理年伐量測算系統(tǒng)的批量測算,極大地提高了遼寧省“十四五”森林合理年采伐量測算的工作效率,最大程度降低新冠疫情對遼寧省“十四五”森林采伐限額編制工作的影響。