描述
通过将栅格函数或函数链应用于一个或多个输入栅格创建栅格对象。
讨论
使用 Apply 函数可通过栅格函数或函数链处理一个或多个栅格数据集。此函数用于创建一个栅格对象,该栅格对象是应用了栅格函数的一个或多个输入栅格对象。
输出栅格对象的引用栅格数据集是临时的。要将其设置为永久,可以调用栅格对象的 save 方法。
语法
Apply (in_raster, raster_function, {raster_function_arguments})
参数 | 说明 | 数据类型 |
in_raster [in_raster,...] | 一个或多个输入栅格数据集。输入可能包括以下内容:
| Raster |
raster_function | 要应用于输入的栅格函数的名称或自定义栅格函数(.rft.xml 文件)的路径。 | String |
raster_function_arguments | 与栅格函数或函数链关联的参数和值。如果未指定并且如果适用,将使用默认值。 例如,缨帽栅格函数不需要任何参数;输入为单个栅格,因此无需指定参数。 但是,算术栅格函数需要 5 个输入参数:栅格、Raster2、运算、像元大小类型和范围类型。要使用算术和应用函数,栅格和 Raster2 将在 in_raster 参数中定义,剩余参数采用默认值,因此如果没有为这些参数指定任何值,则将使用默认值。 有关每个栅格函数的函数参数的信息,请参阅栅格函数对象。 | Dictionary |
数据类型 | 说明 |
Raster | 应用了函数的输出栅格数据集。 |
代码示例
将 NDVI、算术和波段合成函数应用于一个或多个栅格数据集。
# 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 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'})