转换函数的公式

本节介绍了用于按函数重设等级工具中转换函数的公式。 转换函数公式表示为 Spatial Analyst 地图代数表达式。

确定了每个转换函数的通用公式。 默认情况下,更改通用公式以适应输入数据集的最小值 (lowerThreshold) 和最大值 (upperThreshold)。 下面还介绍了如何确定默认参数。

使用通用公式,可以定义任意数量的函数曲线,并且可以捕获函数曲线的任何部分。 在公式的默认版本中,函数仅有一条曲线可以拟合输入数据集的最小值和最大值。 因此,除了应用转换值的线性缩放外,以不同单位(例如摄氏度或华氏度)表示的数据将产生相同的输出评估值。

应用转换函数

从概念上讲,应用转换函数的步骤如下:

  1. 指定输入数据集和函数参数。
  2. 应用转换公式。
  3. 将转换后的值线性缩放到评估等级。

用于将转换值缩放到上面步骤 3 中的评估等级的线性变换方程如下所示。

ScaledY = fromScale + (Y - min(Y)) * r

其中:

  • Y = F(In) 为转换后的值,公式为 F,一般格式如下:
  • In 为输入值
  • r(toScale - fromScale) / (max(Y) - min(Y)) 的结果
  • min(Y)Y 的最小值
  • max(Y)Y 的最大值
  • fromScale 是评估等级的最小值(例如,1)
  • toScale 是评估等级的最大值(例如,10)

指数

以下是指数转换函数的公式和默认值。

一般格式

公式的一般格式如下。

Exp((In – inShift) * baseFactor)

其中:

  • In 为输入值
  • inShift 是从输入值中减去的值
  • baseFactor 是移位输入值的乘数,用于控制指数函数增加的急剧程度

默认值

inShiftbaseFactor 的默认值计算方式如下。

inShift = Con(toScale > fromScale, A, B)
baseFactor = Con(toScale > fromScale, C, D)

其中:

  • A = (minIn * Ln(toScale) - maxIn * Ln(fromScale)) / (Ln(toScale) - Ln(fromScale))
  • B = (minIn * Ln(fromScale) - maxIn * Ln(toScale)) / (Ln(fromScale) - Ln(toScale))
  • C = (Ln(toScale) - Ln(fromScale)) / (maxIn - minIn)
  • D = (Ln(fromScale) - Ln(toScale)) / (maxIn - minIn)
  • Ln 是以 e 为底的值的对数
  • minIn 是输入的最小值
  • maxIn 是输入的最大值

高斯函数

以下是高斯转换函数的公式和默认值。

一般格式

公式的一般格式如下。

Exp(-Spread * Square(In - MidPoint))

其中:

  • Spread 为散度参数,用于控制自中点开始衰减的急剧程度
  • In 为输入值
  • MidPoint 为中点参数,可定义高斯曲线的中心

默认值

SpreadMidPoint 的默认值计算方式如下。

Spread = Ln(10) * 4 / Pow(MidPoint - minIn, 2)
MidPoint = (maxIn + minIn) / 2

其中:

  • Ln(10) 是以 e 为底的 10 的对数
  • Pow(MidPoint - minIn, 2)MidPoint - minIn 的 2 次方值
  • minIn 是输入的最小值
  • maxIn 是输入的最大值

大值

以下是大值转换函数的公式和默认值。

一般格式

公式的一般格式如下。

1.0 / (1.0 + Pow(In / MidPoint, - Spread))

其中:

  • In 为输入值
  • MidPoint 为中点参数,可定义此函数的过渡点
  • Spread 为散度参数,用于控制优先级升高和降低的速度

默认值

SpreadMidPoint 的默认值计算方式如下。

Spread = 5
MidPoint = (maxIn + minIn) / 2

其中:

  • minIn 是输入的最小值
  • maxIn 是输入的最大值

线性

以下是线性转换函数的公式和默认值。

一般格式

根据坡度类型,公式的一般形式如下:

正斜率 (Min < Max):

Con(In < Min, 0, Con(In > Max, 1, (In - Min) / Diff))

平均负斜率 (Min > Max):

Con(In > Min, 0, Con(In < Max, 1, (In - Min) / Diff))

其中:

  • In 为输入值
  • Min 为指定最小值,用于建立线性函数必须经过的第一个点。
  • Max 为指定最大值,用于建立线性函数必须经过的第二个点。
  • Diff 等于 Max - Min

默认值

MinMax 的默认值计算方式如下。

Min = minIn
Max = maxIn

其中:

  • minIn 是输入的最小值
  • maxIn 是输入的最大值

对数

以下是对数转换函数的公式和默认值。

一般格式

公式的一般格式如下。

Ln((In – inShift) * baseFactor)

其中:

  • In 为输入值
  • InShift 是从输入值中减去的值
  • baseFactor 是移位输入值的乘数,用于控制对数函数的上升程度

默认值

inShiftbaseFactor 的默认值计算方式如下。

inShift = Con(toScale > fromScale, A, B)
baseFactor = Con(toScale > fromScale, C, D)

其中:

  • A = (minIn * Exp(toScale) - maxIn * Exp(fromScale)) / (Exp(toScale) - Exp(fromScale))
  • B = (minIn * Exp(fromScale) - maxIn * Exp(toScale)) / (Exp(fromScale) - Exp(toScale))
  • C = (Exp(toScale) - Exp(fromScale)) / (maxIn - minIn)
  • D = (Exp(fromScale) - Exp(toScale)) / (maxIn - minIn)
  • Exp 是以 e 为底的值的指数
  • minIn 是输入的最小值
  • maxIn 是输入的最大值

逻辑衰减

以下是逻辑衰减转换函数的公式。

一般格式

公式的一般格式如下。

