Skip to content

Concepts

monitoreo-ugr edited this page Nov 5, 2026 · 2 revisions

Versión en español

Concepts

What all the tools share: which variables there are, how the region and the period are given, how time and space are summarized and which filters are applied. Python, R, the MCP server and the QGIS plugin use the same option names, so this page is valid for all four.

Variables

Those of the MonitorEO catalog, computed with Google Earth Engine:

Variable What it measures Sensors (pixel) Unit
NDVI Normalized difference vegetation index Sentinel-2 (10 m), Landsat (30 m), MODIS Terra MOD13Q1 and Aqua MYD13Q1 (250 m) –
EVI Enhanced vegetation index Sentinel-2, Landsat, MODIS MOD13Q1 and MYD13Q1 –
LAI Leaf area index MODIS MCD15A3H (500 m) –
Chl-a Chlorophyll concentration (water) Sentinel-2, MODIS Aqua and Terra L3SMI (4.6 km) mg m⁻³
NDCI Normalized difference chlorophyll index (water) Sentinel-2 –
NDWI Normalized difference water index Sentinel-2, Landsat, MODIS MOD09GA (463 m, until 2023) –
LSWI Land surface water index Sentinel-2, Landsat –
NDSI Normalized difference snow index Sentinel-2, Landsat, MODIS MOD10A1 and MYD10A1 (500 m) –
ET Evapotranspiration MODIS MOD16A2 (500 m) kg/m²/8 days
LE Latent heat MODIS MOD16A2 J/m²/day
LST Land surface temperature Landsat, MODIS MOD11A1 and MYD11A1 (1 km) ºC
ALBEDO Albedo Sentinel-2, Landsat, MODIS MCD43A3 (500 m) –
ARSL Aerosol optical depth MODIS MCD19A2 (1 km) –
NBR Normalized burn ratio (fires) Sentinel-2, Landsat –

The sensors are written Sentinel-2, Landsat (Landsat 5, 7 until May 2003, 8 and 9 together) and Modis. Available dates: Sentinel-2 from 28-3-2017, Landsat from 1984 and MODIS from 2000 (Aqua from July 2002).

Sensors

Each sensor has its pixel size (the spatial resolution), its frequency and its dates:

Sensor Pixel One image every From For
Sentinel-2 10 m (20 m the shortwave infrared bands, which LSWI and NBR use) about 5 days 28-3-2017 Small or detailed areas (plots, edges, lagoons) and recent periods
Landsat 30 m 16 days (8 when two satellites are in orbit at once) 1984 Long time series and trends of decades. Between May 2012 and March 2013 there are no images
MODIS 250 m to 1 km (4.6 km chlorophyll) 1 day, or composites of 4, 8 or 16 days depending on the variable 2000 Large regions, seasonality and the variables that only MODIS gives (evapotranspiration, LAI, aerosols)

Clouds, water, snow or aerosols leave fewer useful images than these (see Per-pixel filters); how many there are in each step is told by the results (n_images).

When a sensor has several collections for the same variable (the MODIS NDVI is in MOD13Q1, from Terra, and in MYD13Q1, from Aqua), the first one in the catalog is used; to choose another, give collection ('MODIS/061/MYD13Q1') or ref, the number of the variable in the catalog. The complete list, with its number, collection, formula and notes, is in each tool: list_variables and describe_variable in Python and MCP, mo_variables() and mo_describe() in R, monitoreo list and monitoreo info in the command line, and the Variable drop-down of the QGIS plugin.

Other Earth Engine data. In Python, R and the MCP any collection (collection and band, e.g. IDAHO_EPSCOR/TERRACLIMATE and pr) or fixed image (image and band, e.g. COPERNICUS/DEM/GLO30_2024_1 and DEM, with terrain='slope' for the slope) is also valid.

Remote sensing in a nutshell

