【ArcGIS自定义脚本工具】批量执行栅格计算器

article/2025/5/1 23:29:34

文章目录

  • 一、功能介绍
  • 二、脚本代码
  • 三、工具参数
  • 四、用例
    • 4.1 批量单位换算
    • 4.2 批量计算植被覆盖度
    • 4.3 批量填充空值

系列文章目录: ArcGIS自定义脚本工具


一、功能介绍

在这里插入图片描述

  • 功能
    将多个栅格文件按照某以代数表达式执行栅格计算器(Raster Calculator) 工具,并将输出栅格文件保存至指定的文件夹中。该工具接受代数表达式的动态输入。通过修改代数表达式可以实现批量对栅格执行四则运算(加、减、乘、除)、计算掩膜、填充空值(固定值、插值)、设为空等操作。
  • 关于代数表达式
    提供的代数表达式需要满足栅格计算器工具代数表达式的基本语法,并且包含字符串"{A}“,字符串”{A}"代表输入栅格在代数表达式中的位置。在用例章节提供了几个案例。
    在这里插入图片描述

二、脚本代码

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import arcpy
import os
import timerasters = arcpy.GetParameterAsText(0)
expression = arcpy.GetParameterAsText(1) # expression including {A}
out_path = arcpy.GetParameterAsText(2)
prefix = arcpy.GetParameterAsText(3)rasters = rasters.split(";")
nums = len(rasters)
num = 1
for raster in rasters:raster_path = raster.replace("'","")raster_dir,raster_name = os.path.split(raster_path)arcpy.env.workspace = raster_dirout_raster = os.path.join(out_path, prefix + raster_name)exp = expression.replace('{A}', r'"{0}"'.format(raster_name))arcpy.AddMessage(exp)if not os.path.exists(out_raster):try:arcpy.gp.RasterCalculator_sa(exp, out_raster)arcpy.AddMessage("%d/%d | %s completed" % (num, nums, out_raster))except Exception as err:arcpy.AddMessage("%d/%d | %s errored, %s" % (num, nums, out_raster, err))else:arcpy.AddMessage("%d/%d | %s already exists" % (num, nums, out_raster))num = num + 1

三、工具参数

在这里插入图片描述
在这里插入图片描述

ParameterExplanationData type
rasters待执行栅格计算器的多个栅格文件Raster Dataset
expression栅格计算器工具要执行的代数表达式。该表达式需要满足栅格计算器工具中代数表达式的基本语法,并且包含字符串"{A}“,字符串”{A}"代表输入栅格在代数表达式中的位置。String
out_path输出栅格文件的文件夹Folder
prefix输出栅格文件的文件名前缀,该栅格的文件名为"prefix_<旧文件名>.tif",该参数默认为"cal_"String

关于参数expression,提供了一些常用的示例

1.加{A} + 102.减{A} - 273.153.乘{A} * 0.00014.除{A} / 100005.四则运算({A} * 3 + 4)/56.条件函数-计算掩膜Con({A} > 0,1,0})7.条件函数-计算植被覆盖度Con({A}<0.1,0,Con({A}>=0.8,1,({A}-0.1)/0.7))8.条件函数-固定值填充空值Con(IsNull({A}), 0, {A})9.条件函数-插值填充空值Con(IsNull({A}), FocalStatistics({A}, NbrRectangle(5,5, "CELL"), "MEAN"), {A})10.设为空-将满足条件的栅格赋值为空值SetNull({A}<0,{A})

四、用例

通过修改参数expression,对栅格批量执行某一代数表达式。

4.1 批量单位换算

  • 输入文件:某区域的陆面温度(LST)栅格数据,单位为开氏温度
  • 处理目标:批量将输入文件的单位换算为摄氏温度
{A} - 273.15

在这里插入图片描述
在这里插入图片描述

4.2 批量计算植被覆盖度

  • 输入文件:某区域的植被指数(NDVI)栅格数据
  • 处理目标:基于像元二分模型,批量根据NDVI估算植被覆盖度
    关于估算植被覆盖度的说明可以看这篇:【MODIS数据处理#10】例五:用NDVI估算植被覆盖度

假设我们根据NDVI的累计频率分布,已经确定了像元二分模型中的两个阈值分别为0.1、0.85。则可以通过将该工具中的expression设置为:

Con({A}<0.1,0,Con({A}>=0.85,1,({A}-0.1)/0.75))

在这里插入图片描述
在这里插入图片描述

4.3 批量填充空值

  • 输入文件:某区域的净初级生产力NPP栅格数据
  • 处理目标:将NPP的缺失值区域填充为0
Con(IsNull({A}), 0, {A})

在这里插入图片描述
在这里插入图片描述
还可以选择根据空白区域周围的有效像元插值进行填充,表达式可以参考

Con(IsNull({A}), FocalStatistics({A}, NbrRectangle(5,5, "CELL"), "MEAN"), {A})

关于上述表达式的说明,可以参考

