Every field has a season

Click a field. This page takes its outline and crop from the Fields of the World harmonized field data, finds every Sentinel-2 image of that year in which the field is clear, and measures how green it is. Next to it: the rain and warmth of that year, against a normal one. Winter wheat greens up in March and is cut in July, maize waits until June, grass dips at every cut.

Zoom in to pick a field

Examples

Fields from the map, each through one year. The curves are measured from the same images the map reads; click one to see it there.

About the data

Fields
The newest edition of each collection in the Fields of the World harmonized field data, read from its single PMTiles archive. The crop belongs to the year of that edition, which the year menu starts with; in other years the field may have grown something else, or had another outline. Collections of field blocks, which repeat the fields of the same country without crops, are left out.
Images
Sentinel-2 level 2A from Microsoft's Planetary Computer, read while you watch: one image every two to five days, 10 m cells. An image counts when its scene classification calls at least 80 % of the field clear; one is read every four days at most, the clearest first. NDVI, (near infrared − red) / (near infrared + red), is close to 0 on bare soil and near 0.9 on a dense green crop; the curve shows the median of the field's cells.
Weather
Daily mean temperature and rain from the Open-Meteo historical weather API (ERA5 reanalysis, cells of about 10–25 km), summed from the start of the season: 1 January, or 1 July south of the equator. Degree days add up each day's mean temperature above 5 °C, a common measure of the warmth crops grow on. The normal is the average of 1991–2020 at the same place.
Caveats
Thin cloud, haze and shadows are not always caught by the scene classification; a lone low point between two high ones is marked as probably one of those. The weather is that of a grid cell, not of the field.
Built with
OpenLayers, ol-pmtiles and geotiff.js; everything is computed in your browser. Code on GitHub.