ArcGIS10.8 模型构建器 实现迭代字段

本文详细介绍了如何在ArcGIS 10.8模型构建器中使用迭代字段功能,克服字段命名繁琐的问题,通过转置表格和迭代操作批量转换面要素为栅格,并设置参数化以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ArcGIS10.8 模型构建器 实现迭代字段

0、前言

之前有个工作需要批量将面要素转栅格,字段命名栅格,字段值用以赋值。ArcGIS的要素转栅格工具可以批量实现,但是需要手动更改几十个甚至几百个字段及路径,并且还要反复多次干这个事,实在是太费事了。动不动要改百来个字段和路径名,很要命。
要素转栅格批处理
这个事情呢,感觉在模型构建器里实现应该很简单对吧,只要设定输出规则和输入字段通配符或者自选字段都可以解决,于是,打开模型构建器发现,没有迭代字段。
ArcGIS10.8模型构建器
搜索发现ArcGIS pro的模型构建器新加了迭代字段功能,但咱也没有pro。只能自力更生。


1、 失败尝试 Arcpy ListFields

迭代字段首先要获取字段列表。
Arcpy有一个函数

ListFields帮助文档

利用模型构建器中的计算值工具实现代码运行,很快写好了放入计算值的函数代码:

def get_Fname(featureclass,wtext):
	field_names = [f.name for f in arcpy.ListFields(featureclass,wtext)]
	for fname in field_names:
		return fname

在这里插入图片描述

然后运行时发现,只会返回第一个值,其余都无了。。。然后查模型构建器说明时发现了这一条:

在这里插入图片描述

心塞。但是每次都要用arcpy来实现的话,太麻烦了,万一再有个代码错误,debug半天,活都干完了。并且考虑到与同事分享工具的便利性,执着于用模型构建器自带的工具解决。
虽然但是,还是把写好的完整的Arcpy代码记录一下:

#coding=utf-8

import arcpy
from arcpy import env

#Set environment settings
env.workspace = "C:/data"

#Set local variables
inFeature = "roads.shp" #输入要素
outRaster = "c:/output/roadsgrd"  #输出
wText = "F*" #通配符
cellSize = 25  #栅格单元大小

field_names = [f.name for f in arcpy.ListField(inFeature,wText)]
for fname in field_names:
	arcpy.FeatureToRaster_conversion(inFeature, fname,  outRaster, cellSize)

2、模型构建器实现迭代字段

思路:首先,既然是模型构建器,工具应该要具备多次使用的功能,所以先实现迭代字段这个功能,方便以后做别的事情要用到。

模型的主要思路就是:**--- 转置表格--- 插入行迭代--- 收集值**

2.1 转置表格

既然模型构建器自带的工具没有现成的迭代字段工具,又不能用Arcpy获取列表,那就曲线救国,不能迭代列名,但是有迭代行。那把行跟列换一下不就好了嘛

  • 转置字段:用日常表格来理解,就是行与列换一换,列名就是字段,转置后,列名就成了行名。10.8的模型构建器里有迭代行。

转置字段说明
在这里插入图片描述

参数有5个居多,其中除了输入表,后面几个看起来都一样,要怎么设置呢?
拖个要素进去看下工具界面和帮助:
在这里插入图片描述

在这里插入图片描述
先看下结果帮助理解下
转置前属性表(红框是我选择要转置的字段):
在这里插入图片描述
转置后的属性表:
转置表
好了,我们重新理解一下对话框。
请添加图片描述根据对话框的理解,设置一下模型构建器:为了以后经常调用,输入表要转置的字段设置为参数(右键-✔模型参数),参数就是你打开工具每次都要你输入的东西,其他就是默认了。把那个不需要的属性字段椭圆删掉,省得下次搞不清楚。
转置字段

2.2 获得字段多值

迭代就是循环,一个一个数。
**插入-迭代器-行选择**
在这里插入图片描述

双击迭代行选择,按字段分组这里选择字段名。
在这里插入图片描述
迭代的字段名是一个一个出来的,可是我们想要的是个列表,所以,把每次迭代输出的值收集起来,就获得了多值(类似于列表)
插入-仅模型工具-收集值
在这里插入图片描述
,为了方便下一步操作,把输出的多值设为参数。
在这里插入图片描述
保存工具并命名为获得字段多值
到这里,革命已经成功了90%。这个结果是获得一个字段多值(列表)。由于模型构建器里一个工具只能有一个迭代,所以字段迭代我们另起一个工具。

2.3 迭代字段

  • 新建一个模型构建器并且存储为迭代字段,把刚刚做好的工具获得字段多值拖进来。
    在这里插入图片描述
  • 开始迭代多值:插入--迭代器--多值

在这里插入图片描述
好了,保存。迭代字段工具就完成了。如果要进行利用字段的工具,直接将后续操作拖进这个工具里并另存即可。

3 应用一下批量转栅格

解释一下为什么这么执着于迭代字段,就是因为要素转栅格工具里非要输入字段。
分享一下工具。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值