C / (1 + A * Exp((In – Min) * B))

公式中参数定义与 LogisticGrowth 相同。

注:

LogisticGrowth 方程中,Exponential 计算由计算指数的值的负值确定:Exp( - (In - Min) * B)。

逻辑增长

以下是逻辑增长转换函数的公式和默认值。

一般格式

公式的一般格式如下。

C / (1 + A * Exp( - (In – Min) * B))

其中:

  • Min 为指定最小值,用于控制逻辑增长的起点。
  • C 是容量或上水平渐近线
  • A 用于确定 In = Min 时的截距
  • B 用于确定指数函数 Exp 的底数

默认值

CAB 的默认值确定方式如下。

C = 100
A = C / yInterceptPercent - 1
B = Ln(A) / (0.5 * (Max + Min) - Min)

其中:

  • yInterceptPercent 是 y 截距除以 C 的百分比;对于 LogisticGrowth,默认设置为 1;对于 LogisticDecay,默认设置为 99
  • Min 是指定最小值,默认设置为输入的最小值
  • Max 是指定最大值,默认设置为输入的最大值
  • Ln(A) 为以 e 为底的 A 的对数
  • 0.5 * (Max + Min) 是拐点 y = C / 2 的 x 坐标,以确保拐点位于 MinMax 中间

MS 较大值

以下是 MSLarge 转换函数的公式和默认值。

一般格式

公式的一般格式如下。

Con(In > nMeans, 1 - (nStdv / (In - nMeans + nStdv)), 0)

其中:

  • In 为输入值
  • nMeans 等于 meanMultiplier * mean
  • nStdv 等于 STDMultiplier * std,其中 std 是指总体间的标准差

默认值

默认情况下,meanMultiplierSTDMultiplier 均设置为 1。

MS 较小值

以下是 MSSmall 转换函数的公式和默认值。

一般格式

公式的一般格式如下。

Con(In > nMeans, nStdv / (In - nMeans + nStdv), 1)

其中:

  • In 为输入值
  • nMeans 等于 meanMultiplier * mean
  • nStdv 等于 STDMultiplier * std,其中 std 是指总体间的标准差

默认值

默认情况下,meanMultiplierSTDMultiplier 均设置为 1。

近邻分析

以下是邻近分析转换函数的公式和默认值。

一般格式

公式的一般格式如下。

1.0 / (1.0 + Spread * Pow(In - MidPoint, 2))

其中:

  • In 为输入值
  • Spread 为散度参数,用于控制自中点开始衰减的急剧程度
  • MidPoint 为中点参数,可定义曲线的中心

默认值

SpreadMidPoint 的默认值计算方式如下。

Spread = 36 / Pow(MidPoint - minIn, 2)
MidPoint = (maxIn + minIn) / 2

其中:

  • Pow(MidPoint - minIn, 2)MidPoint - minIn 的 2 次方值
  • minIn 是输入的最小值
  • maxIn 是输入的最大值

以下是转换函数的公式和默认值。

一般格式

公式的一般格式如下。

Pow(In – inShift, Exponent)

其中:

  • In 为输入值
  • inShift 是从输入值中减去的值
  • Exponent 是将函数提升到的指数

默认值

inShiftExponent 的默认值计算方式如下。

inShift = Con(toScale > fromScale, A, B)

其中:

  • A = Con(fromScale == 1, minIn - 1, minIn)
  • B = Con(toScale == 1, minIn - 1, minIn)
  • minIn 是输入的最小值
  • maxIn 是输入的最大值

Exponent = Con(toScale > fromScale, C, D)

其中:

  • C = Con(fromScale == 0, C1, Con(fromScale == 1, C2, 2))
  • C1 = Con(toScale <= 1, 1, Ln(toScale) / (maxIn - inShift))
  • C2 = Ln(toScale) / Ln(maxIn - inShift)
  • D = Con(toScale == 0, D1, Con(toScale == 1, D2, 2))
  • D1 = Con(fromScale <= 1, 1, Ln(fromScale) / (maxIn - inShift))
  • D2 = Ln(fromScale) / Ln(maxIn - inShift)
  • Ln 是以 e 为底的值的对数
  • minIn 是输入的最小值
  • maxIn 是输入的最大值

小值

以下是小值转换函数的公式和默认值。

一般格式

公式的一般格式如下。

1.0 / (1.0 + Pow(In / MidPoint, Spread))

其中:

  • In 为输入值
  • MidPoint 为中点参数,可定义此函数的过渡点
  • Spread 为散度参数,用于控制优先级降低和升高的速度

默认值

SpreadMidPoint 的默认值计算方式如下。

Spread = 5
MidPoint = (maxIn + minIn) / 2

其中:

  • minIn 是输入的最小值
  • maxIn 是输入的最大值

对称线性函数

以下是对称线性转换函数的公式和默认值。

一般格式

根据不同的坡度类型,公式的一般形式如下:

对于正斜率 (Min < Max):

Con(In < Min , 0, Con(In < MidP, (In - Min) / HDiff, Con(In > Max, 0, (Max - In) / HDiff)))

对于负斜率 (Min > Max):

Con(In < Max, 1, Con(In < MidP, (In - MidP) / HDiff, Con(In > Min, 1, (MidP - In) / HDiff)))

其中:

  • In 为输入值
  • Min 为指定最小值,用于建立 SymmetricLinear 函数必须经过的一个点。
  • Max 为指定最大值,用于建立 SymmetricLinear 函数必须经过的其他点。
  • Diff 等于 Max - Min
  • HDiff 等于 0.5 * Diff
  • MidP 等于 Min + HDiff

默认值

MinMax 的默认值计算方式如下。

Min = minIn
Max = maxIn

其中:

  • minIn 是输入的最小值
  • maxIn 是输入的最大值