摘 要:针对采用常规方法处理农田灌溉面积一张图操作流程繁琐、过程重复、易出错等问题,该文提出一种基于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.