“按函数重设等级”工作原理

需要 Spatial Analyst 许可。

通过“按函数重设等级”工具可使用数学函数(直线或曲线)按照连续等级(通常为 1 到 10)为输入栅格分配适宜性值。重设等级特别适用于适宜性建模。多数情况下,适宜性随着条件值的变化而发生连续变化,并且通常以非线性的方式发生变化。例如,在房屋适宜性模型中,现有道路附近的像元位置可能是首选,原因在于为这些位置供电的成本较低。随着与道路之间距离的增加,为这些位置供电的成本可能会呈指数增加。因此,较远位置的适宜性可能会大幅下降。创建成本交互后,优先指数递减就将变换为指定的连续适宜性等级,例如,等级 1 到 10。然后,可将调整成本型条件与其他等级条件(如坡度、坡向以及与学校之间的距离)相集成,以便确定房屋的最佳位置。

应用此工具时,主要考虑以下四点:

  1. 了解并定义现象和条件之间的优先交互。
  2. 选择能最好地捕获优先交互(如指数增长)的变换函数。
  3. 有选择性地修改函数参数以获得更好的拟合。
  4. 定义适宜性(评估)等级以变换优先函数值(例如,1 到 10)。

在适宜性模型中,按函数重设等级工具展开用于变换数据的选项。可使用重分类工具将数据重分为几类,并使用按函数重设等级工具重设连续数据的等级(重分类),而无需创建离散类别。按函数重设等级工具提供各种函数,以对按连续等级发生变化的适宜性进行建模。由于工具将输入栅格值的等级重设为连续的适宜性等级,并未按类别进行聚合,因此可以更好地捕获某些连续变化的优先交互(对于上述示例,成本随着与道路之间距离的增加而发生变化)。

可用函数包括:指数函数、高斯函数、大值函数、线性函数、对数函数、逻辑衰减函数、逻辑增长函数、MS 大值函数、MS 小值函数、近邻函数、幂函数、小值函数和对称线性函数。下面的链接中提供了有关上述每个函数的详细信息:

可定义阈值上限和下限,以便更好地控制输入值等级的重设方式。有关详细信息,请参阅输出值上限阈值和下限阈值的交互

基本词汇

讨论按函数重设等级时,以下定义适用于一些常用术语。

  • 现象 - 正在建模的项目(如鹿、房屋、道路或购物中心)。
  • 优先值 - 该值用于表示现象对特定位置要素值的优先程度。
  • 条件 - 现象正在响应的要素(如坡度、坡向、与道路之间的距离或土地利用类型)。
  • 适宜性值 - 与优先级值相同,但优先级位于适宜性模型的环境中。
  • 评估等级 - 用于放置优先值或适宜性值的相对等级。通常,分配有较高评估值的像元包含现象更为优先的要素(相对于正分析的条件而言)。常用评估等级包括:1 到 10、0 到 1 和 1 到 100。
  • 适宜性值等级 - 与评估等级相同。
  • 连续值 - 栅格中的值具有相对意义。例如,高于海平面 100 米的像元高度等于分配为 200 米的像元高度的一半。连续数据的示例包括高程、臭氧浓度和适宜性值。
  • 分类值 - 栅格中的值不具有相对意义。例如,土地利用类型为 4 的像元所利用的土地并不是分配为类型 8 的像元所利用土地的一半。分类数据的示例包括土地利用类型、县名和邮政编码。
  • 连续输出等级 - 在无离散类的情况下,指定范围中连续增加或减少的值。通常,连续值由浮点值表示。

变换数据

按函数重设等级工具根据可选择的数学函数 (例如指数函数、幂函数和对数函数),将连续数据的等级重设为指定的适宜性等级。在概念上,变换输入数据分为两步:首先应用变换函数,然后将函数值映射到适宜性等级(通常是 1 到 10)。

应用变换函数。

将指定的函数应用于阈值上限与下限之间的值。

将变换后数据的等级重设为评估等级

下图说明了如何将函数值映射到评估等级。

将幂函数的函数值变换为评估等级的示例
将幂函数的函数值变换为评估等级的示例

将变换后的最小和最大函数值 f(x) 分别重设为最小和最大评估等级。许多函数都是单调的(连续递增或递减)。因此,阈值的下限和上限通常会映射到评估等级的最小值和最大值,因为它们会是 f(x) 的最低值和最高值。

在前面的示例中,阈值的下限和上限等于输入数据的最小值和最大值(分别为 3,000 和 5,000)。因此,在 1 到 10 的评估等级中,将最小输入值设为 1,将最大输入值设为 10。但是,并不是必须如此设置。例如,如果将幂函数应用于相同的输入数据(在 3000 至 5000 的范围内),并将阈值下限设为 3500,上限设为 4500,则在 1 到 10 的输出评估等级中,会将输入值为 3500 的像元位置设为 1,将输入值为 4500 的像元位置设为 10。所有其他值都介于这两个值之间,具体取决于其变换后的值。将为低于阈值下限和高于阈值上限的输入值分配您指定的值。

将高斯函数的函数值变换为评估等级的示例
将高斯函数的函数值变换为评估等级的示例

