摘 要:針對(duì)采用常規(guī)方法處理農(nóng)田灌溉面積一張圖操作流程繁瑣、過(guò)程重復(fù)、易出錯(cuò)等問(wèn)題,該文提出一種基于ArcGIS ModelBuilder的農(nóng)田灌溉面積一張圖建模批處理方法,采用ModelBuilder和Python將一系列空間數(shù)據(jù)處理工具串聯(lián)構(gòu)建批處理工具。該方法在瑞安市、開(kāi)化縣等多個(gè)縣市區(qū)項(xiàng)目中得到了驗(yàn)證,只要事先簡(jiǎn)單設(shè)置參數(shù),即可一鍵完成多個(gè)要素圖層的面積計(jì)算、數(shù)據(jù)統(tǒng)計(jì)、屬性字段賦值等批處理工作,具有運(yùn)行效率高、準(zhǔn)確率高、相比ArcGIS二次開(kāi)發(fā)準(zhǔn)入門(mén)檻低等特點(diǎn),大大提高了工作效率,為農(nóng)田灌溉面積一張圖項(xiàng)目按時(shí)完成提供保障,也為數(shù)字孿生流域數(shù)據(jù)底板數(shù)據(jù)庫(kù)建設(shè)提供一種新的作業(yè)思路。
關(guān)鍵詞:ArcGIS ModelBuilder;農(nóng)田灌溉面積一張圖;批處理;面積統(tǒng)計(jì);字段賦值;Python
中圖分類(lèi)號(hào):P208 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):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
根據(jù)《水利部辦公廳 農(nóng)業(yè)農(nóng)村部辦公廳關(guān)于開(kāi)展全國(guó)農(nóng)田灌溉發(fā)展規(guī)劃編制工作的通知》(辦農(nóng)水〔2022〕304號(hào))和《水利部辦公廳關(guān)于進(jìn)一步復(fù)核確定2021年灌溉面積有關(guān)數(shù)據(jù)的通知》(辦農(nóng)水函〔2022〕740號(hào))要求,全國(guó)各省需加強(qiáng)組織領(lǐng)導(dǎo),在高質(zhì)高效完成農(nóng)田灌溉發(fā)展規(guī)劃報(bào)告編制的基礎(chǔ)上,全面推進(jìn)農(nóng)田灌溉面積一張圖建設(shè)。農(nóng)田灌溉面積一張圖是一項(xiàng)復(fù)雜的系統(tǒng)性工程,前期涉及的基礎(chǔ)數(shù)據(jù)眾多,數(shù)據(jù)處理過(guò)程復(fù)雜繁瑣,需要面積統(tǒng)計(jì)的數(shù)據(jù)成果多,要素圖層多且字段重復(fù)賦值,處理過(guò)程中極易出錯(cuò)。在時(shí)間緊、任務(wù)重的情況下,如何快速、高效、精確地完成一張圖數(shù)據(jù)庫(kù),這是待解決的問(wèn)題。
為解決上述問(wèn)題,提出了一種基于ArcGIS ModelBuilder的農(nóng)田灌溉面積一張圖的數(shù)據(jù)批處理方法,將相交、計(jì)算字段、匯總統(tǒng)計(jì)數(shù)據(jù)等空間處理工具組合構(gòu)建數(shù)據(jù)處理模型,實(shí)現(xiàn)自動(dòng)化、流程化處理。該模型操作簡(jiǎn)單,在面對(duì)海量數(shù)據(jù)時(shí),仍能快速、高效、準(zhǔn)確地完成灌溉面積一張圖數(shù)據(jù)庫(kù)處理[1]。
1 農(nóng)田灌溉面積一張圖介紹
本次農(nóng)田灌溉面積一張圖工作,目的在于摸清現(xiàn)狀灌溉面積和未來(lái)灌溉面積發(fā)展?jié)摿Φ姆植己兔娣e,本質(zhì)是對(duì)空間數(shù)據(jù)和屬性數(shù)據(jù)的處理與分析,空間數(shù)據(jù)的處理主要涉及相交、面積計(jì)算、計(jì)算字段等,屬性數(shù)據(jù)的處理主要是屬性字段的賦值。
水利部統(tǒng)一下發(fā)了農(nóng)田灌溉面積一張圖標(biāo)準(zhǔn)數(shù)據(jù)庫(kù),浙江省結(jié)合自身管理實(shí)際情況保留數(shù)據(jù)庫(kù)字段和圖層同時(shí)新增了部分字段和圖層,浙江省下發(fā)的標(biāo)準(zhǔn)庫(kù)包含了6個(gè)要素圖層:2021年度現(xiàn)狀灌溉面積圖層、2025年度/2030年度/2035年度規(guī)劃面積圖層、2021年度/2035年度灌區(qū)外邊界,其中前4個(gè)是灌區(qū)灌溉面積圖層、后2個(gè)是灌區(qū)外邊界圖層。從表1中可以看出,表內(nèi)多數(shù)是相同字段,例如灌區(qū)所屬省份、灌區(qū)所屬市、灌區(qū)所屬縣區(qū)和灌區(qū)名稱(chēng)等,作業(yè)流程重復(fù)性高,采用ModelBuilder批處理的方法可以很好地解決這一問(wèn)題。
2 技術(shù)流程
2.1 ModelBuilder
ModelBuilder(模型構(gòu)建器)是ArcGIS軟件中用于設(shè)計(jì)、創(chuàng)建和編輯地理處理模型、構(gòu)建工作流的工具。ModelBuilder主要用于構(gòu)造地理處理模型,可將一系列空間處理工具串聯(lián)成工作流,可以完成一整套的地理處理過(guò)程[2]。ModelBuilder 具有可視性、快捷性、流程化、自動(dòng)化、可共享性等優(yōu)勢(shì)[3-4],眾多學(xué)者將其應(yīng)用到數(shù)據(jù)質(zhì)檢[5]、區(qū)域裁剪[6]、數(shù)據(jù)庫(kù)合并[7]等空間數(shù)據(jù)生產(chǎn)中。
ModelBuilder中,模型主要由輸入數(shù)據(jù)、輸出數(shù)據(jù)、空間數(shù)據(jù)處理工具以及連接線構(gòu)成。輸入數(shù)據(jù)和輸出結(jié)果可以是要素類(lèi)、數(shù)據(jù)集、表格等,空間數(shù)據(jù)處理工具包括ArcToolbox中的所有工具、腳本、自定模型等。將模型的變量和工具用連接線連接,完成模型構(gòu)建后,可自動(dòng)驗(yàn)證所添加和連接的數(shù)據(jù)、工具的有效性,當(dāng)模型被成功驗(yàn)證后,可以運(yùn)行所有進(jìn)程[8]。
2.2 面積計(jì)算模型
在農(nóng)田灌溉面積一張圖數(shù)據(jù)庫(kù)建設(shè)中,面積計(jì)算貫穿整個(gè)處理流程,本文采用Python函數(shù)!shape.area!在字段計(jì)算器中快速實(shí)現(xiàn)面積計(jì)算。由于處理過(guò)程中利用的基礎(chǔ)數(shù)據(jù)繁多,面積字段描述都不一樣,為了保證模型讀取面積字段不出錯(cuò),統(tǒng)一添加“MJ”字段,用于存儲(chǔ)面積數(shù)據(jù)。
2.3 統(tǒng)計(jì)模型
在農(nóng)田灌溉面積一張圖項(xiàng)目中,涉及基本的統(tǒng)計(jì)有16個(gè):分鄉(xiāng)鎮(zhèn)/分灌區(qū)分別統(tǒng)計(jì)高標(biāo)準(zhǔn)基本農(nóng)田、后備耕地、永久基本農(nóng)田、國(guó)土三調(diào)水田、國(guó)土三調(diào)旱地、國(guó)土三調(diào)林地、國(guó)土三調(diào)果園和國(guó)土三調(diào)牧草地,如果采用傳統(tǒng)人工統(tǒng)計(jì),需相交、添加字段、計(jì)算面積、匯總統(tǒng)計(jì)等空間數(shù)據(jù)處理流程,操作繁瑣,且完全依靠人工干預(yù),不僅會(huì)致使生產(chǎn)效率低下,還會(huì)導(dǎo)致隨機(jī)誤差產(chǎn)生。為此,提出了一種一鍵式、自動(dòng)化處理方法,通過(guò)ArcGIS軟件的模型構(gòu)建器,組合多種空間數(shù)據(jù)處理工具,實(shí)現(xiàn)過(guò)程如下。
1)輸入數(shù)據(jù):目標(biāo)統(tǒng)計(jì)數(shù)據(jù)(要素類(lèi))、邊界(要素類(lèi))。
2)空間數(shù)據(jù)處理工具:相交、添加字段、計(jì)算字段、匯總統(tǒng)計(jì)數(shù)據(jù)。①相交,計(jì)算輸入要素的幾何交集,輸出相疊置要素部分的空間和屬性信息;②添加字段,這里統(tǒng)一添加“MJ”字段;③計(jì)算字段計(jì)算每一個(gè)圖斑要素面積,面積單位為萬(wàn)畝,面積計(jì)算公式為MJ=!shape.area!*0.001 5,并將計(jì)算結(jié)果存儲(chǔ)于“MJ”字段;④匯總統(tǒng)計(jì),統(tǒng)計(jì)字段選擇“MJ”,統(tǒng)計(jì)類(lèi)型求和“SUM”,案例分組字段選擇“XZQMC”。
3)輸出數(shù)據(jù):匯總統(tǒng)計(jì)表。
面積統(tǒng)計(jì)模型界面如圖1所示。
圖1 面積統(tǒng)計(jì)模型界面
2.4 字段賦值模型
農(nóng)田灌溉面積一張圖數(shù)據(jù)庫(kù)字段更新包括:灌區(qū)所屬省份、灌區(qū)所屬市、灌區(qū)所屬縣區(qū)、灌區(qū)名稱(chēng)、灌區(qū)類(lèi)型、地塊所在鄉(xiāng)鎮(zhèn)、一級(jí)地類(lèi)、二級(jí)地類(lèi)和地塊面積。為了方便介紹,將字段分為3類(lèi):①對(duì)于一個(gè)灌區(qū)而言,灌區(qū)所屬省份、灌區(qū)所屬市、灌區(qū)所屬縣區(qū)、灌區(qū)名稱(chēng)和灌區(qū)類(lèi)型是固定的,同時(shí)地塊面積字段可以通過(guò)Python函數(shù)計(jì)算獲得,將這6個(gè)可以直接計(jì)算的字段稱(chēng)為固定字段;②一級(jí)地類(lèi)則是根據(jù)二級(jí)地類(lèi)推斷,通過(guò)傳統(tǒng)方法不能直接賦值,將其稱(chēng)為邏輯字段;③二級(jí)地類(lèi)是繼承了三調(diào)數(shù)據(jù)DLMC屬性,實(shí)際作業(yè)中可直接繼承前期數(shù)據(jù)處理字段屬性,無(wú)需模型構(gòu)建器處理,這里不展開(kāi)說(shuō)明。
2.4.1 固定字段自動(dòng)賦值
以2021年年度灌溉面積圖層屬性類(lèi)型為例,固定字段有灌區(qū)所屬省份、灌區(qū)所屬市、灌區(qū)所屬縣區(qū)、灌區(qū)名稱(chēng)、灌區(qū)類(lèi)型和地塊面積等6個(gè)。采用傳統(tǒng)方法操作:打開(kāi)屬性表—選中需賦值字段—右鍵—字段計(jì)算器—鍵入需賦值的值—單擊“完成”,6個(gè)屬性,需重復(fù)以上步驟6次,操作重復(fù)且繁瑣。為提高工作效率,采用ModelBuilder建模,將待賦值要素圖層導(dǎo)入模型構(gòu)建器內(nèi),加入ArcToolbox中的“計(jì)算字段”工具,連接矢量要素和“計(jì)算字段”工具,設(shè)置參數(shù)。和傳統(tǒng)方法對(duì)比,ModelBuilder自動(dòng)賦值方法,僅需鍵入需賦值的值——單擊“完成”就能完成一個(gè)要素的固定字段賦值。
2.4.2 邏輯字段自動(dòng)賦值
第三次全國(guó)國(guó)土調(diào)查地類(lèi)圖斑要素二級(jí)地類(lèi)屬性通過(guò)DLMC(地類(lèi)名稱(chēng))和DLBM(地類(lèi)編碼)進(jìn)行區(qū)分,農(nóng)田灌溉面積一張圖數(shù)據(jù)庫(kù)DLMC_2(二級(jí)地類(lèi))可直接繼承三調(diào)數(shù)據(jù)庫(kù)DLMC(地類(lèi)名稱(chēng))字段屬性,DLMC_1可根據(jù)表2明確,其中,在農(nóng)田灌溉面積一張圖數(shù)據(jù)庫(kù)中,“果園”代表“種植園用地”,“牧草”代表“草地”。
傳統(tǒng)方法對(duì)DLMC_1 = 耕地的地塊賦值:打開(kāi)屬性表—按屬性選擇—輸入SQL查詢(xún)語(yǔ)句“DLMC_2=‘水田’OR DLMC_2=‘水澆地’OR DLMC_2=‘旱地’”,選中耕地下的所有二級(jí)地類(lèi)—右鍵—字段計(jì)算器—鍵入“=”耕地—單擊“完成”,林地、果園、牧草等一級(jí)類(lèi)均需重復(fù)上述操作。對(duì)邏輯字段DLMC_1(一級(jí)地類(lèi))的賦值代碼,與固定字段一鍵式賦值相比,僅需在固定字段賦值基礎(chǔ)上加上簡(jiǎn)單的幾行Python代碼就能實(shí)現(xiàn)復(fù)雜的邏輯屬性賦值,具體代碼如下。
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 數(shù)據(jù)迭代批處理模型
考慮到同一個(gè)灌區(qū)一張圖數(shù)據(jù)庫(kù)(.gdb),6個(gè)要素圖層的6個(gè)固定屬性都是完全一樣的,這里可以用ModelBuilder中迭代器做一個(gè)迭代處理,將“字段賦值”模型封裝成一個(gè)獨(dú)立的工具,使用迭代器工具對(duì)數(shù)據(jù)庫(kù)內(nèi)的每一個(gè)要素圖層執(zhí)行一次字段賦值過(guò)程,達(dá)到一鍵處理一個(gè)灌區(qū)6個(gè)要素圖層的目的,實(shí)現(xiàn)過(guò)程如圖2所示。
3 應(yīng)用案例
以瑞安市為例,瑞安市有現(xiàn)狀灌區(qū)2個(gè),規(guī)劃灌區(qū)6個(gè),其他小型灌區(qū)1個(gè)共計(jì)9個(gè)灌區(qū),一個(gè)灌區(qū)需處理的圖層有6個(gè),總共需要處理的要素圖層54個(gè),其中,一個(gè)圖層有6個(gè)固定字段,1個(gè)邏輯字段,傳統(tǒng)方法處理的屬性字段個(gè)數(shù)為7×54=378個(gè)。一個(gè)縣區(qū)的一張圖最基本的面積統(tǒng)計(jì)有16個(gè)。通過(guò)傳統(tǒng)人工方法和ModelBuilder方法分別對(duì)瑞安市數(shù)據(jù)進(jìn)行面積統(tǒng)計(jì)和字段賦值處理,統(tǒng)計(jì)見(jiàn)表3。
經(jīng)過(guò)驗(yàn)證,運(yùn)用基于ArcGIS ModelBuilder的農(nóng)田灌溉面積一張圖數(shù)據(jù)批處理的方法,效率遠(yuǎn)勝于傳統(tǒng)人工方法。針對(duì)瑞安市,一個(gè)人操作普通工作機(jī)只需要大約5 h即可完成面積統(tǒng)計(jì)、字段賦值的工作。但是如果通過(guò)傳統(tǒng)人工的手段,需要大概32 h才可以完成相應(yīng)工作;如果需要修改,傳統(tǒng)人工方法時(shí)間將會(huì)成倍增長(zhǎng),而對(duì)于模型來(lái)講不會(huì)增加人力成本,增加的只是計(jì)算機(jī)運(yùn)行程序的時(shí)間。
表3 傳統(tǒng)人工方法與ModelBuilder方法鼠標(biāo)操作對(duì)比
4 結(jié)論
利用ArcGIS ModelBuilder的建模方法可以高效、自動(dòng)、準(zhǔn)確地完成農(nóng)田灌溉面積一張圖的面積統(tǒng)計(jì)、屬性字段賦值,并在實(shí)際應(yīng)用中得到了充分驗(yàn)證。同時(shí),ArcGIS軟件包含了許多的空間數(shù)據(jù)處理工具,且ModelBuilder具有操作簡(jiǎn)單、多人共享、高效等特點(diǎn),作業(yè)人員僅需在ModelBuilder中巧妙地串聯(lián)工具,就能輕松實(shí)現(xiàn)很多復(fù)雜空間數(shù)據(jù)的批處理,對(duì)實(shí)際工作中的水利空間數(shù)據(jù)庫(kù)建設(shè)、一張圖建設(shè)、數(shù)據(jù)治理都非常有幫助,是一個(gè)高性?xún)r(jià)比的空間數(shù)據(jù)處理解決方案。
參考文獻(xiàn):
[1] 王曉龍,劉博文.一種基于模型構(gòu)建器的宗地圖斑編號(hào)方法[J].北京測(cè)繪,2020,34(11):1570-1573.
[2] 耿源浩,楊旭東,王子強(qiáng),等.基于模型構(gòu)建器的地理國(guó)情數(shù)據(jù)更新字段說(shuō)明自動(dòng)賦值方法[J].北京測(cè)繪,2021,35(10):1318-1322.
[3] 張建新,紀(jì)凱.ArcGIS ModelBuilder模型設(shè)計(jì)方法在影像解譯
中的應(yīng)用[J].測(cè)繪工程,2015,24(8):62-67.
[4] 師家珍,韓東明,湯豪.淺析ArcGIS ModelBuilder的應(yīng)用[J].測(cè)繪技術(shù)裝備,2015,17(4):59-61,45.
[5] 溫樹(shù)棟,吳翁慧,夏高峰.按區(qū)域自動(dòng)批量裁剪地理數(shù)據(jù)的建模方法[J].北京測(cè)繪,2020,34(2):143-146.
[6] 王超,蘇明娟,王會(huì).基于ArcGIS模型構(gòu)建器的多灌區(qū)一張圖矢量數(shù)據(jù)批量合并方法研究[J].工程技術(shù)研究,2023,8(147):45-47.
[7] 王本禮,王也,譚思源,等.ArcGIS模型構(gòu)建器在基本農(nóng)田補(bǔ)劃質(zhì)檢中的應(yīng)用[J].地理空間信息,2023,21(4):50-53.
[8] 王嘉偉,孫漳林,唐偉建.ArcGIS模型構(gòu)建器和Python語(yǔ)言在第三次全國(guó)國(guó)土調(diào)查數(shù)據(jù)處理中的應(yīng)用[J].長(zhǎng)春工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2020,21(4):34-38.