需要 Spatial Analyst 许可。
摘要
定义一个线性变换函数,该函数是根据最大值和最小值这两个形状控制参数,以及确定函数应用范围的阈值上限和下限确定的。
讨论
使用 TfLinear 对象的工具为按函数重设等级。
函数值的范围为从 0 到 1,此范围随后将转换为评估等级。
要为变换函数创建一个正斜率,则 minimum 的设置值应小于 maximum 的设置值。要为函数创建一个负斜率,则 minimum 的设置值应大于 maximum 的设置值。
有必要了解以下 minimum 和 maximum 参数与阈值之间的关系:
- 如果设置的 minimum 参数小于 maximum 参数,并且 minimum 大于 lowerThreshold,则任何小于 minimum 且大于 lowerThreshold 的输入值都将在输出栅格中获得自等级的值。
- 如果设置的 maximum 参数大于 minimum 参数,并且 maximum 小于 upperThreshold,则任何大于 maximum 且小于 upperThreshold 的输入值将在输出栅格中获得至等级的值。
- 如果为 minimum 参数设置小于 lowerThreshold 的值,则 minimum 将设置为 lowerThreshold。如果为 maximum 参数设置大于 upperThreshold 的值,则 maximum 将设置为 upperThreshold。
线性函数的适用条件为:在正斜率情况下,较小值优先于较大值呈线性增加(导致较大值获得较高的输出评估值),而对于负斜率情况,则与此相反。
语法
TfLinear ({minimum}, {maximum}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
参数 | 说明 | 数据类型 |
minimum |
线性变换函数必须经过的两点中的一点。如果 minimum 小于 maximum,则线性函数的斜率为正。如果 minimum 大于 maximum,则线性函数的斜率为负。 The minimum cannot equal the maximum. (默认值为 None) | Double |
maximum | 线性函数必须经过的两点中的一点。如果 maximum 大于 minimum,则线性函数的斜率为正。如果 maximum 小于 minimum,则线性函数的斜率为负。 The minimum cannot equal the maximum. (默认值为 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 |
属性
属性 | 说明 | 数据类型 |
minimum (读写) | 变换函数的最小值,用于定义线性函数所必须经过的两点中的一点。 | Double |
maximum (读写) | 变换函数的最大值,用于定义线性函数所必须经过的两点中的一点。 | Double |
lowerThreshold (读写) |
变换函数的 lowerThreshold 的值,用于定义开始应用指定变换函数的起始值。 | Double |
valueBelowThreshold (读写) |
输入值低于 lowerThreshold 的值将被分配到输出像元。 | Variant |
upperThreshold (读写) |
变换函数的 upperThreshold 值,用于定义停止应用指定函数的终止值。 | Double |
valueAboveThreshold (读写) | 输入值高于 upperThreshold 的值将被分配到输出像元。 | Variant |
代码实例
线性变换函数示例 1(Python 窗口)
演示如何创建 TfLinear 类以及如何在 Python 窗口的 RescaleByFunction 工具中使用该类。
import arcpy
from arcpy.sa import *
from arcpy import env
env.workspace = "c:/sapyexamples/data"
outRescale = RescaleByFunction("elevation", TfLinear(421, 4450, "#", "#", "#", "#"), 1, 10)
outRescale.save("c:/sapyexamples/rescaletfli1")
线性变换函数示例 2(独立脚本)
演示如何通过 TfLinear 类在 RescaleByFunction 工具中转换输入数据。
# Name: TfLinear_Ex_02.py
# Description: Rescales input raster data using a Linear 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 = "elevation"
# Create the TfLinear object
minimum = 421
maximum = 4450
lowerthresh = "#"
valbelowthresh = "#"
upperthresh = "#"
valabovethresh = "#"
myTfFunction = TfLinear(minimum, maximum, 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/rescaletfli2")