缺失像元处的值就用以其为中心的5*5的矩形窗口内所有的有效像元的值平均后得到FOCALMEAN中的长方形的尺寸可以被编辑以适应数据的需求。编辑"5,5"的值的大小可以改变长方形的尺寸。可能需要改成更大或者更小,这取决于数据。
原理是利用邻域均值代替空缺值。
可用的不同类型的邻域:
NbrAnnulus,NbrCircle,NbrRectangle,NbrWedge, NbrIrregular,和NbrWeight。默认邻域是正方形NbrRectangle,其宽度和高度为3个单元格。
要计算的统计类型:
MEAN(平均值)—计算附近单元格的平均值(平均值)。
MAJORITY —计算附近的单元格的多数(最常出现的值)。
MAXIMUM —计算附近的像元的最大值(最大值)。
MEDIAN —计算附近单元格的中位数。
MINIMUM —计算附近的像元的最小值(最小值)。
MINORITY-计算邻域中的单元格的少数(最少出现的值)。
RANGE(范围)—计算附近单元格的范围(最大值与最小值之间的差)。
STD —计算附近单元格的标准差。
SUM —计算附近单元格的总和(所有值的总和)。
VARIETY(变异度)—计算附近单元格的变异度(唯一值的数量)。
默认的统计类型是MEAN。
如果输入栅格为浮点,则只有MEAN,MAXIMUM,MINIMUM,RANGE,STD和SUM统计类型可用。

举个例子,对于上文使用的存在缺失区域的NPP栅格,使用相邻有效像元的值进行填充
在这里插入图片描述
在这里插入图片描述



http://chatgpt.dhexx.cn/article/rDZ3ky9y.shtml

相关文章

ArcGIS ModelBuilder批量栅格计算器

利用ArcGIS的Model Builder批量进行栅格计算 问题描述&#xff1a;利用批量栅格计算器对文件夹中的多张栅格影像的值进行去0处理。 操作步骤&#xff1a; 1、打开ModelBuilder工具&#xff0c;插入“栅格迭代器”&#xff0c;设置输入参数。 图1 ModelBuilder工具位置 图2 …

QGIS栅格数据处理工具(1):栅格计算器

相较于ArcGIS的栅格计算器&#xff0c;QGIS的栅格计算器效率更高&#xff0c;尤其是对于分辨率高的大影像(GF2、GF6)&#xff0c;因此遇到此类问题(如指数反演)我基本上使用QGIS计算。QGIS栅格计算器的语法更接近python的语法&#xff0c;下面选择1景landsat8影像使用QGIS的栅格…

arcGIS python两个栅格数据,栅格计算器进行栅格代数计算。 信息熵(区位熵)计算

arcGIS python两个栅格数据&#xff0c;栅格计算器进行栅格代数计算。 下载链接&#xff1a;多个栅格数据进行代数运算实例demo 信息熵&#xff08;区位熵&#xff09;计算公式&#xff1a; #-*- coding:UTF-8 -*- import arcpy from arcpy import env from arcpy.sa impor…

ArcGIS 栅格计算器con()函数用法

函数的基本语句&#xff1a;con&#xff08;条件&#xff08;语句&#xff09;&#xff0c;真&#xff08;语句&#xff09;&#xff0c;假&#xff08;语句&#xff09;&#xff09; 若“真&#xff08;语句&#xff09;”或“假&#xff08;语句&#xff09;”存在缺失&…

第十五章 栅格数据重分类、栅格计算器、插值分析

文章目录 第十五章 栅格数据分析第一章 栅格数据重分类第一节 栅格数据重分类第二节 栅格重分类的使用第三节 重分类的使用中的空值使用第四节 重分类的案例&#xff1a;分类统计面积第五节 坡度矢量分级图生成 第二章 栅格计算器第一节 栅格计算器介绍第二节 栅格计算器使用第…

ArcGIS栅格计算器

栅格计算是栅格数数据空间分析中数据处理和分析中最为常用的方法,应用非常广泛,能够解决各种类型的问题,尤其重要的是,它是建立复杂的应用数学模型的基本模块。ArcGIS提供了非常友好的图形化栅格计算器,利用栅格计算器,不仅可以方便的完成基于数学运算符的栅格运算,以及…

ArcGIS栅格计算器公式总结

栅格计算器(Raster Calculator)界面 一些常用的栅格计算函数 1、将特定值(-9999)赋值为0 Con("raster"-9999,0,"raster") 2、将某一范围内(如小于0)赋值为0 Con("raster" <0,0,"raster") 3、将特定的栅格值(如1)赋值为空值 setnull…

栅格计算器(Con、IsNull、SetNull)

地图计算能有多大点事儿 序言 从标题来看地图计算&#xff0c;这里面感觉大有蹊跷。小火承认有一点夸张&#xff0c;这里的地图是指“栅格“&#xff0c;在GIS中有地图代数这个工具&#xff0c;通常用来进行对地图进行数学上的运算。这也是小火一直想出的一期实战化教程。那么…

ArcGIS栅格计算器常用函数

