劉 政,王 麗,張 鵬,孫天旭,張 芬
(山東省林業監測規劃院,山東濟南250014)
為掌握林地及林木資源的空間分布,管理屬性現狀及消長變化情況,保持林地及林木資源數據的真實性、準確性和時效性,建立了山東省森林資源動態監測系統。 在監測系統數據庫基礎上,根據國家林草局的數據上報要求,將山東省的資源數據轉換為國家局要求的標準,完成國家林業和草原局要求的數據統計匯總并提報, 或根據其他部門需求,對資源數據進行統計匯總。 通過實現森林資源動態監測,可隨時掌握山東省森林資源空間分布變化情況和林分基本信息,為研究森林資源變化規律和森林空間分布格局等研究工作提供基礎數據。 山東省森林資源監測系統數據庫主要利用ArcGIS 軟件以及Oracle 數據庫軟件進行基礎數據的管理,并通過ArcGIS 或者Access 軟件,利用結構化查詢語言可實現對數據庫信息的查詢、更新。
在森林資源動態監測系統中,作為基礎數據庫數據來源的重要編輯軟件ArcGIS 的個人地理數據庫,就是MDB 格式的,是可在Microsoft Access 數據文件中存儲和管理的ArcGIS 地理數據庫的原始數據格式。 ArcGIS 個人地理數據庫MDB,支持空間數據存儲, 支持標準化結構化查詢語言查詢數據,是桌面關系型數據庫,最大2G 數據大小。
結構化查詢語言Structured Query Language,簡稱SQL,是一種ANSI(American National Standards Institute 美國國家標準化組織)標準的計算機語言。專用于關系數據庫的程序設計語言,用于數據的存取、查詢、更新以及管理關系數據庫系統。 面向數據庫執行查詢;可從數據庫取回數據;可在數據庫中插入新的記錄;可更新數據庫中的數據;可從數據庫刪除記錄;可創建新數據庫;可在數據庫中創建新表;可在數據庫中創建存儲過程;可在數據庫中創建視圖; 可以設置表、 存儲過程和視圖的權限。SQL 語言共分為四大類:數據查詢語言DQL、數據操縱語言DML、數據定義語言DDL、數據控制語言DCL。DQL 數據查詢語句,用于從數據庫中的一個或多個表中查詢指定的數據, 查詢數據的SELECT 語句。DML 數據操作語句,用于修改數據庫中的數據,包括: 將數據插入到一個表中的INSERT 語句; 更新表中已有數據的UPDATE 語句;刪除表中數據的DELETE 語句;DDL 數據定義語言,用于創建、修改、和刪除數據庫內的結構。 創建和刪除數據庫的CREATE DATABASE 和DROP DATABASE 語句;創建、 修改、 重命名、 刪除表的CREATE TABLE、ALTER TABLE、RENAME TABLE、DROP TABLE 語句; 創建和刪除索引的CREATE INDEX 和DROP INDEX 語句;DCL 數據控制語句, 用于控制對數據庫的訪問,包括:用戶授予訪問權限GRANT 語句;上 面 的 SELECT、UPDATE、DELETE、INSERT、CREATE、DROP 等,都是關鍵字。
山東省森林資源動態監測以縣為基本調查單位,利用近期遙感影像,通過室內小班區劃、外業實地調查核實,查清各縣森林、林木和林地資源的種類、數量、質量與分布,將林地及森林資源“一張圖”數據進行每年更新,并及時更新數據庫,為全省社會經濟發展考核、 領導干部自然資源資產離任審計、自然資源資產負債表編制等工作提供及時準確的基礎數據,為全省建設項目使用林地行政許可和林地保護行政執法、生態公寓林保護管理等提供執法依據, 為各級政府和林業主管部門科學決策、規范管理提供重要支撐。
全省森林動態資源監測涉及200 多萬個小班,想要查找某個小班屬性或者某種類別的小班屬性,如果只依靠傳統的方式進行小班數據的瀏覽查找,費時費力,效率很低。 為了更有效的查找小班數據資源, 以森林資源動態監測小班數據為例, 利用Database 軟件,使用SQL 語言中的SELECE 語句進行小班數據查詢。在命令輸入窗口輸入SQL 的查詢語句進行數據庫記錄查詢。
SELECT * FROM SDZY_XBM_A t
WHERE t.DI_LEI=”111”
查詢(SELECT)語句,SELECT 查詢;* 通配符,代表所有數據;FROM 從;SDZY_XBM_A 表名;從SDZY_XBM_A 中查詢所有數據;t 表的別名、 簡稱,用于指代表該表。 WHERE 條件,t.DI_LEI 上述表中DI_LEI 這一列,=”111”等于111,雙引號是表示這個111 是字符串; 從SDZY_XBM_A 中查詢地類等于111 的所有數據。
WHERE t.MIAN_JI BETWEEN 0 AND 1
BETWEEN x AND xx 指數值條件的范圍,上面就是面積在0hm2和1hm2之間的小班。 也可以寫成WHERE t.MIAN_JI>0 AND t.MIAN_JI<1, 當然也可以加NOT WHERE 就是不在這個范圍。
SELECT TOP 10 * FROM SDZY_XBM_A t
WHERE t.DI_LEI=”111”
ORDER BY t.MIAN_JI
TOP n 前n 條記錄,n 是數字,ORDER BY 排序。
SELECT MIN(t.MIAN_JI) AS 最小面積,MAX(t.MIAN_JI) AS 最大面積 FROM SDZY_XBM_A t
AS 別名,這樣查詢結果的列名就會是該名稱。
LEFT(t.DI_LEI,1)=”2”,條件:地類左邊第一個字符等于 “2”, 也就是說是非林地。 MIN 最小值,MAX 最大值。
SELECT DISTINCT t.DI_LEI FROM SDZY_XB M_A t
DISTINCT 去重,去除重復值,可以快速去除列的重復值。
SELECT COUNT (1),SUM (t.MIAN_JI) FROM SDZY_XBM_A t
WHERE t.DI_LEI=”111”
COUNT (1) 指計算數量合計,SUM(t.MIAN_JI):SUM 是合計, 括號內是合計的列名。 從SDZY_XBM_A 中查詢地類等于111 的小班數量和面積合計(圖一),ROUND(xxxx,2),對數值進行四舍五入,2 指小數位數保留2 位(圖二)。