但是,并非所有的函数均连续递增或递减,因此,最低和最高输入值可能不会始终映射到最低和最高评估值。默认情况下,在高斯函数中,中点是用于确定函数最高点的值(最首选的值)。将此值设为输入数据的中点。应用高斯函数后,最小和最大输入值的位置将生成最低函数值 f(x)。因此,在输出栅格中,具有最小和最大输入值的像元将设置为 1。中点值将生成最高函数值 f(x)。因此,在输出栅格中,包含与此中点相等的输入值的像元将设置为 10。

在适宜性模型中,高斯函数可用于确定稀有兰花品种 Masdevallia 的最佳生长环境。这种兰花对海拔的变化很敏感。最适合生长的环境位于海拔 4000 米左右。随着海拔的增加,温度会变得过低而不适合这种兰花生存;随着海拔的降低,温度则会变得过高。重设海拔等级时,将 4000 米作为首选等级,其他海拔高度(过高与过低)均不合适。

可使用低于阈值的值高于阈值的值参数,将任何低于阈值下限或高于阈值上限的输入值分配为所需输出值(评估等级内部或外部,或分配为 NoData)。变换函数不会应用于这些位置。

定义变换

定义连续变换时,可考虑使用两种主要方法:

  • 接受默认设置。

    计算形状控制参数(请参阅以下描述),以便适用于输入栅格的最小值与最大值之间的函数。由于函数与该数据相拟合,因此此情况与数据相关。

  • 选择能够对适宜性进行最佳建模的函数。

    更改函数的形状控制参数以对函数形状进行微调,使其能够更好地反映适宜性。要使函数数据独立,将阈值的上下限设置为适当的值,以便在不考虑输入数据值的情况下与现象的首选条件值相拟合。

变换函数参数

函数参数的类型

每个变换函数都有两种类型的相关参数,这些参数可控制:

  1. 函数形状

    这些参数的示例有:基础系数输入平移中点。这些参数定义了函数增大或减小的程度、函数评估的起始位置以及函数中的过渡点。

  2. 将函数映射到适宜性评估等级

    这些参数的示例为阈值参数,如阈值下限大于阈值的值

函数参数的常规格式

以下是每个函数参数的常规格式及特征:

  • 函数({形状参数 1}、{形状参数 2}、{形状参数 3}、{阈值下限}、{小于阈值的值}、{阈值上限}、{大于阈值的值})

对于这些参数而言,

  1. 每个函数均包含形状控制参数和相应的阈值参数。
  2. 形状控制参数的数量取决于变换函数,大部分函数具有两个参数,但有一些函数具有三个参数。
  3. 阈值参数在所有函数中均保持一致。
  4. 形状控制参数的默认值是通过输入栅格中的数据值进行计算的。
  5. 函数的所有参数均为可选参数。
  6. 小于阈值的值大于阈值的值参数的值可以是一个数字(双精度),也可以是字符串 "NoData”。所有其他参数均为双精度类型。

指数函数的常规格式示例

要演示如何将上述常规格式应用于特定的变换函数,假设将变换函数设置为指数函数,则参数将采用以下格式:

  • 指数函数输入平移基础系数阈值下限小于阈值的值阈值上限大于阈值的值

输入平移基础系数是形状控制参数。阈值下限小于阈值的值阈值上限大于阈值的值是阈值参数。

默认情况下,最小和最大数据值定义了函数的下限和上限。

工具对话框中的参数交互

对于输入栅格参数,将阈值下限设为该栅格的最小值,将阈值上限设为该栅格的最大值,并自动计算形状控制参数(如输入平移基础系数中点),以便与阈值下限阈值上限之间的函数实现最佳拟合(或对其进行限制)。

控制着函数值到适宜性等级的映射的阈值参数与用于定义函数曲线的形状控制参数之间存在交互。例如,确定默认值后,便可为阈值上限输入更大的值。相关的形状控制参数(例如输入平移基础系数)将在对话框中进行重新计算和更新。但是,如果为其中一个形状控制参数输入一个新值(如新的基础系数),则将切断与控制适宜性等级映射的相关阈值参数之间的关系,然后将由您来进行控制。以指数函数为例,如果输入新的基础系数并更改阈值上限,则不会自动重新计算新的基础系数。工具将使用您指定的基础系数。再以线性函数为例,默认情况下将阈值上限设为输入栅格的最大值。如果为阈值上限输入一个更大的值,则会自动更新线性函数的最大值参数。但是,如果输入新的最大值并更改阈值上限,则最大值不会发生变化。

通过此对话交互,此函数在默认情况下将位于阈值下限阈值上限(最初设为输入栅格的最小值和最大值)之间。但是,您可通过输入自定义的值来完全控制函数的形状以及到评估等级的映射。

如果更改函数参数并希望将其恢复至默认值,则可选择并删除该值,然后单击另一参数字段,这样便可将空参数重新计算为默认值。例如,如果已为基础系数输入一个值,但希望让函数重新位于阈值下限阈值上限之间,则删除基础系数参数值,单击另一参数字段,这样便可计算出与阈值间的函数相拟合的新基础系数

注:

MS 小值函数和 MS 大值函数不遵循这种交互行为,这是因为这两种函数均取决于输入数据集的平均值和标准差。

相关主题