一、ArcGlS中栅格计算器简介 栅格计算是栅格数数据空间分析中数据处理和分析中最为常用的方法&#xff0c;应用非常广泛&#xff0c;能够解决各种类型的问题&#xff0c;尤其重要的是&#xff0c;它是建立复杂的应用数学模型的基本模块。ArcGIS提供了非常友好的图形化栅格计算…

【GlobalMapper精品教程】028:栅格计算器的使用方法总结

文章目录 一、栅格计算器简介二、栅格计算器应用举例1. 归一化植被指数NDVI2. 归一化水体指数NDWI3. 归一化建筑指数NDBI一、栅格计算器简介 GlobalMapper中也提供了栅格计算器工具,可以方便的进行栅格计算、波段计算、指数计算等,使用方法有点儿像Envi软件。 用户可以使用系…

ArcGIS中栅格计算器常用函数的使用

先看下目录 一、 ArcGlS中栅格计算器简介 栅格计算器位置及界面布局 二、 ArcGIS棚格计算器中Con&#xff08;&#xff09;函数的使用 &#xff08;一&#xff09; Con&#xff08;&#xff09;函数的用法 &#xff08;二&#xff09; ArcGIS 案例操作 三、 ArcGIS栅格计算…

2020年团体程序设计天梯赛L1全部题解(JAVA语言)

2020年团体程序设计天梯赛L1全部题解 我L1部分得分100分&#xff0c;全部AC了 L1-1 嫑废话上代码 (5分) Linux 之父 Linus Torvalds 的名言是&#xff1a;“Talk is cheap. Show me the code.”&#xff08;嫑废话&#xff0c;上代码&#xff09;。本题就请你直接在屏幕上输…

PTA 程序设计天梯赛(21~40题)

文章目录 21、正整数AB (15 分)22、I Love GPLT (5 分)23、出租 (20 分)24、 是不是太胖了 (5 分)25、一帮一 (15 分)26、 到底是不是太胖了 (10 分)27、Left-pad (20 分)28、 出生年 (15 分)29、 点赞 (20 分)30、 情人节 (15 分)31、 A乘以B (5 分)32、A除以B (10 分)33、 新…

2022年团体程序设计天梯赛

文章目录 L1-1 今天我要赢L1-2 种钻石L1-3 谁能进图书馆L1-4 拯救外星人L1-5 试试手气L1-6 斯德哥尔摩火车上的题L1-7 机工士姆斯塔迪奥L1-8 静静的推荐L2-1 插松枝L2-2 老板的作息表L2-3 龙龙送外卖L2-4 大众情人 L1-1 今天我要赢 2018 年我们曾经出过一题&#xff0c;是输出…

团体程序设计天梯赛-L1练习集

目录 L1-002 打印沙漏 (20 分) 输入格式: 输出格式: 输入样例: 输出样例: L1-006 连续因子 (20 分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; L1-009 N个数求和 (20 分) 输入格式&#xff1a; 输出格式&#xff1a;…

2021团体程序设计天梯赛-太原理工成绩大跃进

在2021年4月24日举行的2021年团体程序设计天梯赛上&#xff0c;太原理工大学5个队50名队员参加“珠峰争鼎”组比赛。一个队获得全国团体三等奖&#xff08;如果参加“华山论剑”组&#xff0c;成绩是全国第13名&#xff09;&#xff0c;同时获得山西省高校特等奖。 全国个人奖…

2022团体程序设计天梯赛

原创不易&#xff0c;未经允许&#xff0c;请勿转载。 文章目录 L1-1 今天我要赢L1-2 种钻石L1-3 谁能进图书馆L1-4 拯救外星人L1-5 试试手气L1-6 斯德哥尔摩火车上的题L1-7 机工士姆斯塔迪奥L1-8 静静的推荐L2-1 插松枝L2-2 老板的作息表L2-3 龙龙送外卖L2-4 大众情人L3-1 千手…

2022年 GPLT 团队程序设计天梯赛 总结

昨天&#xff0c;感觉一天都在忙天梯赛&#xff0c;也算打的满意了吧&#xff0c;分数141&#xff0c;有效分139&#xff0c;队伍拿了团队铜奖&#xff0c;学校排在山东省第九名。 L1的题很稳&#xff0c;100分拿到了&#xff0c;L2-2也是一遍过&#xff0c;L2-1一个模拟&…

2023团队程序设计天梯赛选拔赛

1.Ltree的数据结构 T322022 Ltree的数据结构 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 主次关键字的排序 用结构体 比赛过程中&#xff0c;其它都很顺利&#xff0c;问题出在了名次上&#xff0c;一直找不到错误点&#xff0c;满分25分&#xff0c;只对了一个测试点&a…

GPLT团队程序设计天梯赛

List item CSDN话题挑战赛第1期 活动详情地址&#xff1a;https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题&#xff1a;大学生竞赛指南 话题描述&#xff1a;本话题聚焦于大学生竞赛心得体会分享&#xff0c;对于计算机众多领域每年都有很多都会举…