计算变化栅格 (影像分析)

获得 Image Analyst 许可后可用。

摘要

计算两个栅格数据集之间的绝对、相对、分类或光谱差异。

使用情况

  • 该工具可对两个栅格进行比较,生成包含两者之间差异的新栅格。 例如,使用此工具可以了解碳储量像素值在 2001 年至 2020 年间如何变化,或查看 2010 年至 2015 年土地覆被如何变化。

  • 以下计算类型可用于计算变化栅格:

    • 差值 - 起始栅格参数中的像素值和目标栅格参数中的像素值之间的数学差或两者做减法。

      输出 = (目标栅格) - (起始栅格)

    • 相对差异 - 像素值的差异(考虑要比较的值的数量)。

      输出 = (目标栅格 - 起始栅格) / max (目标栅格, 起始栅格)

    • 类别差异 - 两个类别或主题栅格之间的差异,其输出可以显示在两个栅格之间发生的各个类过渡。
    • 光谱欧氏距离 - 两个多波段栅格之间的欧氏距离,其中每个像素将被视为一个矢量。 值越大表示图像之间的变化越大。
    • 光谱角度差 - 两个多波段栅格之间的光谱角度,其中每个像素将被视为一个矢量。 角度越大表示图像之间的变化越大。
    • 变化最大的波段 - 两个多波段栅格之间每个像素中变化最大的波段。

  • 来自类别差异计算类型的输出是具有属性表的栅格数据集。 该表包含过渡类型(例如,从森林到城市)、每种过渡类型中包括的像素数以及每种过渡类型的估算面积。 面积的计算方式是像素大小乘以每种过渡类型的像素数。 单位与输入栅格数据的线性单位相匹配。

  • 在计算两个分类栅格之间的差异时,可将分析限制为特定的类。 例如,要可视化城市发展,可在起始类列表中包括所有类,而在目标类列表中仅包括城市类。 结果将包含所有有助于城市类别的过渡。

  • 如果输入栅格包含不同的像元大小或范围,则可以在像元大小输出范围环境设置中分别指定像元大小和范围。

  • 计算变化方法参数设置为类别差异时,起始栅格目标栅格参数必须均具有包含 ValueClassValue 字段的关联栅格属性表。 相应类值的类名用于输出类传输名称。 该工具使用标准字段类名称 CLASS_NAMECLASSNAME。 如果这些字段名称不存在,您可以使用起始栅格的类名称字段目标栅格的类名称字段参数来对其进行定义。

参数

标注说明数据类型
自栅格

待分析的初始栅格或较早栅格。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; String
至栅格

待分析的最终栅格或较晚栅格。 将要与初始栅格进行比较的栅格。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; String
计算更改方法
(可选)

指定要在两个栅格之间执行的计算类型。

  • 差异将计算栅格中像素值之间的数学差或减法。 这是默认设置。
  • 相对差异将在考虑比较值数量的同时,计算像素值的差异。
  • 类别差异将计算两个类别或主题栅格之间的差异。 输出包含在两个栅格之间发生的类过渡。
  • 光谱欧氏距离将计算两个多波段栅格的像素值之间的欧氏距离。
  • 光谱角度差将计算两个多波段栅格的像素值之间的光谱角度。 输出以弧度为单位。
  • 变化最大的波段将计算两个多波段栅格之间每个像素中变化最大的波段。
String
起始类
(可选)

将包括在计算中的起始栅格参数中的类名称列表。 如果未提供任何类,将包括所有类。

计算变化方法参数设置为类别差异时,此参数处于活动状态。

String
目标类
(可选)

将包括在计算中的目标栅格参数中的类名称列表。 如果未提供任何类,将包括所有类。

计算变化方法参数设置为类别差异时,此参数处于活动状态。

String
过滤方法
(可选)

指定要在输出栅格中分类的像素。 当计算变化方法参数设置为类别差异时,此参数处于活动状态。

  • 仅变化像素仅类别更改的像素在输出中分类。 类别未更改的像素被归类为名为“其他”的类。
  • 仅不变像素仅类别未更改的像素在输出中分类。 类别更改的像素被归类为名为“其他”的类。
  • 所有像素所有像素将在输出中分类。 这是默认设置。
String
过渡类颜色
(可选)

指定用于符号化输出类的颜色。 当像素从一种类类型更改为另一种类类型时,输出像素颜色代表初始类类型、最终类类型或两者的混合。

计算变化方法参数设置为类别差异时,此参数处于活动状态。

  • 起始和目标颜色平均值输出类的颜色为起始(初始)类和目标(最终)类颜色的平均值。 这是默认设置。
  • 自颜色输出类的颜色与起始(初始)类的颜色匹配。
  • 至颜色输出类的颜色与目标(最终)类的颜色匹配。
String
起始栅格的类名称字段
(可选)

将在起始栅格参数值中存储类名称的字段。 该工具会自动搜索要使用的 ClassName 字段或 Class_Name 字段。

如果输入不包含这些标准字段名称,请使用此参数。

Field
目标栅格的类名称字段
(可选)

将在目标栅格参数值中存储类名称的字段。 该工具会自动搜索要使用的 ClassName 字段或 Class_Name 字段。

如果输入不包含这些标准字段名称,请使用此参数。

Field

返回值

