摘 要:針對采用常規方法處理農田灌溉面積一張圖操作流程繁瑣、過程重復、易出錯等問題,該文提出一種基于ArcGIS ModelBuilder的農田灌溉面積一張圖建模批處理方法,采用ModelBuilder和Python將一系列空間數據處理工具串聯構建批處理工具。該方法在瑞安市、開化縣等多個縣市區項目中得到了驗證,只要事先簡單設置參數,即可一鍵完成多個要素圖層的面積計算、數據統計、屬性字段賦值等批處理工作,具有運行效率高、準確率高、相比ArcGIS二次開發準入門檻低等特點,大大提高了工作效率,為農田灌溉面積一張圖項目按時完成提供保障,也為數字孿生流域數據底板數據庫建設提供一種新的作業思路。
關鍵詞:ArcGIS ModelBuilder;農田灌溉面積一張圖;批處理;面積統計;字段賦值;Python
中圖分類號:P208 文獻標志碼:A 文章編號:2095-2945(2024)31-0189-04
Abstract: Aiming at the problems of cumbersome, repetitive, and error-prone processing of a farmland irrigation area map using conventional methods, this paper proposes a batch processing method for modeling a farmland irrigation area map based on ArcGIS ModelBuilder. A series of spatial data processing tools are connected in series to build a batch processing tool. This method has been verified in projects in multiple counties and cities such as Rui'an City and Kaihua County: As long as parameters are simply set in advance, batch processing work such as area calculation, data statistics, and attribute field assignment of multiple feature layers can be completed with one click. It has high operating efficiency, high accuracy, and low entry threshold compared to the secondary development of ArcGIS. It greatly improves work efficiency, provides a guarantee for the timely completion of a farmland irrigation area map project, and also provides a new operating idea for the construction of a digital twin watershed data backplane database.
Keywords: ArcGIS ModelBuilder; a map of farmland irrigation area; batch processing; area statistics; field assignment; Python
根據《水利部辦公廳 農業農村部辦公廳關于開展全國農田灌溉發展規劃編制工作的通知》(辦農水〔2022〕304號)和《水利部辦公廳關于進一步復核確定2021年灌溉面積有關數據的通知》(辦農水函〔2022〕740號)要求,全國各省需加強組織領導,在高質高效完成農田灌溉發展規劃報告編制的基礎上,全面推進農田灌溉面積一張圖建設。農田灌溉面積一張圖是一項復雜的系統性工程,前期涉及的基礎數據眾多,數據處理過程復雜繁瑣,需要面積統計的數據成果多,要素圖層多且字段重復賦值,處理過程中極易出錯。在時間緊、任務重的情況下,如何快速、高效、精確地完成一張圖數據庫,這是待解決的問題。
為解決上述問題,提出了一種基于ArcGIS ModelBuilder的農田灌溉面積一張圖的數據批處理方法,將相交、計算字段、匯總統計數據等空間處理工具組合構建數據處理模型,實現自動化、流程化處理。該模型操作簡單,在面對海量數據時,仍能快速、高效、準確地完成灌溉面積一張圖數據庫處理[1]。
1 農田灌溉面積一張圖介紹
本次農田灌溉面積一張圖工作,目的在于摸清現狀灌溉面積和未來灌溉面積發展潛力的分布和面積,本質是對空間數據和屬性數據的處理與分析,空間數據的處理主要涉及相交、面積計算、計算字段等,屬性數據的處理主要是屬性字段的賦值。
水利部統一下發了農田灌溉面積一張圖標準數據庫,浙江省結合自身管理實際情況保留數據庫字段和圖層同時新增了部分字段和圖層,浙江省下發的標準庫包含了6個要素圖層:2021年度現狀灌溉面積圖層、2025年度/2030年度/2035年度規劃面積圖層、2021年度/2035年度灌區外邊界,其中前4個是灌區灌溉面積圖層、后2個是灌區外邊界圖層。從表1中可以看出,表內多數是相同字段,例如灌區所屬省份、灌區所屬市、灌區所屬縣區和灌區名稱等,作業流程重復性高,采用ModelBuilder批處理的方法可以很好地解決這一問題。
2 技術流程
2.1 ModelBuilder
ModelBuilder(模型構建器)是ArcGIS軟件中用于設計、創建和編輯地理處理模型、構建工作流的工具。ModelBuilder主要用于構造地理處理模型,可將一系列空間處理工具串聯成工作流,可以完成一整套的地理處理過程[2]。ModelBuilder 具有可視性、快捷性、流程化、自動化、可共享性等優勢[3-4],眾多學者將其應用到數據質檢[5]、區域裁剪[6]、數據庫合并[7]等空間數據生產中。
ModelBuilder中,模型主要由輸入數據、輸出數據、空間數據處理工具以及連接線構成。輸入數據和輸出結果可以是要素類、數據集、表格等,空間數據處理工具包括ArcToolbox中的所有工具、腳本、自定模型等。將模型的變量和工具用連接線連接,完成模型構建后,可自動驗證所添加和連接的數據、工具的有效性,當模型被成功驗證后,可以運行所有進程[8]。
2.2 面積計算模型
在農田灌溉面積一張圖數據庫建設中,面積計算貫穿整個處理流程,本文采用Python函數!shape.area!在字段計算器中快速實現面積計算。由于處理過程中利用的基礎數據繁多,面積字段描述都不一樣,為了保證模型讀取面積字段不出錯,統一添加“MJ”字段,用于存儲面積數據。
2.3 統計模型
在農田灌溉面積一張圖項目中,涉及基本的統計有16個:分鄉鎮/分灌區分別統計高標準基本農田、后備耕地、永久基本農田、國土三調水田、國土三調旱地、國土三調林地、國土三調果園和國土三調牧草地,如果采用傳統人工統計,需相交、添加字段、計算面積、匯總統計等空間數據處理流程,操作繁瑣,且完全依靠人工干預,不僅會致使生產效率低下,還會導致隨機誤差產生。為此,提出了一種一鍵式、自動化處理方法,通過ArcGIS軟件的模型構建器,組合多種空間數據處理工具,實現過程如下。
1)輸入數據:目標統計數據(要素類)、邊界(要素類)。
2)空間數據處理工具:相交、添加字段、計算字段、匯總統計數據。①相交,計算輸入要素的幾何交集,輸出相疊置要素部分的空間和屬性信息;②添加字段,這里統一添加“MJ”字段;③計算字段計算每一個圖斑要素面積,面積單位為萬畝,面積計算公式為MJ=!shape.area!*0.001 5,并將計算結果存儲于“MJ”字段;④匯總統計,統計字段選擇“MJ”,統計類型求和“SUM”,案例分組字段選擇“XZQMC”。
3)輸出數據:匯總統計表。
面積統計模型界面如圖1所示。
圖1 面積統計模型界面
2.4 字段賦值模型
農田灌溉面積一張圖數據庫字段更新包括:灌區所屬省份、灌區所屬市、灌區所屬縣區、灌區名稱、灌區類型、地塊所在鄉鎮、一級地類、二級地類和地塊面積。為了方便介紹,將字段分為3類:①對于一個灌區而言,灌區所屬省份、灌區所屬市、灌區所屬縣區、灌區名稱和灌區類型是固定的,同時地塊面積字段可以通過Python函數計算獲得,將這6個可以直接計算的字段稱為固定字段;②一級地類則是根據二級地類推斷,通過傳統方法不能直接賦值,將其稱為邏輯字段;③二級地類是繼承了三調數據DLMC屬性,實際作業中可直接繼承前期數據處理字段屬性,無需模型構建器處理,這里不展開說明。
2.4.1 固定字段自動賦值
以2021年年度灌溉面積圖層屬性類型為例,固定字段有灌區所屬省份、灌區所屬市、灌區所屬縣區、灌區名稱、灌區類型和地塊面積等6個。采用傳統方法操作:打開屬性表—選中需賦值字段—右鍵—字段計算器—鍵入需賦值的值—單擊“完成”,6個屬性,需重復以上步驟6次,操作重復且繁瑣。為提高工作效率,采用ModelBuilder建模,將待賦值要素圖層導入模型構建器內,加入ArcToolbox中的“計算字段”工具,連接矢量要素和“計算字段”工具,設置參數。和傳統方法對比,ModelBuilder自動賦值方法,僅需鍵入需賦值的值——單擊“完成”就能完成一個要素的固定字段賦值。
2.4.2 邏輯字段自動賦值
第三次全國國土調查地類圖斑要素二級地類屬性通過DLMC(地類名稱)和DLBM(地類編碼)進行區分,農田灌溉面積一張圖數據庫DLMC_2(二級地類)可直接繼承三調數據庫DLMC(地類名稱)字段屬性,DLMC_1可根據表2明確,其中,在農田灌溉面積一張圖數據庫中,“果園”代表“種植園用地”,“牧草”代表“草地”。
傳統方法對DLMC_1 = 耕地的地塊賦值:打開屬性表—按屬性選擇—輸入SQL查詢語句“DLMC_2=‘水田’OR DLMC_2=‘水澆地’OR DLMC_2=‘旱地’”,選中耕地下的所有二級地類—右鍵—字段計算器—鍵入“=”耕地—單擊“完成”,林地、果園、牧草等一級類均需重復上述操作。對邏輯字段DLMC_1(一級地類)的賦值代碼,與固定字段一鍵式賦值相比,僅需在固定字段賦值基礎上加上簡單的幾行Python代碼就能實現復雜的邏輯屬性賦值,具體代碼如下。
def f(dl2):
if dl2 == u“水田”or dl2 == u“水澆地” or dl2 == u“旱地” :
return “耕地”
elif dl2 == u“果園”or dl2 == u“茶園”or dl2 == u“橡膠園”or dl2 == u“其他園地”:
return “果園”
elif dl2 == u“喬木林地” or dl2 == u“竹林地”or dl2 == u“灌木林地”or dl2 == u“其他林地”:
return “林地”
elif dl2 == u“天然牧草地” or dl2 == u“人工牧草地”or dl2 == u“其他草地” :
return “牧草”
else:
return “其他”
2.4.3 數據迭代批處理模型
考慮到同一個灌區一張圖數據庫(.gdb),6個要素圖層的6個固定屬性都是完全一樣的,這里可以用ModelBuilder中迭代器做一個迭代處理,將“字段賦值”模型封裝成一個獨立的工具,使用迭代器工具對數據庫內的每一個要素圖層執行一次字段賦值過程,達到一鍵處理一個灌區6個要素圖層的目的,實現過程如圖2所示。
3 應用案例
以瑞安市為例,瑞安市有現狀灌區2個,規劃灌區6個,其他小型灌區1個共計9個灌區,一個灌區需處理的圖層有6個,總共需要處理的要素圖層54個,其中,一個圖層有6個固定字段,1個邏輯字段,傳統方法處理的屬性字段個數為7×54=378個。一個縣區的一張圖最基本的面積統計有16個。通過傳統人工方法和ModelBuilder方法分別對瑞安市數據進行面積統計和字段賦值處理,統計見表3。
經過驗證,運用基于ArcGIS ModelBuilder的農田灌溉面積一張圖數據批處理的方法,效率遠勝于傳統人工方法。針對瑞安市,一個人操作普通工作機只需要大約5 h即可完成面積統計、字段賦值的工作。但是如果通過傳統人工的手段,需要大概32 h才可以完成相應工作;如果需要修改,傳統人工方法時間將會成倍增長,而對于模型來講不會增加人力成本,增加的只是計算機運行程序的時間。
表3 傳統人工方法與ModelBuilder方法鼠標操作對比
4 結論
利用ArcGIS ModelBuilder的建模方法可以高效、自動、準確地完成農田灌溉面積一張圖的面積統計、屬性字段賦值,并在實際應用中得到了充分驗證。同時,ArcGIS軟件包含了許多的空間數據處理工具,且ModelBuilder具有操作簡單、多人共享、高效等特點,作業人員僅需在ModelBuilder中巧妙地串聯工具,就能輕松實現很多復雜空間數據的批處理,對實際工作中的水利空間數據庫建設、一張圖建設、數據治理都非常有幫助,是一個高性價比的空間數據處理解決方案。
參考文獻:
[1] 王曉龍,劉博文.一種基于模型構建器的宗地圖斑編號方法[J].北京測繪,2020,34(11):1570-1573.
[2] 耿源浩,楊旭東,王子強,等.基于模型構建器的地理國情數據更新字段說明自動賦值方法[J].北京測繪,2021,35(10):1318-1322.
[3] 張建新,紀凱.ArcGIS ModelBuilder模型設計方法在影像解譯
中的應用[J].測繪工程,2015,24(8):62-67.
[4] 師家珍,韓東明,湯豪.淺析ArcGIS ModelBuilder的應用[J].測繪技術裝備,2015,17(4):59-61,45.
[5] 溫樹棟,吳翁慧,夏高峰.按區域自動批量裁剪地理數據的建模方法[J].北京測繪,2020,34(2):143-146.
[6] 王超,蘇明娟,王會.基于ArcGIS模型構建器的多灌區一張圖矢量數據批量合并方法研究[J].工程技術研究,2023,8(147):45-47.
[7] 王本禮,王也,譚思源,等.ArcGIS模型構建器在基本農田補劃質檢中的應用[J].地理空間信息,2023,21(4):50-53.
[8] 王嘉偉,孫漳林,唐偉建.ArcGIS模型構建器和Python語言在第三次全國國土調查數據處理中的應用[J].長春工程學院學報(自然科學版),2020,21(4):34-38.