Announcement: All noncommercial projects registered to use Earth Engine before
April 15, 2025 must
verify noncommercial eligibility to maintain Earth Engine access.
ee.Image.reduceRegions
Stay organized with collections
Save and categorize content based on your preferences.
Apply a reducer over the area of each feature in the given collection.
The reducer must have the same number of inputs as the input image has bands.
Returns the input features, each augmented with the corresponding reducer outputs.
Usage | Returns | Image.reduceRegions(collection, reducer, scale, crs, crsTransform, tileScale, maxPixelsPerRegion) | FeatureCollection |
Argument | Type | Details | this: image | Image | The image to reduce. |
collection | FeatureCollection | The features to reduce over. |
reducer | Reducer | The reducer to apply. |
scale | Float, default: null | A nominal scale in meters of the projection to work in. |
crs | Projection, default: null | The projection to work in. If unspecified, the projection of the image's first band is used. If specified in addition to scale, rescaled to the specified scale. |
crsTransform | List, default: null | The list of CRS transform values. This is a row-major ordering of the 3x2 transform matrix. This option is mutually exclusive with 'scale', and will replace any transform already set on the projection. |
tileScale | Float, default: 1 | A scaling factor used to reduce aggregation tile size; using a larger tileScale (e.g., 2 or 4) may enable computations that run out of memory with the default. |
maxPixelsPerRegion | Long, default: null | The maximum number of pixels to reduce per region. |
Examples
Code Editor (JavaScript)
// A Landsat 8 SR image with SWIR1, NIR, and green bands.
var img = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508')
.select(['SR_B6', 'SR_B5', 'SR_B3']);
// Santa Cruz Mountains ecoregions feature collection.
var regionCol = ee.FeatureCollection('EPA/Ecoregions/2013/L4')
.filter('us_l4name == "Santa Cruz Mountains" || ' +
'us_l4name == "San Mateo Coastal Hills" || ' +
'us_l4name == "Leeward Hills"');
// Display layers on the map.
Map.setCenter(-122.08, 37.22, 9);
Map.addLayer(img, {min: 10000, max: 20000}, 'Landsat image');
Map.addLayer(regionCol, {color: 'white'}, 'Santa Cruz Mountains ecoregions');
// Calculate median band values within Santa Cruz Mountains ecoregions. It is
// good practice to explicitly define "scale" (or "crsTransform") and "crs"
// parameters of the analysis to avoid unexpected results from undesired
// defaults when e.g. reducing a composite image.
var stats = img.reduceRegions({
collection: regionCol,
reducer: ee.Reducer.median(),
scale: 30, // meters
crs: 'EPSG:3310', // California Albers projection
});
// The input feature collection is returned with new properties appended.
// The new properties are the outcome of the region reduction per image band,
// for each feature in the collection. Region reduction property names
// are the same as the input image band names.
print('Median band values, Santa Cruz Mountains ecoregions', stats);
// You can combine reducers to calculate e.g. mean and standard deviation
// simultaneously. The resulting property names are the concatenation of the
// band names and statistic names, separated by an underscore.
var reducer = ee.Reducer.mean().combine({
reducer2: ee.Reducer.stdDev(),
sharedInputs: true
});
var multiStats = img.reduceRegions({
collection: regionCol,
reducer: reducer,
scale: 30,
crs: 'EPSG:3310',
});
print('Mean & SD band values, Santa Cruz Mountains ecoregions', multiStats);
Python setup
See the
Python Environment page for information on the Python API and using
geemap
for interactive development.
import ee
import geemap.core as geemap
Colab (Python)
# A Landsat 8 SR image with SWIR1, NIR, and green bands.
img = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508').select(
['SR_B6', 'SR_B5', 'SR_B3']
)
# Santa Cruz Mountains ecoregions feature collection.
region_col = ee.FeatureCollection('EPA/Ecoregions/2013/L4').filter(
'us_l4name == "Santa Cruz Mountains" || '
+ 'us_l4name == "San Mateo Coastal Hills" || '
+ 'us_l4name == "Leeward Hills"'
)
# Display layers on the map.
m = geemap.Map()
m.set_center(-122.08, 37.22, 9)
m.add_layer(img, {'min': 10000, 'max': 20000}, 'Landsat image')
m.add_layer(
region_col, {'color': 'white'}, 'Santa Cruz Mountains ecoregions'
)
display(m)
# Calculate median band values within Santa Cruz Mountains ecoregions. It is
# good practice to explicitly define "scale" (or "crsTransform") and "crs"
# parameters of the analysis to avoid unexpected results from undesired
# defaults when e.g. reducing a composite image.
stats = img.reduceRegions(
collection=region_col,
reducer=ee.Reducer.median(),
scale=30, # meters
crs='EPSG:3310', # California Albers projection
)
# The input feature collection is returned with new properties appended.
# The new properties are the outcome of the region reduction per image band,
# for each feature in the collection. Region reduction property names
# are the same as the input image band names.
display('Median band values, Santa Cruz Mountains ecoregions', stats)
# You can combine reducers to calculate e.g. mean and standard deviation
# simultaneously. The resulting property names are the concatenation of the
# band names and statistic names, separated by an underscore.
reducer = ee.Reducer.mean().combine(
reducer2=ee.Reducer.stdDev(), sharedInputs=True
)
multi_stats = img.reduceRegions(
collection=region_col,
reducer=reducer,
scale=30,
crs='EPSG:3310',
)
display('Mean & SD band values, Santa Cruz Mountains ecoregions', multi_stats)
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-03-27 UTC.
[null,null,["Last updated 2025-03-27 UTC."],[[["\u003cp\u003e\u003ccode\u003eImage.reduceRegions\u003c/code\u003e applies a reducer function to an image within the boundaries of each feature in a feature collection.\u003c/p\u003e\n"],["\u003cp\u003eThe reducer output is added as new properties to the input features, with property names corresponding to the image band names.\u003c/p\u003e\n"],["\u003cp\u003eUsers can specify the scale, projection (CRS), and tile scaling for the reduction operation to ensure accurate and efficient processing.\u003c/p\u003e\n"],["\u003cp\u003eMultiple reducers can be combined to calculate different statistics simultaneously, resulting in property names that reflect both the band and the statistic.\u003c/p\u003e\n"]]],[],null,["# ee.Image.reduceRegions\n\nApply a reducer over the area of each feature in the given collection.\n\n\u003cbr /\u003e\n\nThe reducer must have the same number of inputs as the input image has bands.\n\nReturns the input features, each augmented with the corresponding reducer outputs.\n\n| Usage | Returns |\n|-----------------------------------------------------------------------------------------------------------------------------|-------------------|\n| Image.reduceRegions`(collection, reducer, `*scale* `, `*crs* `, `*crsTransform* `, `*tileScale* `, `*maxPixelsPerRegion*`)` | FeatureCollection |\n\n| Argument | Type | Details |\n|----------------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| this: `image` | Image | The image to reduce. |\n| `collection` | FeatureCollection | The features to reduce over. |\n| `reducer` | Reducer | The reducer to apply. |\n| `scale` | Float, default: null | A nominal scale in meters of the projection to work in. |\n| `crs` | Projection, default: null | The projection to work in. If unspecified, the projection of the image's first band is used. If specified in addition to scale, rescaled to the specified scale. |\n| `crsTransform` | List, default: null | The list of CRS transform values. This is a row-major ordering of the 3x2 transform matrix. This option is mutually exclusive with 'scale', and will replace any transform already set on the projection. |\n| `tileScale` | Float, default: 1 | A scaling factor used to reduce aggregation tile size; using a larger tileScale (e.g., 2 or 4) may enable computations that run out of memory with the default. |\n| `maxPixelsPerRegion` | Long, default: null | The maximum number of pixels to reduce per region. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\n// A Landsat 8 SR image with SWIR1, NIR, and green bands.\nvar img = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508')\n .select(['SR_B6', 'SR_B5', 'SR_B3']);\n\n// Santa Cruz Mountains ecoregions feature collection.\nvar regionCol = ee.FeatureCollection('EPA/Ecoregions/2013/L4')\n .filter('us_l4name == \"Santa Cruz Mountains\" || ' +\n 'us_l4name == \"San Mateo Coastal Hills\" || ' +\n 'us_l4name == \"Leeward Hills\"');\n\n// Display layers on the map.\nMap.setCenter(-122.08, 37.22, 9);\nMap.addLayer(img, {min: 10000, max: 20000}, 'Landsat image');\nMap.addLayer(regionCol, {color: 'white'}, 'Santa Cruz Mountains ecoregions');\n\n// Calculate median band values within Santa Cruz Mountains ecoregions. It is\n// good practice to explicitly define \"scale\" (or \"crsTransform\") and \"crs\"\n// parameters of the analysis to avoid unexpected results from undesired\n// defaults when e.g. reducing a composite image.\nvar stats = img.reduceRegions({\n collection: regionCol,\n reducer: ee.Reducer.median(),\n scale: 30, // meters\n crs: 'EPSG:3310', // California Albers projection\n});\n\n// The input feature collection is returned with new properties appended.\n// The new properties are the outcome of the region reduction per image band,\n// for each feature in the collection. Region reduction property names\n// are the same as the input image band names.\nprint('Median band values, Santa Cruz Mountains ecoregions', stats);\n\n// You can combine reducers to calculate e.g. mean and standard deviation\n// simultaneously. The resulting property names are the concatenation of the\n// band names and statistic names, separated by an underscore.\nvar reducer = ee.Reducer.mean().combine({\n reducer2: ee.Reducer.stdDev(),\n sharedInputs: true\n});\nvar multiStats = img.reduceRegions({\n collection: regionCol,\n reducer: reducer,\n scale: 30,\n crs: 'EPSG:3310',\n});\nprint('Mean & SD band values, Santa Cruz Mountains ecoregions', multiStats);\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\n# A Landsat 8 SR image with SWIR1, NIR, and green bands.\nimg = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508').select(\n ['SR_B6', 'SR_B5', 'SR_B3']\n)\n\n# Santa Cruz Mountains ecoregions feature collection.\nregion_col = ee.FeatureCollection('EPA/Ecoregions/2013/L4').filter(\n 'us_l4name == \"Santa Cruz Mountains\" || '\n + 'us_l4name == \"San Mateo Coastal Hills\" || '\n + 'us_l4name == \"Leeward Hills\"'\n)\n\n# Display layers on the map.\nm = geemap.Map()\nm.set_center(-122.08, 37.22, 9)\nm.add_layer(img, {'min': 10000, 'max': 20000}, 'Landsat image')\nm.add_layer(\n region_col, {'color': 'white'}, 'Santa Cruz Mountains ecoregions'\n)\ndisplay(m)\n\n# Calculate median band values within Santa Cruz Mountains ecoregions. It is\n# good practice to explicitly define \"scale\" (or \"crsTransform\") and \"crs\"\n# parameters of the analysis to avoid unexpected results from undesired\n# defaults when e.g. reducing a composite image.\nstats = img.reduceRegions(\n collection=region_col,\n reducer=ee.Reducer.median(),\n scale=30, # meters\n crs='EPSG:3310', # California Albers projection\n)\n\n# The input feature collection is returned with new properties appended.\n# The new properties are the outcome of the region reduction per image band,\n# for each feature in the collection. Region reduction property names\n# are the same as the input image band names.\ndisplay('Median band values, Santa Cruz Mountains ecoregions', stats)\n\n# You can combine reducers to calculate e.g. mean and standard deviation\n# simultaneously. The resulting property names are the concatenation of the\n# band names and statistic names, separated by an underscore.\nreducer = ee.Reducer.mean().combine(\n reducer2=ee.Reducer.stdDev(), sharedInputs=True\n)\nmulti_stats = img.reduceRegions(\n collection=region_col,\n reducer=reducer,\n scale=30,\n crs='EPSG:3310',\n)\ndisplay('Mean & SD band values, Santa Cruz Mountains ecoregions', multi_stats)\n```"]]