标注说明数据类型
输出栅格

输出更改栅格数据集。

Raster

ComputeChangeRaster(from_raster, to_raster, {compute_change_method}, {from_classes}, {to_classes}, {filter_method}, {define_transition_colors}, {from_classname_field}, {to_classname_field})
名称说明数据类型
from_raster

待分析的初始栅格或较早栅格。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; String
to_raster

待分析的最终栅格或较晚栅格。 将要与初始栅格进行比较的栅格。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; String
compute_change_method
(可选)

指定要在两个栅格之间执行的计算类型。

  • DIFFERENCE将计算栅格中像素值之间的数学差或减法。 这是默认设置。
  • RELATIVE_DIFFERENCE将在考虑比较值数量的同时,计算像素值的差异。
  • CATEGORICAL_DIFFERENCE将计算两个类别或主题栅格之间的差异。 输出包含在两个栅格之间发生的类过渡。
  • SPECTRAL_EUCLIDEAN_DISTANCE将计算两个多波段栅格的像素值之间的欧氏距离。
  • SPECTRAL_ANGLE_DIFFERENCE将计算两个多波段栅格的像素值之间的光谱角度。 输出以弧度为单位。
  • BAND_WITH_MOST_CHANGE将计算两个多波段栅格之间每个像素中变化最大的波段。
String
from_classes
[from_classes,...]
(可选)

将包括在计算中的 from_raster 参数中的类名称列表。 如果未提供任何类,将包括所有类。

当将 compute_change_method 参数设置为 CATEGORICAL_DIFFERENCE 时,此参数处于启用状态。

String
to_classes
[to_classes,...]
(可选)

将包括在计算中的 to_raster 参数中的类名称列表。 如果未提供任何类,将包括所有类。

当将 compute_change_method 参数设置为 CATEGORICAL_DIFFERENCE 时,此参数处于启用状态。

String
filter_method
(可选)

指定要在输出栅格中分类的像素。 当将 compute_change_method 参数设置为 CATEGORICAL_DIFFERENCE 时,此参数处于启用状态。

  • CHANGED_PIXELS_ONLY仅类别更改的像素在输出中分类。 类别未更改的像素被归类为名为“其他”的类。
  • UNCHANGED_PIXELS_ONLY仅类别未更改的像素在输出中分类。 类别更改的像素被归类为名为“其他”的类。
  • ALL所有像素将在输出中分类。 这是默认设置。
String
define_transition_colors
(可选)

指定用于符号化输出类的颜色。 当像素从一种类类型更改为另一种类类型时,输出像素颜色代表初始类类型、最终类类型或两者的混合。

当将 compute_change_method 参数设置为 CATEGORICAL_DIFFERENCE 时,此参数处于启用状态。

  • AVERAGE输出类的颜色为起始(初始)类和目标(最终)类颜色的平均值。 这是默认设置。
  • FROM_COLOR输出类的颜色与起始(初始)类的颜色匹配。
  • TO_COLOR输出类的颜色与目标(最终)类的颜色匹配。
String
from_classname_field
(可选)

将在 from_raster 参数值中存储类名称的字段。 该工具会自动搜索要使用的 ClassName 字段或 Class_Name 字段。

如果输入不包含这些标准字段名称,请使用此参数。

Field
to_classname_field
(可选)

将在 to_raster 参数值中存储类名称的字段。 该工具会自动搜索要使用的 ClassName 字段或 Class_Name 字段。

如果输入不包含这些标准字段名称,请使用此参数。

Field

返回值

名称说明数据类型
out_raster_dataset

输出更改栅格数据集。

Raster

代码示例

ComputeChangeRaster 示例 1(Python 窗口)

本示例计算 2000 年至 2020 年间 NDVI 像素值的差异。

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

NDVIchange = arcpy.ia.ComputeChangeRaster(
	"NDVI_2000.tif", "NDVI_2020.tif", "DIFFERENCE")
	
NDVIchange.save("C:/Data/NDVI_2000_2020.tif")
ComputeChangeRaster 示例 2(独立脚本)

本示例计算 2000 年至 2020 年间 NDVI 像素值的相对差异。

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Define input parameters
FromRaster = "C:/Data/NDVI_2000.tif"
ToRaster = "C:/Data/NDVI_2020.tif"
ChangeType = "RELATIVE_DIFFERENCE"

# Execute - calculate the relative difference in NDVI from 2000 to 2020
NDVIrelativeChange = arcpy.ia.ComputeChangeRaster(
	FromRaster, ToRaster, ChangeType)
	
# Save output
NDVIrelativeChange.save("C:/Data/Relative_NDVI_2000_2020.tif")
ComputeChangeRaster 示例 3(独立脚本)

本示例计算 2000 年至 2020 年间的土地覆被变化,仅提取从 Forest、Agriculture、Water 或 Barren 类更改为 Urban 类的像素。

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")


LandcoverChange = arcpy.ia.ComputeChangeRaster(
	"Landcover_2000.tif", "Landcover_2020.tif", "CATEGORICAL_DIFFERENCE", 
	"'Forest';'Agriculture';'Water';'Barren'", "'Urban'", 
	"CHANGED_PIXELS_ONLY", "AVERAGE")
	
# Save output  
LandcoverChange.save("C:/Data/Landcover_2000_2020.tif")