TfExponential
Краткая информация
Задает функцию преобразования Exponential, которая определяется по контролирующим форму параметрам сдвига и базового фактора, а также по верхнему и нижнему порогам, задающим диапазон, в котором применяется функция.
Более подробно о влиянии параметров на эту функцию преобразования
Обсуждение
Инструмент, который использует объект TfExponential, – это Пересчет по функции (Rescale by Function).
Самое высокое положительное значение функции ограничено половиной максимального значения с плавающей точкой одинарной точности (FLT_MAX, значение которого равно 3.402823466 x 1038), т.е. числом 1.701411733 x 1038. Любые входные значения, превышающие этот лимит, получат в выходном растре значение To scale.
Каждое возрастание высоких входных значений может существенно увеличивать итоговый диапазон функции. В результате, когда диапазон функции линейно преобразуется в шкалу оценки, высшие значения функции искажают диапазон функции так, что форма кривой Экспоненциальной функции может оказаться потерянной в выходной шкале оценки. Уменьшение upperThreshold можно использовать для срезания некоторых высоких значений.
Более подробно:
Между baseFactor и основанием экспоненциальной функции имеется связь. Формула для перехода к натуральному основанию выглядит так: bx = (eln(b))x = ex * ln(b), где ln(b) является baseFactor в формуле, использованной в функции TfExponential Exp((x – shift) * baseFactor).
Синтаксис
TfExponential({shift}, {baseFactor}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
| Имя | Объяснение | Тип данных |
|---|---|---|
|
shift (Дополнительный) |
Определяет степень смещения каждого из входных значений. Значение сдвига вычитается из входного значения. Функция преобразования применяется к смещенному входному значению для определения значения функции. Сдвиг может быть положительным или отрицательным. (Значение по умолчанию — None) |
Double |
|
baseFactor (Дополнительный) |
Множитель, который управляет крутизной возрастания функции Exponential. Чем больше множитель, тем круче кривая при больших входных значениях. Между baseFactor и основанием функции Exponential имеется тесная связь. Значение (Значение по умолчанию — None) |
Double |
|
lowerThreshold (Дополнительный) |
Задает начальное значение, к которому начинает применяться указанная функция преобразования. Входное значение, соответствующее Значение (Значение по умолчанию — None) |
Double |
|
valueBelowThreshold (Дополнительный) |
Указываемое пользователем значение, которое будет присвоено ячейкам, чьи значения ниже Значение (Значение по умолчанию — None) |
Variant |
|
upperThreshold (Дополнительный) |
Задает конечное значение,на котором заканчивается применение указанной функции преобразования. Входное значение, соответствующее Значение (Значение по умолчанию — None) |
Double |
|
valueAboveThreshold (Дополнительный) |
Указываемое пользователем значение, которое будет присвоено ячейкам, чьи значения выше Значение (Значение по умолчанию — None) |
Variant |
Свойства
| Имя | Объяснение | Тип данных |
|---|---|---|
|
shift (Чтение / Запись) |
Значение |
Double |
|
baseFactor (Чтение / Запись) |
Значение |
Double |
|
lowerThreshold (Чтение / Запись) |
Значение |
Double |
|
valueBelowThreshold (Чтение / Запись) |
Значение, которое будет присвоено ячейкам выходного растра, чьи значения ниже |
Variant |
|
upperThreshold (Чтение / Запись) |
Значение |
Double |
|
valueAboveThreshold (Чтение / Запись) |
Значение, которое будет присвоено ячейкам выходного растра, чьи значения превышают |
Variant |
Пример кода
Иллюстрирует создание класса TfExponential и его использование в инструменте RescaleByFunction в окне Python.
import arcpy
from arcpy.sa import *
from arcpy import env
env.workspace = "c:/sapyexamples/data"
outRescale = RescaleByFunction("distroads", TfExponential(30, 0.00035, "#", "#", "#", "#"), 1, 10)
outRescale.save("c:/sapyexamples/rescaletfex1")
Иллюстрирует преобразование входных данных с помощью инструмента RescaleByFunction, использующего класс TfExponential.
# Name: TfExponential_Ex_02.py
# Description: Rescales input raster data using an Exponential 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 = "distroads"
# Create the TfExponential object
shift = 30
basefactor = 0.00035
lowerthresh = "#"
valbelowthresh = "#"
upperthresh = "#"
valabovethresh = "#"
myTfFunction = TfExponential(shift, basefactor, 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/rescaletfex2")