Вместо указания региона, в котором необходимо выполнить сокращение, также можно указать окрестность, в которой следует применить редуктор. Чтобы уменьшить окрестности изображения, используйте image.reduceNeighborhood()
. В этом случае уменьшение будет происходить в скользящем окне над входным изображением, размер и форма которого определяются ee.Kernel
. Результатом работы reduceNeighborhood()
будет другое изображение, где каждое значение пикселя представляет результат уменьшения в окрестности этого пикселя во входном изображении. Рисунок 1 иллюстрирует этот тип сокращения.

reduceNeighborhood()
, где редуктор применяется в ядре. Например, рассмотрите возможность использования изображений Национальной программы изображений сельского хозяйства (NAIP) для количественной оценки ландшафтных различий, возникающих в результате вырубки калифорнийских лесов красного дерева. В частности, используйте стандартное отклонение (SD) в окрестности, чтобы представить разницу в текстуре между зарегистрированной областью (SW изображения на рисунке 2) и защищенной областью (NE изображения на рисунке 2). Например, чтобы получить текстуру изображения индекса нормализованной разницы растительности (NDVI) NAIP, используйте reduceNeighborhood()
для вычисления SD в окрестности, определенной ядром:
Редактор кода (JavaScript)
// Define a region in the redwood forest. var redwoods = ee.Geometry.Rectangle(-124.0665, 41.0739, -123.934, 41.2029); // Load input NAIP imagery and build a mosaic. var naipCollection = ee.ImageCollection('USDA/NAIP/DOQQ') .filterBounds(redwoods) .filterDate('2012-01-01', '2012-12-31'); var naip = naipCollection.mosaic(); // Compute NDVI from the NAIP imagery. var naipNDVI = naip.normalizedDifference(['N', 'R']); // Compute standard deviation (SD) as texture of the NDVI. var texture = naipNDVI.reduceNeighborhood({ reducer: ee.Reducer.stdDev(), kernel: ee.Kernel.circle(7), }); // Display the results. Map.centerObject(redwoods, 12); Map.addLayer(naip, {}, 'NAIP input imagery'); Map.addLayer(naipNDVI, {min: -1, max: 1, palette: ['FF0000', '00FF00']}, 'NDVI'); Map.addLayer(texture, {min: 0, max: 0.3}, 'SD of NDVI');
import ee import geemap.core as geemap
Колаб (Питон)
# Define a region in the redwood forest. redwoods = ee.Geometry.Rectangle(-124.0665, 41.0739, -123.934, 41.2029) # Load input NAIP imagery and build a mosaic. naip_collection = ( ee.ImageCollection('USDA/NAIP/DOQQ') .filterBounds(redwoods) .filterDate('2012-01-01', '2012-12-31') ) naip = naip_collection.mosaic() # Compute NDVI from the NAIP imagery. naip_ndvi = naip.normalizedDifference(['N', 'R']) # Compute standard deviation (SD) as texture of the NDVI. texture = naip_ndvi.reduceNeighborhood( reducer=ee.Reducer.stdDev(), kernel=ee.Kernel.circle(7) ) # Display the results. m = geemap.Map() m.center_object(redwoods, 12) m.add_layer(naip, {}, 'NAIP input imagery') m.add_layer( naip_ndvi, {'min': -1, 'max': 1, 'palette': ['FF0000', '00FF00']}, 'NDVI' ) m.add_layer(texture, {'min': 0, 'max': 0.3}, 'SD of NDVI') m
Любой пиксель с ненулевым значением ядра включается в вычисление. По умолчанию используются веса ядра, хотя вы можете изменить это поведение с помощью аргумента inputWeight
. Входное изображение и выходные данные reduceNeighborhood()
сравниваются на рисунке 2.


reduceNeighborhood()
выводит результат с использованием преобразователя стандартного отклонения.