ArcGIS Pro 模型构建器——零代码构建批量处理

前言

网上其实有很多关于ArcMap的模型构建器(Model Builder)的教程,Pro基本上大同小异,因此本文更多是方法整理与经验交流分享,以期提高解决实际工作遇到的问题,本文主要参考官方文档与个人经验,本人水平有限,希望大家在评论区积极交流与指正。

阅读文章须知:

1、可能需要提前阅读官方文档,对基础工具及模型构建器有一定了解。

2、阶段性不定期进行更新(实际是懒)。

3、编写逻辑跳跃程度较高,不定时会进行改正。

首先什么是模型构建器呢?

官方文档是这样描述的:

模型构建器是一种可视化编程语言,用于构建地理处理工作流。地理处理模型用于自动执行空间分析和数据管理流程并进行记录。可创建并修改模型构建器中的地理处理模型,其中模型表示为将一系列流程和地理处理工具串联在一起的示意图,并将一个流程的输出用作另一个流程的输入。

简单说:模型构建器主要用途是通过使用简单逻辑处理工具批量处理数据的一种便捷方式,在对于大规模、有规律性的数据处理上具有很大的优势。

(PS:模型构建器并不是唯一选择,例如,Pro工具箱的批处理以及ArcPy等都可以实现批量数据处理。而模型构建器最大特点是具有相对完善的可视化交互界面,学习成本较低,仅为简单的逻辑关系与地理处理工具的理解与运用。)

文中所有蓝色字体可点击跳转至官网说明,注意说明文档的版本。

一、关键功能

下面是后面实战中不可避免的需要了解到的一些基础性知识,可以先看后面,遇到问题再回来查阅相关文档。

1、迭代器

迭代器工具 描述

For 循环

按照给定的增量从起始值迭代至终止值。

※迭代数据集

迭代工作空间中不同类型的数据集。

迭代要素类

迭代工作空间或要素数据集中的所有要素类。

※迭代要素选择

迭代要素类中的要素。

※迭代字段值

迭代字段中的所有值。

※迭代字段

迭代表中的字段。

迭代文件

迭代文件夹中的文件。

迭代图层

迭代地图中的图层。

迭代多值

迭代值列表。

迭代栅格数据

迭代工作空间中的所有栅格数据。

※迭代行选择

迭代表中的所有行。

迭代表

用于在工作空间中对表进行迭代。

迭代时间

在日期字段的时间内迭代。

迭代工作空间

迭代文件夹中的工作空间。

While 循环

用于迭代直至条件变为真或条件变为假。

注:星标部分为常用功能;

一个模型构建器内只能有一个迭代器,但可以通过嵌套模型来达到多个迭代(套娃)。

2、行内变量

具体来讲就是ArcGis Pro自带的已经设置好规则的变量,主要用于替换路径、数据值等,用法较为广泛,需着重理解使用,主要形式为“%变量名称%”,可以分为以下三大类型:

①系统变量(固定变量名称类型)

系统变量的意思是变量名称已经固定,只需要在任何地方写出来就可以识别并运行的行内变量,具体为:

a、%n%

从0开始的变量,重复运行时,自动会+1,上不封顶(应该);

b、%t%

以 YYYYMMDDHHMMSS 格式生成输出的时间,如在2024年1月9日10:29:54的时候输出%t%,即为20240109102954。

c、%i%(已被%n%替代)

与 %n% 的效果相同,其旨在用于 ArcMap,并且不建议在 ArcGIS Pro 上使用。

②模型变量(可变名称类型)

%变量名称%,两侧的%符号是固定不变的,变量名称

可以简单理解为一段内容的缩写,然后用这个缩写去替代原内容,假设我要输出的目录为:C:\Program Files\User\桌面\……\01.shp,如果我需要多次输出,那就是很长一段,较为傻瓜。%变量名称%的形式便运用而生,我通过设定%SCML%=C:\Program Files\User\桌面\……,使用的时候只需要写%SCML%\01.shp 即可。

③工作空间环境变量(固定名称类型)

环境 用法 位置 建议的使用方法

临时 GDB

%scratchGDB%

工程文件夹\scratch.gdb

中间输出

临时文件夹

%scratchFolder%

工程文件夹\临时

基于文件的中间输出

当前工作空间

%workspace%

当前工作空间环境设置

地理处理工具输入和输出

临时工作空间

%scratchWorkspace%

临时工作空间环境设置

中间输出

3、参数

方便后面更换不同矢量进行相同的操作。

三、基于模型构建器的批量处理

1、单一矢量根据字段导出多个矢量+命名

流程图:

image

要点:①迭代要素选择

迭代要素选择中的字段那一栏即为要分组导出的依据。例如矢量需要按照A、B、C三个村导出,村名称字段为ZLDWMC,那这里只需选择ZLDWMC。

复制要素

③行内变量

这里的行内变量是读取的迭代要素选择中的值,并作为矢量的名称。拿上面例子说明,这里的%值%为村的名称,导出效果为……\A.shp;B.shp;C.shp。

值得注意的是,导出目录为GDB的情况下不需要加.shp,%值%即可,而正常目录的话,是需要加上.shp,形式为%值%.shp

2、批量合并文件下的所有栅格

流程图:

image

要点:①迭代栅格数据

通配符的基础格式详见官方文档,举个例子,一个文件夹下有两类栅格,一个是A开头,一个是B开头,我只需要合并A开头的栅格数据,则通配符为A*。

②收集值

以防有人找不到,这里在工具里面。

image

镶嵌至新栅格

需要注意选择后缀,像素类型、波段数以及镶嵌运算符,详细内容看官方文档。

3、处理图斑分区域编号(待更新)

要点:①迭代器;②计算字段;③SQL语句

4、迭代删除矢量数据(待更新)

要点:①迭代器;②计算字段;③SQL语句

5、字段匹配(待更新)

 

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容