转换函数的公式
需具备 Spatial Analyst 许可方可使用。
本节介绍了用于按函数重设等级工具中转换函数的公式。 转换函数公式表示为 Spatial Analyst 地图代数表达式。
确定了每个转换函数的通用公式。 默认情况下,更改通用公式以适应输入数据集的最小值 (lowerThreshold) 和最大值 (upperThreshold)。 下面还介绍了如何确定默认参数。
使用通用公式,可以定义任意数量的函数曲线,并且可以捕获函数曲线的任何部分。 在公式的默认版本中,函数仅有一条曲线可以拟合输入数据集的最小值和最大值。 因此,除了应用转换值的线性缩放外,以不同单位(例如摄氏度或华氏度)表示的数据将产生相同的输出评估值。
应用转换函数
从概念上讲,应用转换函数的步骤如下:
指定输入数据集和函数参数。
应用转换公式。
将转换后的值线性缩放到评估等级。
用于将转换值缩放到上面步骤 3 中的评估等级的线性变换方程如下所示。
\(ScaledY = fromScale + (Y - min(Y)) * r\)
其中:
\(Y = F(In)\) 为转换后的值,公式为 \(F\),一般格式如下(其中 \(In\) 是输入值)
\(r\) 为 \(\Large \frac {(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 = \Large \frac {(minIn * Ln(toScale) - maxIn * Ln(fromScale))}{(Ln(toScale) - Ln(fromScale))}\)
\(B = \Large \frac {(minIn * Ln(fromScale) - maxIn * Ln(toScale))}{(Ln(fromScale) - Ln(toScale))}\)
\(C = \Large \frac {(Ln(toScale) - Ln(fromScale))}{(maxIn - minIn)}\)
\(D = \Large \frac {(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\) 是输入的最大值
线性
以下是线性转换函数的公式和默认值。
一般格式
根据坡度类型,公式的一般形式如下:
正斜率(最小值 < 最大值):
\(Con(In < Min, 0, Con(In > Max, 1, (In - Min) / Diff))\)
负斜率(最小值 > 最大值):
\(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 = \Large \frac {(minIn * Exp(toScale) - maxIn * Exp(fromScale))}{(Exp(toScale) - Exp(fromScale))}\)
\(B = \Large \frac {(minIn * Exp(fromScale) - maxIn * Exp(toScale))}{(Exp(fromScale) - Exp(toScale))}\)
\(C = \Large \frac {(Exp(toScale) - Exp(fromScale))}{(maxIn - minIn)}\)
\(D = \Large \frac {(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 = \Large \frac {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\) 是输入的最大值