Resumen
Defines the group of input rasters and attributes to include in a collection, which will be used for processing.
Debate
The RasterCollection object allows a group of rasters to be sorted and filtered easily, and prepares a collection for additional processing and analysis.
The RasterCollection object includes six methods (max, min, median, mean, majority, and sum), for calculating statistics for each pixel across matching bands within the collection's rasters.
For example, the sum method adds the pixel values from Band 1 in raster item 1 to the pixel values in Band 1 of raster item 2, and returns a Raster object where Band 1 contains those summed values.
Sintaxis
RasterCollection (rasters, {attribute_dict})
Parámetro | Explicación | Tipo de datos |
rasters [rasters,...] | The input raster datasets. Supported inputs include a list of rasters, a mosaic dataset, a multidimensional raster in Cloud Raster Format, a NetCDF file, or an image service. If you're using a list of raster datasets, all rasters must have the same cell size and spatial reference. | List |
attribute_dict | A Python dictionary that contains attribute information to be added to each raster, when the input is a list of rasters. For each key-value pair, the key is the attribute name and the value is a list of values that represent the attribute value for each raster. For example, to add a name field to a list of three rasters, use {"name": ["Landsat8_Jan", "Landsat8_Feb", "Landsat8_Mar"]}. (El valor predeterminado es None) | Dictionary |
Propiedades
Propiedad | Explicación | Tipo de datos |
fields (Sólo lectura) | The list of field names included in the raster collection. | String |
count (Sólo lectura) | The total number of items in the raster collection. | Integer |
Descripción general del método
Método | Explicación |
filter ({where_clause}, {query_geometry_or_extent}) | Filters the collection of raster items by attributes or geometry and returns a raster collection containing only the items that satisfy the filter. If no arguments are provided, all raster items from the raster collection will be returned in a new raster collection. |
filterByAttribute (field_name, operator, field_values) | Filters the collection of raster items by an attribute query and returns a raster collection containing only the items that satisfy the query. To query the raster collection based on a time field, use the filterByTime method. |
filterByCalendarRange (calendar_field, start, {end}, time_field_name, date_time_format) | Filters the collection of raster items based on the range of a calendar field and returns a raster collection containing only the items that satisfy the filter. If no arguments are provided, all raster items from the raster collection will be returned in a new raster collection. |
filterByGeometry (query_geometry_or_extent) | Filters the collection of raster items so that only those that intersect with the geometry will be returned. |
filterByRasterProperty (property_name, operator, property_values) | Filters the collection of raster items by a raster property query and returns a raster collection containing only the items that satisfy the query. |
filterByTime ({start_time}, {end_time}, {time_field_name}, {date_time_format}) | Filters the collection of raster items by a time range and returns a raster collection containing only the items that satisfy the filter. |
getFieldValues (field_name, {max_count}) | Returns the values of a specified field from the raster collection. |
majority () | Returns a raster object in which each band contains the pixel value that occurs most frequently for that band across all rasters in the raster collection. For example, if there are ten raster items in the raster collection, each with four bands, the majority method will determine the pixel value that occurs most frequently across all raster items for band 1, for band 2, for band 3, and for band 4; a four-band raster is returned. Band numbers are matched between raster items using the band index, so the items in the raster collection must follow the same band order. |
map (func) | Maps a Python function over a raster collection. |
max () | Returns a raster object in which each band contains the maximum pixel values for that band across all rasters in the raster collection. For example, if there are ten raster items in the raster collection, each with four bands, the max method will calculate the maximum pixel value that occurs across all raster items for band 1, band 2, band 3, and band 4; a four-band raster is returned. Band numbers are matched between raster items using the band index, so the items in the raster collection must follow the same band order. |
mean () | Returns a raster object in which each band contains the average pixel values for that band across all rasters in the raster collection. For example, if there are ten raster items in the raster collection, each with four bands, the mean method will calculate the mean pixel value that occurs across all raster items for band 1, for band 2, for band 3, and for band 4; a four-band raster is returned. Band numbers are matched between raster items using the band index, so the items in the raster collection must follow the same band order. |
median () | Returns a raster object in which each band contains the median pixel values for that band across all rasters in the raster collection. For example, if there are ten raster items in the raster collection, each with four bands, the median method will calculate the median pixel value that occurs across all raster items for band 1, for band 2, for band 3, and for band 4; a four-band raster is returned. Band numbers are matched between raster items using the band index, so the items in the raster collection must follow the same band order. |
min () | Returns a raster object in which each band contains the lowest pixel values for that band across all rasters in the raster collection. For example, if there are ten raster items in the raster collection, each with four bands, the min method will calculate the minimum pixel value that occurs across all raster items for band 1, band 2, band 3, and band 4; a four-band raster is returned. Band numbers are matched between raster items using the band index, so the items in the raster collection must follow the same band order. |
mosaic ({mosaic_method}) | Returns a raster dataset in which all items in a raster collection have been mosaicked into a single raster. |
qualityMosaic (quality_rc_or_list, {statistic_type}) | Returns a raster dataset in which all items in a raster collection have been mosaicked into a single raster based on a quality requirement. |
selectBands (band_ids_or_names) | Selects a list of bands from every raster item in a raster collection and returns a raster collection that contains raster items with only the selected bands. |
sort (field_name, {ascending}) | Sorts the collection of rasters by a field name and returns a raster collection that is in the order specified. |
sum () | Returns a raster object in which each band contains the sum of pixel values for that band across all rasters in the raster collection. For example, if there are ten raster items in the raster collection, each with four bands, the sum method will calculate the sum of pixel values for each pixel that occurs across all raster items for band 1, band 2, band 3, and band 4; a four-band raster is returned. Band numbers are matched between raster items using the band index, so the items in the raster collection must follow the same band order. |
toMultidimensionalRaster (variable_field_name, dimension_field_names) | Returns a multidimensional raster dataset, in which each item in the raster collection is a slice in the multidimensional raster. |
Métodos
filter ({where_clause}, {query_geometry_or_extent})
Parámetro | Explicación | Tipo de datos |
where_clause | An expression that limits the records returned. For more information on WHERE clauses and SQL statements, see SQL reference for query expressions used in ArcGIS. (El valor predeterminado es None) | String |
query_geometry_or_extent | An object that filters the items such that only those that intersect with the object will be returned. This can be specified with a Geometry object, Extent object, Raster object, or a path to a feature class. (El valor predeterminado es None) | Geometry |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters that satisfy the attribute or geometry queries. |
filterByAttribute (field_name, operator, field_values)
Parámetro | Explicación | Tipo de datos |
field_name | The field name to use in the filter. | String |
operator | The keyword to filter the attributes. Keywords include the following:
| String |
field_values [field_values,...] | The attribute value or values against which to compare. This can be specified as a string, a list, or a number. | String |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters that satisfy the attribute query. |
filterByCalendarRange (calendar_field, start, {end}, time_field_name, date_time_format)
Parámetro | Explicación | Tipo de datos |
calendar_field | The name of the calendar field. Specify one of the following: HOUR, DAY_OF_WEEK, DAY_OF_MONTH, DAY_OF_YEAR, WEEK_OF_YEAR, MONTH, YEAR, or QUARTER. | String |
start | The start value of the calendar_field. For example, to filter all items that were collected in January, filtered_rc = rc.filterByCalendarRange(calendar_field="MONTH", start=1). | Integer |
end | The end value of the calendar_field. For example, to filter all items that were collected in the first 5 days of each year, filtered_rc = rc.filterByCalendarRange(calendar_field="DAY_OF_YEAR", start=1, end=5). | Integer |
time_field_name | The name of the field that contains the time attribute for each item in the collection. The default is StdTime. | String |
date_time_format | The time format of the values in the time field. For example, if the input time value is "1990-01-31", the date_time_format is "%Y-%m-%d". | String |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters that satisfy the time range query. |
filterByGeometry (query_geometry_or_extent)
Parámetro | Explicación | Tipo de datos |
query_geometry_or_extent | An object that filters the items such that only those that intersect with the object will be returned. This can be specified with a Geometry object, Extent object, Raster object, or a path to a feature class. | Geometry |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters that satisfy the geometry filter. |
filterByRasterProperty (property_name, operator, property_values)
Parámetro | Explicación | Tipo de datos |
property_name | The name of the property to use in the filter. | String |
operator | The operator to filter the property.
| String |
property_values [property_values,...] | The property value or values against which to compare. This can be specified as a string, a list, or a number. | String |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters that satisfy the property query. |
filterByTime ({start_time}, {end_time}, {time_field_name}, {date_time_format})
Parámetro | Explicación | Tipo de datos |
start_time | A string that specifies the start time. The string should be formatted to match the date format of the input raster collections, for example, "1990-01-01T13:30:00". If not specified, the end time must be specified, and only the items that have a time value that is earlier than or equal to the end time will be returned. (El valor predeterminado es None) | String |
end_time | A string that specifies the end time. The string should be formatted to match the date format of the input raster collections, for example, "1991-01-01T13:30:00". If not specified, the start time must be specified, and only the items that have a time value that is later than or equal to the start time will be returned. (El valor predeterminado es None) | String |
time_field_name | The name of the field that contains the time attribute for each item in the collection. (El valor predeterminado es StdTime) | String |
date_time_format | The format of the start_time and end_time values. For example, if the provided start_time value is "1990-01-31", the date_time_format is "%Y-%m-%d." For dates that include a time component, such as "1990-01-31T00:00:00", the default format is "%Y-%m-%dT%H:%M:%S". | String |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters that satisfy the time range filter. |
getFieldValues (field_name, {max_count})
Parámetro | Explicación | Tipo de datos |
field_name | The name of the field from which to extract values. | String |
max_count | An integer that specifies the maximum number of field values to be returned. The values will be returned in the order that the raster items are ordered in the collection. If no value is specified, all the field values for the given field will be returned. (El valor predeterminado es None) | Integer |
Tipo de datos | Explicación |
String | The list of field values for the specified field name. |
majority ()
Tipo de datos | Explicación |
Raster | The raster in which each band contains the most frequently occurring pixel values for that band across all items in the raster collection. |
map (func)
Parámetro | Explicación | Tipo de datos |
func | The Python function to map over the raster collection. The return value of the function must be a dictionary in which one of the keys is raster. For example, {"raster": output_raster_object, "name": input_item_name["name"]}.
| Function |
Tipo de datos | Explicación |
RasterCollection | The raster collection in which each item contains the raster with the function applied and the attributes attached. |
max ()
Tipo de datos | Explicación |
Raster | The raster in which each band contains the maximum pixel values for that band across all rasters in the raster collection. |
mean ()
Tipo de datos | Explicación |
Raster | The raster in which each band contains the average pixel values for that band across all rasters in the raster collection. |
median ()
Tipo de datos | Explicación |
Raster | The raster in which each band contains the median pixel values for that band across all rasters in the raster collection. |
min ()
Tipo de datos | Explicación |
Raster | The raster in which each band contains the lowest pixel values for that band across all rasters in the raster collection. |
mosaic ({mosaic_method})
Parámetro | Explicación | Tipo de datos |
mosaic_method | The method used to handle overlapping areas between adjacent raster items. Mosaic method options include the following:
For more information on mosaic methods, see Mosaic operators. (El valor predeterminado es First) | String |
Tipo de datos | Explicación |
Raster | The raster dataset with the mosaicked raster items from the raster collection. |
qualityMosaic (quality_rc_or_list, {statistic_type})
Parámetro | Explicación | Tipo de datos |
quality_rc_or_list | The raster collection or list of rasters to be used as quality indicators. For example, Landsat 8's Band 1 is the Coastal/Aerosol band, which can be used to estimate the concentration of fine aerosol particles such as smoke and haze in the atmosphere. For a collection of Landsat 8 images, use the selectBands method to return a RasterCollection object containing only Band 1 from each raster item. The number of raster items in the quality_rc_or_list must match the number of raster items in the raster collection to be mosaicked. | RasterCollection |
statistic_type | The statistic used to compare the input collection or list of quality rasters.
For example, to mosaic the input raster collection such that those with the lowest aerosol content are on top, use the MIN statistic type. | String |
Tipo de datos | Explicación |
Raster | The raster dataset with the mosaicked raster items from the raster collection. |
selectBands (band_ids_or_names)
Parámetro | Explicación | Tipo de datos |
band_ids_or_names [band_ids_or_names,...] | The names or index numbers of bands to be included in the returned raster items. This can be specified with a single string, integer, or a list of strings or integers. | Object |
Tipo de datos | Explicación |
RasterCollection | The collection of rasters containing only the selected bands. |
sort (field_name, {ascending})
Parámetro | Explicación | Tipo de datos |
field_name | The name of the field to use for sorting. | String |
ascending | Specifies whether to sort in ascending or descending order. (El valor predeterminado es True) | Boolean |
Tipo de datos | Explicación |
RasterCollection | The sorted collection of raster items. |
sum ()
Tipo de datos | Explicación |
Raster | The raster in which each band contains the sum of pixel values for that band across all rasters in the raster collection. |
toMultidimensionalRaster (variable_field_name, dimension_field_names)
Parámetro | Explicación | Tipo de datos |
variable_field_name | The name of the field that contains the variable names. | String |
dimension_field_names [dimension_field_names,...] | The name of the field or fields that contains the dimension names. This can be specified as a single string or a list of strings. For time-related dimensions, the field name must match one of the following to be recognized as a time field: StdTime, Date, Time, or AcquisitionDate. For nontime-related dimensions, the values in those fields must be type Double. If there are two or more dimensions, use a comma to separate the fields (for example, dimension_field_names = ["Time", "Depth"]). | String |
Tipo de datos | Explicación |
Raster | The multidimensional raster object. Each item in the raster collection is a slice in the multidimensional raster. |
Muestra de código
Creates a raster collection from a mosaic dataset and filters the collection by date.
# Import system modules
import arcpy
from arcpy.ia import *
# Construct a collection from a mosaic dataset
rc = RasterCollection(r'C:\data.gdb\time_series_landsat_images')
# Filter the collection to extract all images before year 2009
filtered_rc = rc.filterByTime(end_time = '2009-01-01T00:00:00',
time_field_name = 'AcquisitionDate')
# Return the dates in the filtered collection
dates = filtered_rc.getFieldValues('AcquisitionDate')
Creates a raster collection from a mosaic dataset and filters the collection by geometry.
# Import system modules
import arcpy
from arcpy.ia import *
# Construct a collection from a mosaic dataset
rc = RasterCollection(r'C:\data.gdb\time_series_landsat_images')
# Define line geometry
line = arcpy.Polyline(arcpy.Array([arcpy.Point(54.9243963, 23.9279934),
arcpy.Point(55.29, 25.6)]),arcpy.SpatialReference(4326))
# Filter the collection to extract images that intersect with line geometry
filtered_rc = rc.filterByGeometry(line)
# Return the total number of items in the filtered collection
count = filtered_rc.count
Creates a raster collection from a mosaic dataset and filters the collection by an attribute.
# Name: RasterCollection_Ex_03.py
# Description: Generates a raster collection from a mosaic dataset and
# filters by an attribute field
# Requirements: ArcGIS Image Analyst
# Import system modules
import arcpy
from arcpy.ia import *
# Define arguments
mosaic_dataset = r'C:\data.gdb\time_series_landsat_images'
# Construct a collection from a mosaic dataset
rc = RasterCollection(mosaic_dataset)
# Filter the collection to extract only images from Landsat 7
Landsat7_rc = rc.filterByAttribute("SensorName", "contain", "Landsat7")
# Return the names of the sensors in the filtered collection to double confirm
sensors= Landsat7_rc.getFieldValues(field_name)
Creates a raster collection from a list of rasters depicting NDVI, then return the maximum NDVI values for each pixel across the collection.
# Import system modules
import arcpy
from arcpy.ia import *
from arcpy import env
# Set workspace
arcpy.env.workspace = "C:/Data/NDVI"
# Get the list of tiff files from the workspace
NDVI_tiff_list = arcpy.ListRasters("*", "TIF")
# Generate a list of raster file names without the .tif extension
name_list = []
for NDVI in NDVI_tiff_list:
name_list.append(NDVI.replace(".tif","")
# Construct a collection from the list of raster file names
rc = RasterCollection(NDVI_tiff_list, {'name':name_list})
# Return a raster object where every pixel contains the
# maximum value of that pixel over the entired NDVI raster collection
max_NDVI_rc = rc.max()
# Save the new raster object
max_NDVI_rc.save(r'C:\output\max_NDVI_raster.tif')
Maps a Python function over a raster collection to generate a new collection.
# Import system modules
import arcpy
from arcpy.ia import *
arcpy.checkOutExtension("ImageAnalyst")
# Construct a collection from a mosaic dataset
rc = RasterCollection(r'C:\Data.gdb\Landsat8_TimeSeries')
# Define a Python function to calculate the Soil Adjusted Vegetation Index (SAVI)
def SAVI(item):
# Get the raster object from the item
raster = item['Raster']
# Get the raster objects for the NIR and Red bands
Red_band, NIR_band = raster.getRasterBands(["red","nir"])
# Compute the index
savi_index = ((1.5 * (NIR_band - Red_band))/(NIR_band + Red_band + 0.5))
return{"raster": savi_index, "name": "Soil_Adjusted_Vegetation_Index", "StdTime":item['AcquisitionDate']}
# Run the Python function over the raster collection and generate a new collection
SAVI_rc = rc.map(SAVI)
# save it as a multidimensional raster
mdim_raster = SAVI_rc.toMultidimensionalRaster(variable_field_name = "name", dimension_field_names = "StdTime")
mdim_raster.save(r'C:\output\time_series_SAVI_raster.crf')