TfLogarithm
Краткая информация
Задает функцию преобразования Logarithm, которая определяется по контролирующим форму параметрам сдвига и фактора, а также по верхнему и нижнему порогам, задающим диапазон, в котором функция будет применена.
Более подробно о влиянии параметров на эту функцию преобразования
Обсуждение
Инструмент, который использует объект TfLogarithm, – это Пересчет по функции (Rescale by Function).
Между основанием логарифма и factor нет прямой связи.
По определению, при приближении входных значений к нулю, значения функции приближаются к бесконечности. По мере приближения значений функции к бесконечности, меньшие значения функции существенно увеличивают диапазон функции. В результате, когда диапазон функции линейно преобразуется в шкалу оценки, меньшие значения функции искажают диапазон функции так, что форма логарифмической кривой может оказаться потерянной. Увеличение lowerThreshold можно использовать для срезания некоторых действительно низких значений.
Для решения проблемы искажения диапазона функции маленькими значениями, по умолчанию применяется переменный сдвиг, основанный на диапазоне входных значений. Этот сдвиг убирает очень низкие значения, сохраняя форму логарифмической функции в выходном растре.
Более подробно:
Технические основы переменного сдвига, использующегося по умолчанию
Лимит функции вычисляется по минимальному и максимальному входным значениям, умноженным на
factor.Дельта вычисляется так: Delta = Exp(functionLimit)/factor. Дельта должна быть меньше FLT_EPSILON (которое равно 1.19209290 x 10-07).
Определение сдвига: shift = inputMinimum – Delta.
Синтаксис
TfLogarithm({shift}, {factor}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
| Имя | Объяснение | Тип данных |
|---|---|---|
|
shift (Дополнительный) |
Определяет степень смещения каждого из входных значений. Значение сдвига вычитается из входного значения. Функция преобразования применяется к смещенному входному значению для определения значения функции. По умолчанию сдвиг меняет функцию так, чтобы она начиналась у Сдвиг можно применить так, чтобы низкие входные значения не существенно увеличивали диапазон значений функции; поэтому конечная выходная шкала оценки будет сохранять общую форму функции. Сдвиг может быть положительным или отрицательным. (Значение по умолчанию — None) |
Double |
|
factor (Дополнительный) |
Множитель, применяемый к входным значениям со сдвигом. Параметр 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 и его использование в инструменте RescaleByFunction в окне Python.
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")
Иллюстрирует преобразование входных данных с помощью инструмента RescaleByFunction, использующего класс TfLogarithm.
# 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")