The basics to understand the variables and use them with care (true of any satellite, not only of MonitorEO):

  • What an optical satellite measures. The sunlight that the surface reflects in several bands of the spectrum: blue, green, red, near infrared (NIR) and shortwave infrared (SWIR). Corrected for the atmosphere, it is the surface reflectance, from 0 to 1; Sentinel-2, Landsat and MODIS deliver it already corrected. The thermal bands measure instead the radiation that the surface emits, from which its temperature is obtained.
  • Normalized indices. Almost all the variables are indices of the form (A − B) / (A + B) between two bands in which the target behaves very differently: healthy vegetation reflects much near infrared and absorbs red; water and snow absorb shortwave infrared. They range from −1 to 1 and have no units: they are relative indicators, good for comparing dates and places with the same sensor, not direct measurements of biomass or moisture.
  • Derived products. LAI, evapotranspiration, surface temperature, the MODIS albedo, aerosols and the MODIS chlorophyll are estimates by the science teams of each mission, with their own models and assumptions and physical units. They carry an uncertainty, described in their reference papers (below).
  • A pixel mixes what is inside it. A Sentinel-2 pixel (10 m) can be a forest gap; a MODIS one (500 m) mixes forest, scrub, rock or a village. In small or narrow areas (a pond, a river, a plot), the edge pixels mix the inside with the outside.
  • Clouds, shadows and snow hide the surface: MonitorEO removes those pixels (see Per-pixel filters) and summarizes the images that are left. In winter, in high mountains, few may be left: look at n_images and n_pixels.
  • Each sensor gives somewhat different values. Their bands are not identical, so the Sentinel-2 NDVI is not exactly that of Landsat or of MODIS: do not mix sensors in a series or a trend. Landsat merges Landsat 5, 7, 8 and 9 without adjusting them to one another; the differences between them are small but systematic (Roy et al., 2016), something to bear in mind in trends of decades.
  • It is an estimate. For management decisions, check the values against field data or knowledge of the place.

On the sensors: Sentinel-2 (Drusch et al., 2012), Landsat (Wulder et al., 2019) and MODIS (Justice et al., 2002).

What each variable measures

What each variable of the catalog measures, how MonitorEO computes it and what to bear in mind when reading it. The values given are indicative: they depend on the place, the season and the sensor. The Sentinel-2 bands that appear are B2 (blue), B3 (green), B4 (red), B5 (red edge, 705 nm), B8 (near infrared), B11 and B12 (shortwave infrared, 20 m).

NDVI: Normalized Difference Vegetation Index

  • What it measures: the greenness of vegetation, linked to its amount and its photosynthetic activity. It is the most used vegetation index.
  • In MonitorEO: (NIR − red) / (NIR + red), with B8 and B4 in Sentinel-2 and nir and red in Landsat; in MODIS, the NDVI of MOD13Q1 and MYD13Q1 (16-day composites, 250 m).
  • How to read it: water and snow give negative values or values close to 0; bare soil and rock, low ones (around 0.1–0.2); dense and healthy vegetation, high ones (above 0.6).
  • Beware: it saturates with very dense vegetation (it stops rising even if there are more leaves) and, in sparse vegetation, the soil seen between the plants changes it. Sudden drops on a single date are usually unfiltered clouds or snow.
  • References: Tucker (1979); for MODIS, Huete et al. (2002).

EVI: Enhanced Vegetation Index

  • What it measures: like the NDVI, the greenness of vegetation, with a correction for the soil and the atmosphere that uses the blue band.
  • In MonitorEO: 2.5 × (NIR − red) / (NIR + 6 × red − 7.5 × blue + 1), with B8, B4 and B2 in Sentinel-2 and the same bands in Landsat; in MODIS, the EVI of MOD13Q1 and MYD13Q1.
  • How to read it: it gives lower values than the NDVI on the same vegetation.
  • Beware: it was designed to saturate less than the NDVI in dense vegetation (Huete et al., 2002), but not every study finds that it detects changes better (Hilker et al., 2015): do not choose it for that alone. It is more sensitive to errors in the blue band.

LAI: Leaf Area Index

  • What it measures: the leaf area over each square metre of ground (m²/m², counting one side of the leaf): a LAI of 3 is three layers of leaves.
  • In MonitorEO: the MODIS product MCD15A3H (Terra and Aqua together, every 4 days, 500 m).
  • How to read it: 0 on bare soil; 5 or more in dense forests.
  • Beware: it is an estimate from a model of how light goes through vegetation, from the reflectance (Myneni et al., 2002). With a 500 m pixel, in mixed landscapes it is an average of several covers.

