需要 Spatial Analyst 许可。
摘要
定义一个高斯变换函数,该函数是根据中点和散度这两个形状控制参数,以及确定函数应用范围的阈值上限和下限确定的。
讨论
使用 TfGaussian 对象的工具为按函数重设等级。
高斯变换函数的方程为:
方程的输入为 f1(散度 (spread))和 f2(中点 (midpoint))。
函数值的范围为从 0 到 1,此范围随后将转换为评估等级。
散度 (spread) 定义了变换函数值从中点向两边下降的快慢程度。如果中点位于阈值上下限之间,则散度 (spread) 定义函数值从至等级到自等级下降的快慢程度。散度越大,函数在中点附近变化越急剧。换言之,随着散度 (spread) 的减小,变换函数接近中点的速度越慢。
合适散度 (spread) 值的选择是一个主观过程,它取决于输入值的数值范围。建议从默认值 0.1 开始尝试。通常,值分别在 0.01 到 1 或 0.001 到 1 的范围内变化。默认散度 (spread) 将按照适合函数输入数据集的最小值和最大值进行计算。
高斯函数在最高优先级接近特定值时十分有用。
高斯函数与邻近分析函数类似,只是邻近分析函数的散度 (spread) 更小,也就是说其在中点附近的变化更急剧。
语法
TfGaussian ({midpoint}, {spread}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
参数 | 说明 | 数据类型 |
midpoint |
此用户定义的值用于定义高斯变换函数曲线的最高点。如果中点值介于阈值下限和上限之间,含相应值的输入像元位置将在输出栅格上获得至等级评估等级值。 (默认值为 None) | Double |
spread | 定义高斯函数的散度,用于控制函数自中点开始向两侧衰减的急剧程度。散度的范围通常在 0.01 到 1 之间,值越大,自中点起衰减的幅度越大。 (默认值为 None) | Double |
lowerThreshold | 定义开始应用指定变换函数的起始值。在输出栅格上与 lowerThreshold 对应的输入值将分配到自等级评估等级值。低于 lowerThreshold 的输入值将分配到 valueBelowThreshold,并且不会计入函数值范围。 lowerThreshold 必须小于 upperThreshold。 (默认值为 None) | Double |
valueBelowThreshold | 此用户定义的值用于分配输入值小于 lowerThreshold 的输出像元位置。 valueBelowThreshold 的值可以为浮点数、整数或 NoData。在工具对话框内,NoData 左右不使用引号;但在编写脚本时需要使用引号,即 "NoData"。 (默认值为 None) | Variant |
upperThreshold | 定义终止应用指定变换函数的结束值。在输出栅格上与 upperThreshold 对应的输入值将分配到至等级评估等级值。高于 upperThreshold 的输入值将分配到 valueAboveThreshold,并且不会计入函数值范围。 lowerThreshold 必须小于 upperThreshold。 (默认值为 None) | Double |
valueAboveThreshold | 此用户定义的值用于分配输入值大于 upperThreshold 的输出像元位置。 valueAboveThreshold 的值可以为浮点数、整数或 NoData。在工具对话框内,NoData 左右不使用引号;但在编写脚本时需要使用引号,即 "NoData"。 (默认值为 None) | Variant |
属性
属性 | 说明 | 数据类型 |
midpoint (读写) | 变换函数的中点值,用于定义函数曲线的最高点。 | Double |
spread (读写) |
变换函数的散度值,用于控制函数从中点开始向两侧的衰减程度。 | Double |
lowerThreshold (读写) |
变换函数的 lowerThreshold 的值,用于定义开始应用指定变换函数的起始值。 | Double |
valueBelowThreshold (读写) |
输入值低于 lowerThreshold 的值将被分配到输出像元。 | Variant |
upperThreshold (读写) |
变换函数的 upperThreshold 值,用于定义停止应用指定函数的终止值。 | Double |
valueAboveThreshold (读写) | 输入值高于 upperThreshold 的值将被分配到输出像元。 | Variant |
代码实例
高斯变换函数示例 1(Python 窗口)
演示如何创建 TfGaussian 类以及如何在 Python 窗口的 RescaleByFunction 工具中使用该类。
import arcpy
from arcpy.sa import *
from arcpy import env
env.workspace = "c:/sapyexamples/data"
outRescale = RescaleByFunction("solar", TfGaussian(180, 0.0004, "#", "#", "#", "#"), 1, 10)
outRescale.save("c:/sapyexamples/rescaletfga1")
高斯变换函数示例 2(独立脚本)
演示如何使用 TfGaussian 类在 RescaleByFunction 工具中转换输入数据。
# Name: TfGaussian_Ex_02.py
# Description: Rescales input raster data using a Gaussian function and
# transforms the function values onto a specified evaluation scale.
# Requirements: Spatial Analyst Extension
# Author: esri
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "solar"
# Create the TfGaussian object
midpoint = 180
spread = 0.0004
lowerthresh = "#"
valbelowthresh = "#"
upperthresh = "#"
valabovethresh = "#"
myTfFunction = TfGaussian(midpoint, spread, lowerthresh, valbelowthresh, upperthresh, valabovethresh)
# Set evaluation scale
fromscale = 1
toscale = 10
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute RescaleByFunction
outRescale = RescaleByFunction(inRaster, myTfFunction, fromscale, toscale)
# Save the output
outRescale.save("c:/sapyexamples/rescaletfga2")