Apply

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

Создает растровый объект путем применения растровой функции или цепочки функций к одному или нескольким растрам.

Обсуждение

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

Базовый набор растровых данных для выходного растрового объекта является временным. Чтобы сделать его постоянным, можно вызвать метод save растровго объекта.

Синтаксис

Apply (in_raster, raster_function, {raster_function_arguments})
ПараметрОписаниеТип данных
in_raster
[in_raster,...]

Входной набор или наборы растровых данных. Входными данными могут быть следующие:

  • Один растр - для растровых функций, требующих на входе одного растра, и имени аргумента растровой функции в качестве входного растра - Raster. Например, чтобы применить Растровую функцию NDVI к растру, на входе должен быть raster_object.
  • Набор растров в кортеже - для растровых функций, требующих на входе нескольких растров и имен аргументов функций для входных растров - Raster, Raster2, Raster3 и т.д. К примеру, чтобы применить Растровую функцию Arithmetic для выполнения арифметической операции к двум растрам, на входе будет (raster_object_1,raster_object_2).
  • Массив растров в списке - для растровых функций, требующих на входе массива растров, и имени аргумента растровой функции в качестве входного растра - Rasters. Например, чтобы применить Растровую функцию Composite Bands для совмещения трех растров в один, на входе должен быть список [raster_object_1,raster_object_2,raster_object_3].
  • Словарь имен и растров - для растровых функций, требующих набора имен растров. Например, чтобы применить Растровую функцию Heat Index для вычисления температур, на входе должен быть словарь ['temperature': raster_object_1,'rh': raster_object_2].

Raster
raster_function

Имя растровой функции либо путь к пользовательской растровой функции (файл .rft.xml), применяемой к входным данным.

String
raster_function_arguments

Параметры и значения, связанные с растровой функцией или цепочкой функций. Если они не будут заданы, будут использованы значения по умолчанию, если они применимы.

Например, функция Tasseled Cap не требует задания аргументов. На входе должен быть растр, а аргументы задавать не надо.

Функция Arithmetic, наоборот, требует ввода 5 входных параметров: Raster, Raster2, Operation, Cellsize Type и Extent Type. Для использования функции Arithmetic с функцией Apply Raster и Raster2 задаются для параметра in_raster, а у остальных параметров будут значения по умолчанию, поэтому если эти параметры не задать, будут использоваться значения по умолчанию.

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

Dictionary
Возвращаемое значение
Тип данныхОписание
Raster

Выходной набор растровых данных с примененной функцией.

Пример кода

Apply, пример 1

Применение функций NDVI, Arithmetic и Composite Bands к одному или нескольким растровым наборам.

# Apply NDVI, Arithmetic, and Composite Bands functions to one or more raster datasets.

import arcpy
from arcpy.ia import *

# Set input raster for NDVI
Landsat = Raster("Landsat8_1_12_18.tif") 

# Apply NDVI raster function to a single raster
out_NDVI_raster = Apply(Landsat, "NDVI", {'VisibleBandID':4,'InfraredBandID':5}) 

# Set input rasters for Arithmetic
DEM = Raster("DEM.tif")
Buildings = Raster("BuildingHeights.tif") 

# Apply Arithmetic raster function to add building height to ground elevation
out_Arithmetic_raster = Apply((DEM, Buildings),'Plus')

# Set input rasters for Composite Bands
Band1 = Raster("L8_MSB1.tif") 
Band2 = Raster("L8_MSB2.tif") 
Band3 = Raster("L8_MSB3.tif") 

# Apply Composite Bands function to combine three bands into a single raster
out_composite_rasters = Apply([Band1, Band2, Band3], 'CompositeBand')
Apply, пример 2

Применение функции Heat Index к двум многомерным растровым наборам.

# Apply Heat Index function to multidimensional raster objects

import arcpy
from arcpy.ia import *

# Set input multidimensional raster dataset
in_raster = Raster("C:\\test.gdb\ClimateData", True) 

# Select the relative humidity variable
RH = Subset(ClimateData, variables = 'rh')

# Select the temperature variable
Temp = Subset(ClimateData, variables = 't')

# Apply the Heat Index function to the two multidimensional raster subsets
# The output is a multidimensional raster where each slice is the heat index for the slice's time
heat_index_raster= Apply({'temperature': Temp, 'rh': RH}, 'HeatIndex', {'units':'Kelvin', 'outUnits':'Fahrenheit'})