Краткая информация
Определяет группу входных растров и атрибуты, которые нужно включить в подборку, которые будут использоваться для обработки.
Обсуждение
Объект RasterCollection позволяет легко сортировать и фильтровать группу растров, а также готовит коллекцию для дополнительной обработки и анализа.
Объект RasterCollection включает шесть методов (max, min, median, mean, majority и sum) для вычисления статистики по каждому пикселу среди совпадающих каналов в пределах растров коллекции.
Например, метод sum добавляет значения пиксела из Канала 1 элемента растра 1 к значениям пиксела из Канала 1 элемента растра 2, а затем возвращает объект Raster, где Канал 1 содержит эти просуммированные значения.
Синтаксис
RasterCollection (rasters, {attribute_dict})
Параметр | Описание | Тип данных |
rasters [rasters,...] | Входные наборы растровых данных. К поддерживаемым входным данным относятся список растров, набор данных мозаики, многомерный растр в формате Cloud Raster Format, файл NetCDF или сервис изображений. Если используется список наборов растровых данных, все растры должны иметь одинаковый размер ячеек и пространственную привязку. | List |
attribute_dict | Словарь Python, который содержит атрибутивную информацию, добавляемую к каждому растру, когда входными данными является список растров. Для каждой пары ключ-значение, ключ - это имя атрибута, а значение - список значений, представляющих атрибутивное значение для каждого растра. Например, чтобы добавить именованное поле к списку из трех растров, используйте {"name": ["Landsat8_Jan", "Landsat8_Feb", "Landsat8_Mar"]}. (Значение по умолчанию — None) | Dictionary |
Свойства
Свойство | Описание | Тип данных |
fields (только чтение) | Список имен полей, включенных в коллекцию растров. | String |
count (только чтение) | Общее число элементов в коллекции растров. | Integer |
Обзор метода
Метод | Описание |
filter ({where_clause}, {query_geometry_or_extent}) | Фильтрует коллекцию растровых элементов по атрибутам или геометрии и возвращает коллекцию растров, содержащих только элементы, удовлетворяющие условиям фильтра. Если аргументы не заданы, все растровые элементы из коллекции будут возвращены в виде новой коллекции растров. |
filterByAttribute (field_name, operator, field_values) | Фильтрует коллекцию растровых элементов по атрибутивному запросу и возвращает коллекцию растров, содержащих только элементы, удовлетворяющие условиям запроса. Чтобы осуществить запрос к коллекции растров на основе поля времени, используйте метод filterByTime. |
filterByCalendarRange (calendar_field, start, {end}, time_field_name, date_time_format) | Фильтрует коллекцию растровых элементов на основании календарного поля и возвращается коллекцию растров, содержащую только элементы, удовлетворяющие фильтру. Если аргументы не заданы, все растровые элементы из коллекции будут возвращены в виде новой коллекции растров. |
filterByGeometry (query_geometry_or_extent) | Фильтрует коллекцию растровых элементов таким образом, чтобы возвращать только те, которые пересекаются с геометрией. |
filterByRasterProperty (property_name, operator, property_values) | Фильтрует коллекцию растровых элементов по запросу к свойствам растра и возвращает коллекцию растров, содержащих только элементы, удовлетворяющие запросу. |
filterByTime ({start_time}, {end_time}, {time_field_name}, {date_time_format}) | Фильтрует коллекцию растровых элементов по временному диапазону и возвращает коллекцию растров, содержащих только элементы, удовлетворяющие условиям фильтра. |
getFieldValues (field_name, {max_count}) | Возвращает значения указанного поля из коллекции растров. |
majority () | Возвращает растровый объект, в котором каждый канал содержит значение пиксела, встречающееся в этом канале всех растров коллекции наиболее часто. Например, если в коллекции имеется десять растровых элементов, каждый с четырьмя каналами, метод majority определит значение пиксела, которое наиболее часто встречается во всех растрах в канале 1, в канале 2, в канале 3 и в канале 4; возвращается четырехканальный растр. Номера каналов сопоставляются между растрами с помощью индекса канала, поэтому у элементов коллекции растров должен быть одинаковый порядок каналов. |
map (func) | Применяет функцию Python к коллекции растров. |
max () | Возвращает растровый объект, в котором каждый канал содержит максимальные значения пикселов, встречающееся в этом канале во всех растрах коллекции. Например, если в коллекции имеется десять растровых элементов, каждый с четырьмя каналами, метод max вычислит максимальное значение пиксела, которое встречается во всех растрах в канале 1, в канале 2, в канале 3 и в канале 4; возвращается четырехканальный растр. Номера каналов сопоставляются между растрами с помощью индекса канала, поэтому у элементов коллекции растров должен быть одинаковый порядок каналов. |
mean () | Возвращает растровый объект, в котором каждый канал содержит средние значения пикселов, встречающееся в этом канале во всех растрах коллекции. Например, если в коллекции имеется десять растровых элементов, каждый с четырьмя каналами, метод mean вычислит среднее значение пиксела, которое встречается во всех растрах в канале 1, в канале 2, в канале 3 и в канале 4; возвращается четырехканальный растр. Номера каналов сопоставляются между растрами с помощью индекса канала, поэтому у элементов коллекции растров должен быть одинаковый порядок каналов. |
median () | Возвращает растровый объект, в котором каждый канал содержит медианные значения пикселов, встречающееся в этом канале во всех растрах коллекции. Например, если в коллекции имеется десять растровых элементов, каждый с четырьмя каналами, метод median вычислит медианное значение пиксела, которое встречается во всех растрах в канале 1, в канале 2, в канале 3 и в канале 4; возвращается четырехканальный растр. Номера каналов сопоставляются между растрами с помощью индекса канала, поэтому у элементов коллекции растров должен быть одинаковый порядок каналов. |
min () | Возвращает растровый объект, в котором каждый канал содержит минимальные значения пикселов, встречающееся в этом канале во всех растрах коллекции. Например, если в коллекции имеется десять растровых элементов, каждый с четырьмя каналами, метод min вычислит минимальное значение пиксела, которое встречается во всех растрах в канале 1, в канале 2, в канале 3 и в канале 4; возвращается четырехканальный растр. Номера каналов сопоставляются между растрами с помощью индекса канала, поэтому у элементов коллекции растров должен быть одинаковый порядок каналов. |
mosaic ({mosaic_method}) | Возвращает набор растровых данных, в котором все элементы растровой коллекции собраны в мозаику и составляют единый растр. |
qualityMosaic (quality_rc_or_list, {statistic_type}) | Возвращает набор растровых данных, в котором все элементы растровой коллекции собраны в мозаику и составляют единый растр, на основе требований к качеству. |
selectBands (band_ids_or_names) | Выбирает список каналов из каждого элемента растра в коллекции растров и возвращает коллекцию растров, содержащую элементы растров только с выделенными каналами. |
sort (field_name, {ascending}) | Сортирует коллекцию растров по имени поля и возвращает коллекцию растров в заданном порядке. |
sum () | Возвращает растровый объект, в котором каждый канал содержит сумму значений пикселов, встречающееся в этом канале во всех растрах коллекции. Например, если в коллекции имеется десять растровых элементов, каждый с четырьмя каналами, метод sum вычислит сумму значений пикселов, которые встречается во всех растрах в канале 1, в канале 2, в канале 3 и в канале 4; возвращается четырехканальный растр. Номера каналов сопоставляются между растрами с помощью индекса канала, поэтому у элементов коллекции растров должен быть одинаковый порядок каналов. |
toMultidimensionalRaster (variable_field_name, dimension_field_names) | Возвращает многомерный набор растровых данных, в котором каждый элемент коллекции растров является срезом в многомерном растре. |
Методы
filter ({where_clause}, {query_geometry_or_extent})
Параметр | Описание | Тип данных |
where_clause | Выражение, которое ограничивает возвращаемые записи. Более подробно о выражении WHERE и об условиях SQL см. в разделе Справочник по SQL для выражений запросов, применяемых в ArcGIS. (Значение по умолчанию — None) | String |
query_geometry_or_extent | Объект, который фильтрует элементы, например, возвращаются только те, которые пересекают объект. Задается с помощью объекта Geometry, Extent, Raster или пути к классу объектов. (Значение по умолчанию — None) | Geometry |
Тип данных | Описание |
RasterCollection | Коллекция растров, удовлетворяющая условиям запроса атрибутов или геометрии. |
filterByAttribute (field_name, operator, field_values)
Параметр | Описание | Тип данных |
field_name | Имя поля, использующегося в фильтре. | String |
operator | Ключевое слово для фильтрации атрибутов. Ключевые слова включают следующее:
| String |
field_values [field_values,...] | Значение или значения атрибута для сравнения. Могут быть заданы как строка, список или число. | String |
Тип данных | Описание |
RasterCollection | Коллекция растров, удовлетворяющая условиям атрибутивного запроса. |
filterByCalendarRange (calendar_field, start, {end}, time_field_name, date_time_format)
Параметр | Описание | Тип данных |
calendar_field | Имя календарного поля. Укажите одно из следующего: HOUR, DAY_OF_WEEK, DAY_OF_MONTH, DAY_OF_YEAR, WEEK_OF_YEAR, MONTH, YEAR или QUARTER. | String |
start | Начальное значение calendar_field. Например, чтобы отфильтровать все элементы, собранные в январе, filtered_rc = rc.filterByCalendarRange(calendar_field="MONTH", start=1). | Integer |
end | Конечное значение calendar_field. Например, чтобы отфильтровать все элементы, собранные в течение первых 5 дней каждого года, filtered_rc = rc.filterByCalendarRange(calendar_field="DAY_OF_YEAR", start=1, end=5). | Integer |
time_field_name | Имя поля, содержащего атрибут времени для каждого элемента в коллекции. По умолчанию – StdTime. | String |
date_time_format | Формат времени значений в поле времени. Например, если входное значение времени - "1990-01-31", date_time_format - это "%Y-%m-%d". | String |
Тип данных | Описание |
RasterCollection | Коллекция растров, удовлетворяющая запросу временного диапазона. |
filterByGeometry (query_geometry_or_extent)
Параметр | Описание | Тип данных |
query_geometry_or_extent | Объект, который фильтрует элементы, например, возвращаются только те, которые пересекают объект. Задается с помощью объекта Geometry, Extent, Raster или пути к классу объектов. | Geometry |
Тип данных | Описание |
RasterCollection | Коллекция растров, удовлетворяющая условиям фильтра геометрии. |
filterByRasterProperty (property_name, operator, property_values)
Параметр | Описание | Тип данных |
property_name | Имя свойства для использования в фильтре. | String |
operator | Оператор для фильтрации свойств.
| String |
property_values [property_values,...] | Значение или значения свойства для сравнения. Могут быть заданы как строка, список или число. | String |
Тип данных | Описание |
RasterCollection | Коллекция растров, удовлетворяющая условиям запроса свойств. |
filterByTime ({start_time}, {end_time}, {time_field_name}, {date_time_format})
Параметр | Описание | Тип данных |
start_time | Строка, задающая время начала. Формат строки должен соответствовать формату даты входных коллекций растров, например, "1990-01-01T13:30:00". Если не задано, необходимо задать время окончания, тогда будут возвращены элементы, содержащие значение времени до или равное времени окончания. (Значение по умолчанию — None) | String |
end_time | Строка, задающая время окончания. Формат строки должен соответствовать формату даты входных коллекций растров, например, "1991-01-01T13:30:00". Если не задано, необходимо задать время начала, тогда будут возвращены элементы, содержащие значение времени после или равное времени начала. (Значение по умолчанию — None) | String |
time_field_name | Имя поля, содержащего атрибут времени для каждого элемента в коллекции. (Значение по умолчанию — StdTime) | String |
date_time_format | Формат значений start_time и end_time. Например, если предоставленное значение start_time – "1990-01-31", date_time_format – это "%Y-%m-%d." Для дат, включающих компонент времени, например, "1990-01-31T00:00:00", формат по умолчанию – "%Y-%m-%dT%H:%M:%S". | String |
Тип данных | Описание |
RasterCollection | Коллекция растров, удовлетворяющая фильтру временного диапазона. |
getFieldValues (field_name, {max_count})
Параметр | Описание | Тип данных |
field_name | Имя поля, из которого извлекаются значения. | String |
max_count | Целое, задающее максимальное число возвращаемых значений поля. Значения будут возвращаться в порядке, соответствующем порядку растровых элементов в коллекции. Если значение не задано, будут возвращены все значения данного поля. (Значение по умолчанию — None) | Integer |
Тип данных | Описание |
String | Список значений для заданного поля. |
majority ()
Тип данных | Описание |
Raster | Растр, в котором каждый канал содержит наиболее частое значение пиксела, встречающееся в данном канале всех растров коллекции. |
map (func)
Параметр | Описание | Тип данных |
func | Функция Python, применяемая к коллекции растров. Значение, возвращаемое функцией, должно быть словарем, в котором один из ключей равен raster. Например, {"raster": output_raster_object, "name": input_item_name["name"]}.
| Function |
Тип данных | Описание |
RasterCollection | Растровая коллекция, каждый элемент которой содержит растр с примененной функцией и присоединенными атрибутами. |
max ()
Тип данных | Описание |
Raster | Растр, в котором каждый канал содержит максимальные значения пикселов, встречающееся в этом канале во всех растрах коллекции. |
mean ()
Тип данных | Описание |
Raster | Растр, в котором каждый канал содержит средние значения пикселов, встречающееся в этом канале во всех растрах коллекции. |
median ()
Тип данных | Описание |
Raster | Растр, в котором каждый канал содержит медианные значения пикселов, встречающееся в этом канале во всех растрах коллекции. |
min ()
Тип данных | Описание |
Raster | Растр, в котором каждый канал содержит минимальные значения пикселов, встречающееся в этом канале во всех растрах коллекции. |
mosaic ({mosaic_method})
Параметр | Описание | Тип данных |
mosaic_method | Метод, использованный для обработки пересекающихся областей соседних растровых элементов. Возможны следующие методы построения мозаики:
Дополнительные сведения о методах построения мозаики, см. в разделе Операторы мозаики. (Значение по умолчанию — First) | String |
Тип данных | Описание |
Raster | Набор растровых данных с растровыми элементами из коллекции, собранными в мозаику. |
qualityMosaic (quality_rc_or_list, {statistic_type})
Параметр | Описание | Тип данных |
quality_rc_or_list | Растровая коллекция или список растров, использующиеся как индикаторы качества. Например, Band 1 из Landsat 8 - это канал Coastal/Aerosol, который может использоваться для определения концентрации в атмосфере мелкодисперсных аэрозольных частиц, таких как дым или туман. Для коллекции изображений Landsat 8, используйте метод selectBands для возврата объекта RasterCollection, содержащего только Band 1 из каждого растрового элемента. Число растровых элементов в quality_rc_or_list должно соответствовать числу элементов в коллекции растров, по которой строится мозаика. | RasterCollection |
statistic_type | Статистика, используемая для сравнения входной коллекции или списка растров качества.
Например, для построения мозаики по коллекции входных растров, таких как упоминалось ранее, с минимальной концентрацией аэрозолей наверху, используйте статистику MIN. | String |
Тип данных | Описание |
Raster | Набор растровых данных с растровыми элементами из коллекции, собранными в мозаику. |
selectBands (band_ids_or_names)
Параметр | Описание | Тип данных |
band_ids_or_names [band_ids_or_names,...] | Имена или порядковые номера каналов, которые будут включены в возвращаемые элементы растров. Это может быть указано одной строкой, целым числом или списком строк или целых чисел. | Object |
Тип данных | Описание |
RasterCollection | Коллекция растров, содержащих только выделенные каналы. |
sort (field_name, {ascending})
Параметр | Описание | Тип данных |
field_name | Имя поля, которое будет использоваться при сортировке. | String |
ascending | Указывает порядок сортировки – по возрастанию или по убыванию. (Значение по умолчанию — True) | Boolean |
Тип данных | Описание |
RasterCollection | Коллекция элементов растров после сортировки. |
sum ()
Тип данных | Описание |
Raster | Растр, в котором каждый канал содержит сумму значений пикселов, встречающееся в этом канале во всех растрах коллекции. |
toMultidimensionalRaster (variable_field_name, dimension_field_names)
Параметр | Описание | Тип данных |
variable_field_name | Имя поля, которое содержит имена переменных. | String |
dimension_field_names [dimension_field_names,...] | Имя поля или полей, которые содержат имена размерностей. Может быть задано одной строкой или списком строк. Для измерений, связанных со временем, имя поля должно соответствовать одному из следующих примеров, чтобы оно распознавалось как поле времени: StdTime, Date, Time или AcquisitionDate. Для измерений, не связанных со временем, значения в таких полях должны быть типа Double. Если имеется два или более измерения, используйте запятую для разделения полей (например, dimension_field_names = ["Time", "Depth"]). | String |
Тип данных | Описание |
Raster | Многомерный растровый объект. Каждый элемент коллекции растров является срезом в многомерном растре. |
Пример кода
Создает коллекцию растров из набора данных мозаики и фильтрует эту коллекцию по дате.
# 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')
Создает коллекцию растров из набора данных мозаики и фильтрует эту коллекцию по геометрии.
# 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
Создает коллекцию растров из набора данных мозаики и фильтрует эту коллекцию по атрибуту.
# 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)
Создает коллекцию растров из списка растров с NDVI, затем возвращает максимальные значения NDVI для каждого пиксела во всей коллекции.
# 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')
Сопоставляет функцию Python с коллекцией растров для создания новой коллекции.
# 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')