TfLogarithm (arcpy.sa)

摘要

定义一个对数变换函数,该函数是根据平移和系数这两个形状控制参数,以及确定函数应用范围的阈值上限和下限确定的。

了解有关各参数对此变换函数作用的详细信息

讨论

使用 TfLogarithm 对象的工具为按函数重设等级

对数的底数和系数之间没有直接关系。

按照定义,输入值趋近于零时,函数值趋近于无穷。随着函数值趋近于无穷,较小的函数值将大幅增加函数的范围。因此,当函数范围线性变换为评估级别时,较小的函数值将影响范围,因而对数曲线的形状可能会丢失。可通过增加 lowerThreshold 截断部分非常低的值。

为解决较小输入值影响函数范围的问题,默认情况下将应用基于输入范围的可变平移。该平移将截断非常低的值,从而使对数函数的形状保持在输出栅格之内。

开始行动开始行动:

默认可变平移在概念上的技术相互作用为

  • 函数限制通过最小和最大输入值乘以系数计算而得。
  • 增量的计算方式为:Delta = Exp(functionLimit)/factor。增量应小于 FLT_EPSILON(等于 1.19209290 x 10-07)。
  • 确定平移:shift = inputMinimum - Delta。

语法

TfLogarithm ({shift}, {factor}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
参数说明数据类型
shift

定义每个输入值应平移的量。平移值是从输入值中减去的值。将变换函数应用于平移后的输入值以确定函数值。

默认情况下,通过平移进行调整,从而使函数从 lowerThreshold(或非常接近的位置)开始。因此,在函数已限于阈值下限和上限之间的情况下,函数将应用于 0(偏移后的输入值)。

可通过应用平移,使较小输入值不会大幅增加函数值的范围,进而使最终输出评估等级保持常规的函数形状。

The shift can be positive or negative.

(默认值为 None)

Double
factor

应用于平移后的输入值的乘数。系数会更改对数曲线的增长情况。

(默认值为 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

属性

属性说明数据类型
shift
(读写)

函数的平移值,用于定义在应用函数前每个输入值应减去的量。

Double
factor
(读写)

变换函数的系数值,用于确定要应用到已平移输入值的乘数。

Double
lowerThreshold
(读写)

变换函数的 lowerThreshold 的值,用于定义开始应用指定变换函数的起始值。

Double
valueBelowThreshold
(读写)

输入值低于 lowerThreshold 的值将被分配到输出像元。

Variant
upperThreshold
(读写)

变换函数的 upperThreshold 值,用于定义停止应用指定函数的终止值。

Double
valueAboveThreshold
(读写)

输入值高于 upperThreshold 的值将被分配到输出像元。

Variant

代码实例

对数变换函数示例 1(Python 窗口)

演示如何创建 TfLogarithm 类以及如何在 Python 窗口的 RescaleByFunction 工具中使用该类。

import arcpy
from arcpy.sa import *
from arcpy import env
env.workspace = "c:/sapyexamples/data"
outRescale = RescaleByFunction("elevation", TfLogarithm(450, 6.25, "#", "#", "#", "#"), 1, 10)
outRescale.save("c:/sapyexamples/rescaletflo1")
对数变换函数示例 2(独立脚本)

演示如何使用 TfLogarithm 类在 RescaleByFunction 工具中转换输入数据。

# Name: TfLogarithm_Ex_02.py
# Description: Rescales input raster data using an Logarithm 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 TfLogarithm object
shift = 450
factor = 6.25
lowerthresh = "#"
valbelowthresh = "#"
upperthresh = "#"
valabovethresh = "#"
myTfFunction = TfLogarithm(shift, factor, 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/rescaletflg2")

相关主题

5/10/2014