TfLogarithm
汇总
定义一个对数变换函数,该函数是根据平移和系数这两个形状控制参数,以及确定函数应用范围的阈值上限和下限确定的。
讨论
使用 TfLogarithm 对象的工具为 按函数重设等级 。
对数的底数和 系数 之间没有直接关系。
按照定义,输入值趋近于零时,函数值趋近于无穷。随着函数值趋近于无穷,较小的函数值将大幅增加函数的范围。因此,当函数范围线性变换为评估级别时,较小的函数值将影响范围,因而对数曲线的形状可能会丢失。可通过增加 lowerThreshold 截断部分非常低的值。
为解决较小输入值影响函数范围的问题,默认情况下将应用基于输入范围的可变平移。该平移将截断非常低的值,从而使对数函数的形状保持在输出栅格之内。
抢先版本:
默认可变平移在概念上的技术相互作用为
函数限制通过最小和最大输入值乘以
系数计算而得。增量的计算方式为:Delta = Exp(functionLimit)/factor。增量应小于 FLT_EPSILON(等于 1.19209290 x 10-07)。
确定平移:shift = inputMinimum - Delta。
语法
TfLogarithm({shift}, {factor}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
| 名称 | 说明 | 数据类型 |
|---|---|---|
|
shift (可选) |
定义每个输入值应平移的量。平移值是从输入值中减去的值。将变换函数应用于平移后的输入值以确定函数值。 默认情况下,通过平移进行调整,从而使函数从 可通过应用平移,使较小输入值不会大幅增加函数值的范围,进而使最终输出评估等级保持常规的函数形状。 The shift can be positive or negative. (默认值为 None) |
Double |
|
factor (可选) |
应用于平移后的输入值的乘数。系数会更改对数曲线的增长情况。 (默认值为 None) |
Double |
|
lowerThreshold (可选) |
定义开始应用指定变换函数的起始值。在输出栅格上与
(默认值为 None) |
Double |
|
valueBelowThreshold (可选) |
此用户定义的值用于分配输入值小于
(默认值为 None) |
Variant |
|
upperThreshold (可选) |
定义终止应用指定变换函数的结束值。在输出栅格上与
(默认值为 None) |
Double |
|
valueAboveThreshold (可选) |
此用户定义的值用于分配输入值大于
(默认值为 None) |
Variant |
属性
| 名称 | 说明 | 数据类型 |
|---|---|---|
|
shift (读取和写入) |
函数的 |
Double |
|
factor (读取和写入) |
变换函数的 |
Double |
|
lowerThreshold (读取和写入) |
变换函数的 |
Double |
|
valueBelowThreshold (读取和写入) |
输入值低于 |
Variant |
|
upperThreshold (读取和写入) |
变换函数的 |
Double |
|
valueAboveThreshold (读取和写入) |
输入值高于 |
Variant |
代码示例
演示如何创建 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")
演示如何使用 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
# 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
# Run RescaleByFunction
outRescale = RescaleByFunction(inRaster, myTfFunction, fromscale, toscale)
# Save the output
outRescale.save("c:/sapyexamples/rescaletflg2")