本节介绍了用于按函数重设等级工具中转换函数的公式。 转换函数公式表示为 Spatial Analyst 地图代数表达式。
确定了每个转换函数的通用公式。 默认情况下,更改通用公式以适应输入数据集的最小值 (lowerThreshold) 和最大值 (upperThreshold)。 下面还介绍了如何确定默认参数。
使用通用公式,可以定义任意数量的函数曲线,并且可以捕获函数曲线的任何部分。 在公式的默认版本中,函数仅有一条曲线可以拟合输入数据集的最小值和最大值。 因此,除了应用转换值的线性缩放外,以不同单位(例如摄氏度或华氏度)表示的数据将产生相同的输出评估值。
应用转换函数
从概念上讲,应用转换函数的步骤如下:
- 指定输入数据集和函数参数。
- 应用转换公式。
- 将转换后的值线性缩放到评估等级。
用于将转换值缩放到上面步骤 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 是移位输入值的乘数,用于控制指数函数增加的急剧程度
默认值
inShift 和 baseFactor 的默认值计算方式如下。
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 为中点参数,可定义高斯曲线的中心
默认值
Spread 和 MidPoint 的默认值计算方式如下。
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 为散度参数,用于控制优先级升高和降低的速度
默认值
Spread 和 MidPoint 的默认值计算方式如下。
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
默认值
Min 和 Max 的默认值计算方式如下。
Min = minIn
Max = maxIn
其中:
- minIn 是输入的最小值
- maxIn 是输入的最大值
对数
以下是对数转换函数的公式和默认值。
一般格式
公式的一般格式如下。
Ln((In – inShift) * baseFactor)
其中:
- In 为输入值
- InShift 是从输入值中减去的值
- baseFactor 是移位输入值的乘数,用于控制对数函数的上升程度
默认值
inShift 和 baseFactor 的默认值计算方式如下。
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 的底数
默认值
C、A 和 B 的默认值确定方式如下。
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 坐标,以确保拐点位于 Min 和 Max 中间
MS 较大值
以下是 MSLarge 转换函数的公式和默认值。
一般格式
公式的一般格式如下。
Con(In > nMeans, 1 - (nStdv / (In - nMeans + nStdv)), 0)
其中:
- In 为输入值
- nMeans 等于 meanMultiplier * mean
- nStdv 等于 STDMultiplier * std,其中 std 是指总体间的标准差
默认值
默认情况下,meanMultiplier 和 STDMultiplier 均设置为 1。
MS 较小值
以下是 MSSmall 转换函数的公式和默认值。
一般格式
公式的一般格式如下。
Con(In > nMeans, nStdv / (In - nMeans + nStdv), 1)
其中:
- In 为输入值
- nMeans 等于 meanMultiplier * mean
- nStdv 等于 STDMultiplier * std,其中 std 是指总体间的标准差
默认值
默认情况下,meanMultiplier 和 STDMultiplier 均设置为 1。
近邻分析
以下是邻近分析转换函数的公式和默认值。
一般格式
公式的一般格式如下。
1.0 / (1.0 + Spread * Pow(In - MidPoint, 2))
其中:
- In 为输入值
- Spread 为散度参数,用于控制自中点开始衰减的急剧程度
- MidPoint 为中点参数,可定义曲线的中心
默认值
Spread 和 MidPoint 的默认值计算方式如下。
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 是将函数提升到的指数
默认值
inShift 和 Exponent 的默认值计算方式如下。
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 为散度参数,用于控制优先级降低和升高的速度
默认值
Spread 和 MidPoint 的默认值计算方式如下。
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
默认值
Min 和 Max 的默认值计算方式如下。
Min = minIn
Max = maxIn
其中:
- minIn 是输入的最小值
- maxIn 是输入的最大值