Subset

描述

根据所选变量和维度间隔,创建作为输入多维栅格子集的栅格对象。

讨论

使用 Subset 函数从多维栅格对象中提取变量数据的子组。您可以将子组用作其他函数的输入。例如,要计算包含温度和降水数据的多维栅格的平均月降水量值,您可以先使用 Subset,将降水量变量作为栅格对象进行提取。然后您可以使用 Aggregate 函数计算月平均值。

该函数将创建一个栅格对象,该栅格对象为输入的子组,其维度和变量信息由输入参数定义。

栅格对象的引用栅格数据集是临时的。要将其设置为永久,可以调用栅格对象的 save 方法。

语法

Subset (in_raster, {variables}, {dimension_definitions})
参数说明数据类型
in_raster

输入多维栅格数据集。

Raster
variables
[variables,...]

要包含在输出栅格中的变量名称或变量名称列表。如果未指定,则将包含所有变量。

String
dimension_definitions

用于划分多维栅格的维度间隔。此参数作为字典传递,其中键:值对被描述为 dimension_name:dimension interval。键是您希望划分维度的名称,值是维度间隔。维度间隔必须使用以下格式之一:

  • 单维度输入。

    例如,要使用深度为 0 的深度维度划分变量,请使用 {"depth": 0 }

  • 包含最小和最大维度值的元组。

    例如,要使用深度范围在 0 到 100 之间的深度维度划分变量,请使用 {"depth": (-100,0)}

  • 包含最小和最大维度值,增量大小和增量单位的元组。

    例如,要使用时间范围在 1980 到时间序列末之间的时间维度划分变量,提取每年的第一天,请使用 {"StdTime": ('1980-01-01T12:00:00', None, 1, 'year')}

    要使用时间范围在 1980 到 2000 之间的时间维度划分变量,提取每年的 1 月份,请使用 {"StdTime": ('1980-01-01T12:00:00', 1980-31-01T12:00:00', 1, 'year')}

  • 包含上述任意内容的列表。您可以包含多个单维度输入和多个最小和最大范围。

    例如,要使用深度为 0、50 和 200 的深度维度划分变量,请使用 {"depth": [0, -50, -200]}

    例如,要使用深度范围在 0 到 100 之间或深度为 500 的深度维度划分变量,请使用 {"depth": [-500, (-100, 0)]}

Dictionary
返回值
数据类型说明
Raster

输出子集多维栅格。

代码示例

子集示例

从气候多维数据中提取四个子集并保存最终子集。

import arcpy
from arcpy.ia import *

in_raster = Raster('ClimateData_Daily.nc', True)

# Select two variables: precipitation and water temperature 
out_subset_raster1 = Subset(in_raster, variables = ['precip', 'water_temp'])
print(out_subset_raster1.variables)

# Filter variables that have the Depth dimension and where depth=0.
# For variables that do not have dimension depth, all slices are selected.
out_subset_raster2 = Subset(in_raster, dimension_definitions = {'depth' : 0})   
print(out_subset_raster2.variables)

# Select water temperature data on the 1st of every January
out_subset_raster3 = Subset(in_raster, variables = 'water_temp', 
	dimension_definitions = {'time': 
	('1980-01-01T12:00:00', None, 1, 'year')})   
print(out_subset_raster3.variables)

# Select water temperature data for the first three months of every year
out_subset_raster4 = Subset(in_raster, variables = 'water_temp',
	dimension_definitions = {'time':('1980-01-01T00:00:00', 
	'1980-03-31T00:00:00', 1, 'year')})   

# Select both variables for January in 5 year increments: 1980, 1985, 1990, etc.
out_subset_raster5 = Subset(in_raster, variables = ['precip', 'water_temp']), 
	dimension_definitions = {'time':
	('1980-01-01T00:00:00', '1980-01-31T00:00:00', 5, 'year')})   

# Select surface water temperature in January 1980
out_subset_raster6 = Subset(in_raster, variables = 'water_temp', 
	dimension_definitions  = {'time': 
	('1980-01-01T12:00:00', '1980-01-31T12:00:00'), 'depth': 0})
print(out_subset_raster4.mdinfo)

# Save the water temperature in January 1980
out_subset_raster6.save("c:/output/Jan1980_watertemp.crf")