TfLogarithm (arcpy.sa)

Краткая информация

Задает функцию преобразования 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

Определяет степень смещения каждого из входных значений. Значение сдвига вычитается из входного значения. Функция преобразования применяется к смещенному входному значению для определения значения функции.

По умолчанию сдвиг меняет функцию так, чтобы она начиналась у lowerThreshold (или очень близко к нему). В результате функция будет применена к 0 (смещенное входное значение) и ограничена верхним и нижним порогами.

Сдвиг можно применить так, чтобы низкие входные значения не существенно увеличивали диапазон значений функции; поэтому конечная выходная шкала оценки будет сохранять общую форму функции.

Сдвиг может быть положительным или отрицательным.

(Значение по умолчанию — None)

Double
factor

Множитель, применяемый к входным значениям со сдвигом. Параметр factor меняет степень возрастания логарифмической кривой.

(Значение по умолчанию — None)

Double
lowerThreshold

Задает начальное значение, к которому начинает применяться указанная функция преобразования. Входное значение, соответствующее lowerThreshold, присваивается шкале оценки fromScale в выходном растре. Входные значения меньшее lowerThreshold присваиваются значению valueBelowThreshold и не рассматриваются в диапазоне значений функции.

Значение lowerThreshold должно быть меньше, чем upperThreshold.

(Значение по умолчанию — None)

Double
valueBelowThreshold

Указываемое пользователем значение, которое будет присвоено ячейкам, чьи значения ниже lowerThreshold.

Значение valueBelowThreshold может быть числом с плавающей точкой, целым числом или NoData. В диалоговом окне инструмента вокруг NoData не используются кавычки; однако в скрипте необходимо указывать "NoData" (с кавычками).

(Значение по умолчанию — None)

Variant
upperThreshold

Задает конечное значение,на котором заканчивается применение указанной функции преобразования. Входное значение, соответствующее upperThreshold, присваивается шкале оценки toScale в выходном растре. Входные значения выше upperThreshold присваиваются значению valueAboveThreshold и не рассматриваются в диапазоне значений функции.

Значение lowerThreshold должно быть меньше, чем upperThreshold.

(Значение по умолчанию — None)

Double
valueAboveThreshold

Указываемое пользователем значение, которое будет присвоено ячейкам, чьи значения выше upperThreshold.

Значение valueAboveThreshold может быть числом с плавающей точкой, целым числом или NoData. В диалоговом окне инструмента вокруг NoData не используются кавычки; однако в скрипте необходимо указывать "NoData" (с кавычками).

(Значение по умолчанию — None)

Variant

Свойства

СвойствоОбъяснениеТип данных
shift
(чтение и запись)

Значение shift для функция, задающее объем вычитания из каждого входного значения перед применением функции.

Double
factor
(чтение и запись)

Значение factor для функции преобразования, задающее множитель, применяемый к входным значениям со сдвигом.

Double
lowerThreshold
(чтение и запись)

Значение lowerThreshold для функция преобразования, задающее начальное значение, к которому начинает применяться функция преобразования.

Double
valueBelowThreshold
(чтение и запись)

Значение, которое будет присвоено ячейкам выходного растра, чьи значения ниже lowerThreshold.

Variant
upperThreshold
(чтение и запись)

Значение upperThreshold для функция преобразования, задающее конечное значение, к которому начинает применяться функция преобразования.

Double
valueAboveThreshold
(чтение и запись)

Значение, которое будет присвоено ячейкам выходного растра, чьи значения превышают upperThreshold.

Variant

Пример кода

Функция преобразования Logarithm, пример 1 (окно Python)

Иллюстрирует создание класса 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")
Функция преобразования Logarithm, пример 2 (автономный скрипт)

Иллюстрирует преобразование входных данных с помощью инструмента 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
# 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