圖一

圖二
WHEREt.DI_LEI = ”111”AND(t.YOU_SHI_SZ=”888” OR t.YOU_SHI_SZ=”666” )
AND 條件,并且,OR 條件,或者。 上面就是地類等于111,同時優勢樹種等于888 或者666。
WHERE t.DI_LEI=”111” AND t.YOU_SHI_SZ IN (“666”,”777”,”888”)
當同一個條件,要等于的條件很多,可以使用“IN”,來達到目的。 同樣“IN”是批量等于,那么“NOT IN”就是批量不等于。
SELECT t.xiang AS 鄉代碼,COUNT(1) AS 小班數,ROUND (SUM (t.MIAN_JI),2) AS 面積 FROM SDZY_XBM_A t
WHERE t.DI_LEI=”111”
GROUP BY t.xiang
t.xiang AS 鄉代碼, 添加查詢列;GROUP BY t.xiang 分組條件列,以鄉來分組,匯總各鄉的地類為純林的小班數和面積。
SELECT t.xiang AS 鄉代碼, (SELECT u.UNIT_NAME FROM SDZY_QH_XIANG_A u WHERE u.UNIT_CODE=t.xiang )AS 鄉代碼
在SDZY_QH_XIANG_A 這個表中查詢鄉名稱,把鄉代碼轉換成鄉名稱。
GROUP BY t.xiang,t.SEN_LIN_LB
新增t.SEN_LIN_LB 為分組條件
GROUP BY t.xiang,LEFT(t.SEN_LIN_LB,1)
LEFT(xxxx,1)從左開始取1 位,把11、12 合并為1,把21、22 合并為2,即是說分出公益林和商品林。
ORDER BY t.xiang DESC
ORDER BY 排序,DESC 不加這個,是升序,加這個關鍵字就是降序。
另外, 如果存在模糊查詢可以使用LIKE 語句進行查找, 例如:WHERE t.SHU_ZHONG_ZC LIKE“%蘋果%”,LIKE 模糊查詢,語句中就是匹配有“蘋果”2 個字的小班。
HAVING ROUND(SUM(t.MIAN_JI),2)>10000
HAVING 這里可以對結果加以過濾, 上面的過濾,就是合計的面積大于10000hm2。 注意:WHERE和HAVING 是一樣的意思,但是WHERE 是分組合并之前執行,HAVING 是分組合。
一段完整的查詢代碼如下:
SELECT t.xiang AS 鄉代碼,(SELECT u.UNIT_NAME FROM SDZY_QH_XIANG_A u WHERE u.UNIT_CODE =t.xiang) AS 鄉 代 碼 ,LEFT (t.SEN_LIN_LB,1) AS 森林類別,COUNT(1) AS 小班數,ROUND(SUM(t.MIAN_JI),2) AS 面積
FROM SDZY_XBM_A t
WHERE t.DI_LEI=”111”
GROUP BY t.xiang,LEFT(t.SEN_LIN_LB,1)
ORDER BY t.xiang DESC
運行結果如下圖三:

圖三
通過SQL 語言的使用可以查詢出地類為111,森林類別為11/12/21/22 的小班數量和合計面積,按照鄉名稱統計。
通過SQL 語句的使用,可以根據調查或者數據使用的需要,快速查找森林資源動態監測系統數據庫中各種屬性的小班數據,實現數據的匯總、分類,為有效合理地利用監測成果以及實現林業數據化提供了便利有效的工具。