Chl-a: chlorophyll a in water

  • What it measures: the concentration of chlorophyll a of phytoplankton (mg/m³), an indicator of the trophic state of the water: more chlorophyll, more algae.
  • In MonitorEO:
    • MODIS (Aqua and Terra, NASA's L3SMI product, 4.6 km pixel): NASA's standard ocean colour algorithm, which combines band ratios (O'Reilly et al., 1998) with an index for waters poor in chlorophyll (Hu et al., 2012).
    • Sentinel-2: an empirical formula with B8, B3 and B4 calibrated only in Sierra Nevada: elsewhere its values are not reliable.
  • Beware: the MODIS product is meant for the sea: on turbid coasts, reservoirs and lakes its values are unreliable, and with a 4.6 km pixel it is only valid for very large water bodies. Turn off the water filter ({'water': False} or 'auto').

NDCI: Normalized Difference Chlorophyll Index

  • What it measures: chlorophyll a in turbid and productive waters (reservoirs, ponds, estuaries), where the ocean algorithms fail (Mishra and Mishra, 2012).
  • In MonitorEO: (B5 − B4) / (B5 + B4) of Sentinel-2: the red edge, where chlorophyll reflects, against the red, where it absorbs.
  • How to read it: it rises with chlorophyll. It is a relative index, not a concentration: to turn it into mg/m³ it has to be calibrated with water samples.
  • Beware: it only makes sense on water pixels, so turn off the water filter. The bottom of shallow waters and aquatic vegetation alter it.

NDWI: Normalized Difference Water Index

There are two indices with this name, and MonitorEO uses one or the other depending on the sensor:

  • Sentinel-2 and Landsat: the open-water NDWI (McFeeters, 1996), (green − NIR) / (green + NIR), with B3 and B8 in Sentinel-2. Water gives positive values and vegetation and soil, negative ones: it serves to outline water bodies (ponds, reservoirs, flooded areas). The threshold that separates water changes from one site to another: 0 is only a starting point.
  • MODIS (MOD09GA, 463 m, from 2000 to February 2023): the NDWI of the water in vegetation (Gao, 1996), with the NIR and an infrared of ~1.24 µm: it rises with the water in the leaves. It is not comparable with that of Sentinel-2 and Landsat.
  • Beware: with the open-water NDWI, turn off the water filter ({'water': False} or 'auto'); otherwise it removes exactly what you want to measure.

LSWI: Land Surface Water Index

  • What it measures: the water in vegetation and the soil moisture: it falls with drought and rises after rain or with irrigation (Xiao et al., 2004).
  • In MonitorEO: (NIR − SWIR1) / (NIR + SWIR1), with B8 and B11 in Sentinel-2 (20 m) and nir and swir1 in Landsat: Gao's NDWI formula with the ~1.6 µm infrared.
  • How to read it: higher, more water.
  • Beware: it adds up the signal of the leaves and that of the soil, and does not separate them.

NDSI: Normalized Difference Snow Index

  • What it measures: snow, which reflects much in the visible and absorbs the shortwave infrared (clouds reflect in both) (Hall et al., 1995).
  • In MonitorEO:
    • Sentinel-2 and Landsat: (green − SWIR1) / (green + SWIR1), with B3 and B11 in Sentinel-2; from −1 to 1.
    • MODIS (MOD10A1 and MYD10A1, daily, 500 m): the band NDSI_Snow_Cover, the Collection 6 NDSI on a scale from 0 to 100, not from −1 to 1.
  • How to read it: the classic products took an NDSI of 0.4 or more as snow, but snow at the edges or under trees gives lower values; that is why MODIS now gives the NDSI itself instead of a yes or no (Riggs et al., 2017).
  • Beware: the snow filter removes exactly what it measures: turn it off ({'snow': False} or 'auto').

ET and LE: evapotranspiration and latent heat

  • What they measure: ET, the water that goes from the soil and the plants to the atmosphere (evaporation and transpiration), in kg/m² every 8 days (1 kg/m² is 1 mm of water); LE, the energy spent in it (J/m²/day).
  • In MonitorEO: the MODIS product MOD16A2 (500 m, 8-day sums), which estimates it with the Penman-Monteith equation from MODIS and weather data (Mu et al., 2011).
  • How to read it: each value is the total of 8 days; the monthly mean of a series is the mean of those totals, not the total of the month.
  • Beware: it is a model, not a measurement, with a 500 m pixel: its uncertainty grows at fine scales.

LST: Land Surface Temperature

  • What it measures: the temperature of the "skin" of the land (soil, canopies, rock, roofs), in °C, from the thermal radiation it emits. It is not the air temperature: in full sun, bare soil can be many degrees above it (Li et al., 2013).
  • In MonitorEO:
    • MODIS (MOD11A1 of Terra and MYD11A1 of Aqua, daily, 1 km): the daytime temperature, with the split-window algorithm (Wan and Dozier, 1996; Wan, 2014). Terra passes in the morning and Aqua in the early afternoon: their values are not comparable with each other.
    • Landsat: the Collection 2 surface temperature (Cook et al., 2014), served at 30 m but measured with thermal pixels of 60 to 120 m depending on the satellite.
  • Beware: there are data only under clear skies, so the series have gaps and lean towards the days without clouds. The time of the pass, the slope and the aspect (sunny or shady slopes) change it a lot.

ALBEDO

  • What it measures: the fraction of the solar radiation that the surface reflects, from 0 (it absorbs it all) to 1 (it reflects it all): fresh snow is above 0.8 and a dark forest is around 0.1. Less albedo is more energy absorbed, for example when snow melts or after a fire.
  • In MonitorEO:
    • MODIS (MCD43A3, 500 m): the mean of the shortwave albedo with direct light (black-sky) and with diffuse light (white-sky), from a model of how the surface reflects in each direction (Schaaf et al., 2002).
    • Landsat: the conversion of the bands to shortwave albedo of Liang (2001).
    • Sentinel-2: a combination of the bands B2 to B8, B11 and B12 on the same principle.
  • Beware: those of Landsat and Sentinel-2 assume that the surface reflects equally in all directions, and on slopes the illumination changes the value. Do not mix the albedo of different sensors.

ARSL: Aerosol Optical Depth

  • What it measures: how much the particles suspended in the atmosphere (dust, smoke, pollution, sea salt) dim the light, at 550 nm and without units: low values, clean atmosphere; high ones, episodes of dust or smoke from fires.
  • In MonitorEO: Optical_Depth_055 of the MODIS product MCD19A2, from the MAIAC algorithm (1 km, at each pass of Terra and Aqua) (Lyapustin et al., 2018).
  • Beware: it is the column of the whole atmosphere, not the air quality at ground level, and there are no data under clouds.

NBR and RBR: fires

The NBR, (NIR − SWIR2) / (NIR + SWIR2), falls sharply after a fire: burnt vegetation reflects less near infrared and more shortwave infrared. Its difference between before and after the fire (dNBR) and the RBR measure the severity: see Burn severity.

Regions

A region is a dictionary (in Python), a list (in R) or a JSON object (in the MCP and the command line) with one of these keys:

Region Python / JSON R QGIS
WDPA protected area by its ID {'wdpa_id': 389011} or a list of IDs mo_wdpa(389011) Protected area (WDPA)
Protected area by its exact name {'wdpa_name': 'Sierra Nevada'} – –
RESOLVE 2017 ecoregion by its ID {'ecoregion_id': 793} mo_ecoregion(793) –
The ecoregion of a point {'ecoregion_at': [-3.3, 37.1]} mo_ecoregion(lon = -3.3, lat = 37.1) Ecoregion at the center of the map
Rectangle (degrees) {'bbox': [-3.6, 36.9, -2.6, 37.3]} (west, south, east, north) mo_bbox(-3.6, 36.9, -2.6, 37.3) Map extent
Point, with a buffer in meters {'point': [-3.31, 37.05], 'buffer': 500} mo_point(-3.31, 37.05, 500) –
GeoJSON (geometry, Feature or FeatureCollection) {'geojson': ..., 'name_field': 'name'} mo_geojson(...) –
Vector file (GeoPackage, shapefile...) {'file': 'zones.gpkg', 'name_field': 'name'} (and layer) mo_sf(sf::st_read("zones.gpkg"), "name") Layer (selected features or all)
  • Several polygons give several time series: one per protected area, ecoregion or feature, with its name (from name_field, or from the field name or NAME).

  • The WDPA ID (SITE_ID) is looked up by name: find_protected_areas('Doñana') in Python and MCP, mo_protected_areas("Doñana") in R, monitoreo parks Doñana or the Search button of QGIS. The same name usually has several designations (national park, natural park, SAC, SPA...) with different boundaries. Some examples:

    Protected area WDPA ID
    Sierra Nevada National Park 389011
    Sierra Nevada Natural Park 349467
    Doñana National Park 389012
    Doñana Natural Park 349268
  • Vector files need GDAL (the conda environment and QGIS bring it).

Period and season

  • Period: first and last day, both included, as YYYY-MM-DD ('2022-01-01', '2023-12-31').
  • Season (optional, season): only those days of each year, as ['MM-DD', 'MM-DD']. ['06-01', '09-30'] is the summer of each year; ['11-01', '02-28'] crosses the year and counts in the year in which it starts.

From the pile of images to a number: metric and statistic

A time series summarizes the data twice:

  1. In time, at each pixel (metric): the images of each step (step) are reduced to one per pixel. Steps: 'daily' (each day with images), '16-day' (blocks of 16 days from 1 January), 'monthly' and 'annual'.
  2. In space, over the region (stat): the pixels of that image are reduced to one value per polygon.

Metrics and statistics: mean, median, min, max, std (standard deviation) and percentiles pN (p5, p95...). Each row of the time series also carries n_images, the images of that step, and n_pixels, the valid pixels that went into the value: a value with few pixels (almost all cloudy) is unreliable.

Pixel size of the time series. By default, that of the data; in large regions, a larger one (10, 20, 50, 100... m) so that the largest has about a million pixels: the Sierra Nevada National Park with Sentinel-2 is computed with 50 m pixels. It can be set with scale (meters).

Maps: aggregation over time

A map is the variable summarized over time at each pixel, with metric (the median by default) and:

  • temporal='period': the metric of all the images of the period.
  • temporal='annual': the metric of each year and then, across years, interannual (mean, median, min or max). E.g. metric='max', temporal='annual', interannual='median' is the median of the annual maxima.
  • temporal='monthly': the same with each month.

Maps are obtained in three ways:

  • Earth Engine tiles (map_layer): an XYZ URL for QGIS, Leaflet or any viewer. They last a few hours and only have colors, not values.
  • GeoTIFF on your computer (download_image): float32, NoData −9999, in the UTM coordinate system of the center of the region (crs='auto') or another (crs='EPSG:25830'), with the pixel of the data or that of resolution. Earth Engine computes it by tiles, so it is good for small or medium regions (a few million pixels).
  • GeoTIFF in Google Drive (export_image): with no limit of size or time, for large regions at full resolution.

Per-pixel filters

By default the pixels with clouds (and their shadows), water, snow and, where there is a quality band for it (Landsat 8 and 9, and the NDVI, EVI and LAI of MODIS), aerosols are removed. They are changed with quality:

quality={'snow': False}                       # keep the snow
quality={'water': 'auto', 'snow': 'auto'}     # 'auto': off in the variables that measure it
quality={'cloud_score': None}                 # Sentinel-2 clouds with the SCL mask
quality={'scene_clouds': 20}                  # only scenes with less than 20 % clouds
  • Sentinel-2 clouds are removed with Cloud Score+ (cloud_score: a pixel is clear if its score is at least 0.6). With None the SCL classification of Sentinel-2 is used.
  • Beware of the variables that measure what a filter removes: the NDSI measures snow, and the NDWI, Chl-a and NDCI measure water. For them, switch that filter off ({'snow': False} with the NDSI, {'water': False} with the NDWI) or use 'auto'.
  • The MODIS fill values (e.g. 250, cloud, in the snow of MOD10A1) are always removed.

In QGIS they are the Remove pixels with check boxes of the Variable group.

Seasonal trends (Mann-Kendall and Sen)

Has the variable changed over the years, and in which part of the year?

  1. Each year gives a value for each part of the year (step):

    • 'annual': the whole year (or the season of each year), key all.
    • 'monthly': the 12 months, keys m01 (January) ... m12.
    • '16-day': 23 blocks of 16 days from 1 January (days 1-16, 17-32... 353-366), keys p01 ... p23.

    That value is the metric (metric, the mean by default) of the images of that part in that year: in the table, the statistic (stat) of the region; in the map, at each pixel.

  2. The trend of each part is computed on its annual values:

    Column or band Meaning
    n years with data (at least 2; better 8-10 or more)
    tau Kendall's τ: from −1 (always goes down) to 1 (always goes up)
    z Mann-Kendall Z: τ·√(9n(n−1) / (2(2n+5))), normal approximation without correction for ties
    p_value two-sided p-value of Z: 2·(1 − Φ(|Z|))
    significant p_value < alpha (0.05 by default)
    slope Sen's slope: the median of the slopes between each pair of years (units of the variable per year)
    intercept value of Sen's line in the first year of the period

n is the number of years with data of each pixel or region, not that of the period.

Interpretation: a slope of +0.0019 NDVI/year with p = 0.005 in August from 2005 to 2024 is an increase of about 0.036 NDVI units in 19 years, unlikely by chance. A high p-value does not prove that there is no change: with few years or a lot of variability, the test has no power to see it.

Comparison of two periods

A reference period (start to end) and the other period (other_start to other_end).

  • In table and chart (compare_series): the mean of each part of the year (step: months, 16 days or the year) over the years of each period, and their difference (other − reference).
  • In map (compare_map, download_comparison): the variable aggregated over time (as in the maps) in each period and their difference; the GeoTIFF has the bands difference, reference and other.

Burn severity (dNBR)

The severity of a fire is measured with the dNBR: the NBR of a period before the fire minus that of a period after it (each one, the median of its images with the per-pixel filters), classified with the USGS scale (Key and Benson, 2006), like the UN-SPIDER recommended practice, and it is drawn with the colors of that practice in the maps, legends and charts of every tool:

Class dNBR Color
Enhanced regrowth, high < −0.25 #7a8737
Enhanced regrowth, low −0.25 to −0.1 #acbe4d
Unburned −0.1 to 0.1 #0ae042
Low severity 0.1 to 0.27 #fff70b
Moderate-low severity 0.27 to 0.44 #ffaf38
Moderate-high severity 0.44 to 0.66 #ff641b
High severity ≥ 0.66 #a41fd6

burn_severity gives the hectares of each class in each polygon and a GeoTIFF with the bands dnbr, severity (class −2 to 4), nbr_before and nbr_after. It is advisable that the two periods are from the same time of the year or close to the fire: between different seasons, the seasonal change of the vegetation is confused with that of the fire.

RBR (Relativized Burn Ratio)

As an alternative to the dNBR, burn_severity with index="RBR" (and Index > RBR in the Earth Engine app) gives the RBR of Parks et al. (2014) as computed by Silva-Cardoza et al. (2022), who found it the index that best matches the severity measured in the field:

RBR = dNBR / (NBR before + 1.001)

  • The NBR is that of the bands B8A and B12 of Sentinel-2 (20 m; their NBR5n), and NIR and SWIR2 in Landsat. It is in the catalog as the variable RBR (Sentinel-2 and Landsat), but it compares two periods, so only burn_severity computes it: the series, maps and trends of one period refuse it.
  • It has no phenological correction and is on the scale of the dNBR of MonitorEO: the article multiplies the dNBR and the RBR by 1000 (an RBR of 0.478 here is 478 there).
  • It is a continuous index, without classes (there are no palette or thresholds for it yet): it gives its mean, median, percentiles 10 and 90, minimum and maximum and the hectares with data over each polygon, and a GeoTIFF with the bands rbr, dnbr, nbr_before and nbr_after.
  • The article got its best results with composites of the minimum of one month before and one after the fire (metric="min"); MonitorEO uses the median by default, as for the dNBR.

Files that are generated

  • CSV: one row per region and step (time series), per region and part of the year (trends and comparisons), with the columns of the data and, at the end, what they were made with (variable, sensor, step, metric, statistic, unit and pixel in meters).
  • PNG: the charts of time series, trends and comparisons, and the previews of the maps.
  • GeoTIFF: float32, NoData −9999, with band names (value, or slope, tau, z, p_value, intercept, n, or difference, reference, other).

Quota and times

Without a project of your own, everything is computed with the shared account of MonitorEO, whose quota all its users share; with your project, with your Earth Engine account and the quota of that project (non-commercial use is free, with a monthly computing quota per Google Cloud project). Exports to Google Drive need your account (Getting started). Earth Engine caches what has already been computed: repeating a computation is much faster.

EECUs spent this month

Earth Engine measures computation in EECUs (Earth Engine Compute Units): one EECU-hour is one hour of one of its processors. All the tools tell you what part of your EECUs of the month you have spent, and warn you when less than 10 % is left. They are renewed on the 1st of each month, at midnight Pacific time.

With the shared account, each user has their research EECUs: 25 EECU-h per month, for research only, so that nobody spends everybody's. The project of MonitorEO has 1,000 EECU-h a month (Contributor tier) and keeps 100 for the Earth Engine app: what you have left is the least of your research EECUs and of what the project has left for all the users of the shared account, and if the project reaches that reserve, the shared account stops computing for everyone until the next month. When you have spent them, the shared account does not compute for you until the next month (the computation that was running may continue for up to an hour): switch to your own Earth Engine account and project (Getting started). The user is each installation of MonitorEO on a computer: the first time it uses the shared account it creates a random identifier (~/.config/monitoreo/user_id, with no data of yours), which labels its computations in Earth Engine. QGIS, the assistant, R, Python, the command line and the MCP server of the same computer share it.

With your project they are the EECUs of that project, against the monthly quota of its tier: Community, 150 EECU-h per month (that of all non-commercial projects); Contributor, 1,000 (with a billing account, at no cost); Partner, 100,000 (on request). By default, Community; if it is another one, choose it in QGIS or in the assistant, or give it with limit (--limit in the command line) or with the environment variable MONITOREO_EECU_LIMIT (Contributor, Partner or a number of EECU-h). Earth Engine does not tell the tier of a project: it can be seen in the Google Cloud console, in Earth Engine > Configuration. When the quota runs out, Earth Engine does not stop, but it computes much more slowly until the next month. To read the usage, the project must have the Cloud Monitoring API enabled (free: https://console.cloud.google.com/apis/library/monitoring.googleapis.com) and your account must have the Monitoring Viewer role (project owners and editors have it).

Tool Where to look Warning with less than 10 %
QGIS research EECUs bar (with your project, EECUs of the month) of the Google Earth Engine group, with Check in the message bar, once a month
Assistant bar under the header, with Check in the conversation, once a month
Python mo.eecu_usage() EECUWarning when connecting; mo.eecu_warning()
R mo_eecu() warning() when connecting and computing, once a month
Command line monitoreo eecu at the end of each command that computes
MCP tool eecu_usage eecu_warning in the answers

The usage is that of the "Completed EECU-seconds" metric of Cloud Monitoring: it arrives with a delay of a few minutes and does not count the computations that fail. The tools check it at most every 5 minutes. The Earth Engine app does not show it (Cloud Monitoring cannot be read from it).

Times measured in the Sierra Nevada National Park (860 km²), the first time each thing is computed:

Computation Time
Monthly time series of Sentinel-2 NDVI of 2 years (24 values, 50 m pixels) ~50 s
Monthly trends of MODIS NDVI of 20 years (240 values) ~40 s
Monthly comparison of MODIS NDVI of 2005-2009 with 2020-2024 ~20 s
Preview of the map of the median Sentinel-2 NDVI of a summer ~1 min
GeoTIFF of the annual trend of MODIS NDVI of 20 years (250 m) ~10 s

Very long time series over large areas (years of daily data, or many regions) work better with a monthly or annual step, or exported to Google Drive.

Clone this wiki locally