1. 需求
现有一些tif格式的温度栅格数据,希望把所有数据的值-9999设为Nodata。
如果只有一份数据,可能会不假思索的找到 ArcToolbox中的栅格计算器工具,利用SetNull函数即可解决问题;如果是300+份数据,可能该做个工具了
SetNull函数2. 利用ModelBuilter
打开ModelBuilter,将Setnull工具拖入,找不到工具可以在Search里搜索,双击工具,填补所需参数,直至Model因参数完成而变为彩色。
ModelBuilter 填补所需参数3.使用迭代器
前一步已经满足一次任务的需要了,接着解决批处理问题。这里我们使用迭代器来实现循环。
在这里我们需要遍历tif格式的栅格图像,因此选择 Iterates→ Raster。也可以根据自己需求选择其他迭代器。
Itertors双击迭代器,设置工作空间/文件夹目录(就是你存放数据的地方),栅格格式选择TIF(只遍历TIF格式的数据),其他根据需求没有选择。
Iterate Rasters删除原有SetNull工具的输入数据,将迭代器的输出数据连接为新的输入;
修改SetNull工具的输出数据,因为批量处理会将同名文件覆盖,而迭代器每遍历一个数据会返回其Name(名称),%Name% 表示引用。
最终流程4.制成模型工具
如果以后经常会用到这个需求来处理数据,可以将其做成模型工具。
在需要作为参数方便后续修改的项目上右键,勾选 “模型参数”,将输入数据和输出数据设置为模型变量。
将模型保存至工具箱后,双击运行工具。
5.注意事项
每个模型仅可使用一个迭代器。
如果将含有迭代器的模型导出为 Python 脚本,则导出的脚本中将不会包括迭代逻辑。
如果使用嵌套等复杂循环,可以编写python脚本可以使用 ArcPy中的函数 ListFeatureClasses 和 SearchCursor来实现遍历文件夹中的栅格数据等。正在学习ing...
网友评论