Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Authors
Sentinel-2 is the European Copernicus satellite mission that images Earth's land and coastal waters. It records 13 spectral bands, from visible light to shortwave infrared, at 10, 20, and 60 m resolution. Each satellite carries an optical camera, the MultiSpectral Instrument (MSI), and images a strip of ground 290 km wide. Two satellites in the same orbit image every location every five days at the Equator. The data is free. Copernicus services use it for agriculture, forestry, land cover, and disaster mapping. Clouds hide the ground on many passes, and the Iowa example below counts how many.
Sentinel-2 is ready to query in the Havasu catalog. The catalog holds the Sentinel-2 L2A scene index, an index of Level-2A (L2A) scenes. It also holds RasterFlow's cloud-filtered Sentinel-2 mosaics.
Sentinel-2 is part of Copernicus, the European Union's Earth observation program, and the European Space Agency (ESA) builds and operates the satellites. ESA's Sentinel-2 mission page on SentiWiki describes it as "a European wide-swath, high-resolution, multi-spectral imaging mission" designed for a revisit of five days at the Equator. Drusch and colleagues set out the design in the 2012 mission paper.
Each satellite flies at 786 km in a sun-synchronous orbit. The orbit passes over each place at the same local time: 10:30 am at the Equator, close to the Landsat overpass. The MSI is a passive push-broom sensor: it collects reflected sunlight row by row across the swath as the satellite moves forward.
Sentinel-2A launched in 2015, Sentinel-2B in 2017, and Sentinel-2C on 5 September 2024, all on Vega rockets. According to SentiWiki, Sentinel-2C replaced Sentinel-2A in operations on 21 January 2025, so the nominal pair is now Sentinel-2B and Sentinel-2C. Since March 2025, Sentinel-2A has flown an extension campaign 36° from Sentinel-2B. Systematic coverage spans all land between 56° South and 82.8° North and coastal waters up to 20 km from shore.
Sentinel-2 bands run from B1 to B12, plus a narrow near-infrared band, B8A. Wavelengths and resolutions below come from the Microsoft Planetary Computer Sentinel-2 Level-2A collection SpatioTemporal Asset Catalog (STAC) metadata; B10, absent from Level-2A, comes from SentiWiki.
SentiWiki describes the two 20 m shortwave infrared (SWIR) bands as serving "snow/ice/cloud detection, or vegetation moisture stress assessment." It describes the 60 m bands as serving cloud screening and atmospheric correction. For hundreds of narrower bands, see hyperspectral imagery.
SentiWiki gives four kinds of resolution. Spatial resolution is 10, 20, or 60 m by band. Temporal resolution is 10 days per satellite, and five for the pair at the Equator. Spectral resolution covers 13 bands from 443 nm to 2190 nm. Radiometric resolution is 12 bits, or 4,096 brightness levels. Away from the Equator, neighbouring orbit tracks overlap and the revisit shortens. Li and Roy's global analysis of Sentinel-2A, Sentinel-2B and Landsat-8 revisit intervals (Remote Sensing, 2017) found a global median average revisit of 3.7 days for the two Sentinel-2 satellites. With Landsat-8 added, it was 2.9 days.
ESA releases Level-1C and Level-2A to users, described on SentiWiki's Sentinel-2 products page. Reflectance is the share of sunlight a surface sends back to the sensor.
The SCL is a 20 m map with 12 classes, listed on SentiWiki's processing page. They range from 4 vegetation and 5 not vegetated to 8 and 9 cloud, 10 thin cirrus, and 11 snow or ice. A mask for clear land keeps classes 4 and 5.
A processing baseline is the version of ESA's processing software. From baseline 04.00 on 25 January 2022, stored values carry an offset, a fixed number added before scaling. Reflectance is (digital number + offset) / quantification value, and the product metadata lists both numbers per band. ESA reprocessed the archive from 2015 to 13 December 2023 with uniform baselines as Copernicus Sentinel-2 Collection-1 (Enache and colleagues, IGARSS, 2023).
The EU legal notice on Copernicus Sentinel data grants users "free, full and open access" for reproduction, distribution, and modification, with a credit line of "Copernicus Sentinel data [Year]".
The Copernicus Data Space Ecosystem replaced the Copernicus Open Access Hub (SciHub) that older tutorials name for Sentinel-2 download. The archive is available from:
SentiWiki's Sentinel-2 applications page lists the common composites:
The same page lists the common indices. NDVI, the normalized difference vegetation index, is (B8 − B4) / (B8 + B4). The normalized difference moisture index (NDMI) is (B8A − B11) / (B8A + B11). The normalized difference water index (NDWI) is (B3 − B8) / (B3 + B8), and the normalized difference snow index (NDSI) is (B3 − B11) / (B3 + B11).
Sentinel-1 is the Copernicus radar mission, covered in the synthetic aperture radar guide. Its figures come from the Sentinel-1 mission overview.
Analysts use Sentinel-2 to separate vegetation, water, and materials by color, and Sentinel-1 to cover cloudy dates. Both are core Earth observation data.
Landsat and Sentinel-2 are both free, global optical archives. Landsat 8 and 9 have 30 m pixels and a 16-day repeat. Sentinel-2 has 10 to 20 m pixels and a five-day repeat, per the Harmonized Landsat and Sentinel-2 (HLS) project. NASA's HLS combines the two into one 30 m surface reflectance record. Its L30 product comes from Landsat 8 and 9, and its S30 product from Sentinel-2A, 2B, and 2C. Together they observe each place every 2 to 3 days. Claverie and colleagues describe the method (2018).
WherobotsDB reads Sentinel-2 COGs in place and runs raster and vector SQL on them. The Sentinel-2 L2A scene index holds one row per scene with links to every band COG. The STAC reader loads other catalogs. Bands load as out-db rasters: the table stores a link to each file, and a query reads only the tiles it needs (out-of-database architecture).
The example below follows one patch of Iowa farmland south of Ames: count the clear looks, mask the pixels under cloud, and summarize pixels per field. It joined these sources:
wherobots_open_data.sentinel2.l2a_source_items
wherobots_open_data.rasterflow_output_samples.fields_of_the_world_vector_global
Each step is one SQL query that reads raster and vector data in one engine; most stacks pick one.
This query lists every 2025 Level-2A scene over one 10 m pixel at a field edge, at 41.95° N, 93.65° W. The pixel is in tile 15TVG of the Military Grid Reference System (MGRS). The query reads the SCL class at that pixel:
SELECT id, datetime, `eo:cloud_cover` AS cloud_cover, RS_Value(RS_FromPath(assets.scl.href), ST_SetSRID(ST_Transform(ST_SetSRID(ST_Point(-93.65, 41.95), 4326), 'EPSG:4326', 'EPSG:32615'), 32615)) AS scl_at_point FROM wherobots_open_data.sentinel2.l2a_source_items WHERE year = 2025 AND ST_Intersects(geometry, ST_Point(-93.65, 41.95)) ORDER BY datetime
It returned 172 distinct acquisitions, or looks, on 157 days. Sentinel-2B made 71, Sentinel-2C 68, and Sentinel-2A 33. The pixel lies where two orbit tracks overlap. So Sentinel-2B and Sentinel-2C each passed twice per 10-day cycle, at 17:12 and 17:22 UTC, and the median gap between looks was 2 days. The record shows the handover: Sentinel-2A's last January pass came on 18 January and Sentinel-2C's first on 25 January. Sentinel-2A returned on 18 March in its extension campaign.
Clouds hid most of them. The SCL marked the pixel as vegetation 23 times, all between June and September, and as not vegetated 36 times, so 59 looks were clear. The other 113 were high-probability cloud (44), medium-probability cloud (34), thin cirrus (22), snow or ice (7), cloud shadow (4), and unclassified (2). Clear looks came a median of 5 days apart. The longest gaps ran from 25 January to 27 February (33 days) and from 26 November to 31 December (35 days).
A common shortcut filters on the scene-level eo:cloud_cover field, the share of the 110 km tile under cloud. At this pixel that field is a poor guide. A filter at 10% keeps 38 scenes: 31 clear at the pixel and 7 cloudy there. It throws away 28 clear looks, nearly half of the usable record. A per-pixel SCL mask keeps them.
eo:cloud_cover
Decisions in agriculture, insurance, and land management are made per field, so the next step is zonal statistics: average a band index over each polygon. This query takes the clear Sentinel-2C scene of 14 July 2025 (S2C_15TVG_20250714_0_L2A, 0.13% cloud). It clips the red, near-infrared, and SCL bands to a 4.2 km by 3.3 km box around the pixel. It keeps pixels with SCL class 4 or 5 and averages NDVI inside each Fields of the World boundary that lies within the box:
S2C_15TVG_20250714_0_L2A
WITH s AS ( SELECT assets.red.href AS red, assets.nir.href AS nir, assets.scl.href AS scl FROM wherobots_open_data.sentinel2.l2a_source_items WHERE year = 2025 AND month = 7 AND id = 'S2C_15TVG_20250714_0_L2A'), aoi AS (SELECT ST_SetSRID(ST_PolygonFromEnvelope(444000, 4642800, 448200, 4646100), 32615) AS g), r AS (SELECT RS_Clip(RS_FromPath(red), 1, g) AS rr, RS_Clip(RS_FromPath(nir), 1, g) AS nn, RS_Clip(RS_FromPath(scl), 1, g) AS cc FROM s, aoi), pr AS (SELECT p.x, p.y, p.value AS red, p.geom FROM (SELECT explode(RS_PixelAsCentroids(rr, 1)) AS p FROM r)), pn AS (SELECT p.x, p.y, p.value AS nir FROM (SELECT explode(RS_PixelAsCentroids(nn, 1)) AS p FROM r)), -- SCL is 20 m: match each 10 m pixel to the 20 m cell that contains it pc AS (SELECT FLOOR(ST_X(p.geom) / 20) AS kx, FLOOR(ST_Y(p.geom) / 20) AS ky, p.value AS scl FROM (SELECT explode(RS_PixelAsCentroids(cc, 1)) AS p FROM r)), px AS (SELECT pr.geom, pc.scl, (pn.nir - pr.red) / (pn.nir + pr.red) AS ndvi FROM pr JOIN pn USING (x, y) JOIN pc ON pc.kx = FLOOR(ST_X(pr.geom) / 20) AND pc.ky = FLOOR(ST_Y(pr.geom) / 20) WHERE pr.red > 0 AND pn.nir > 0), -- Fields of the World layer dated 2025-01-01 f AS (SELECT ST_Transform(ST_SetSRID(geometry, 4326), 'EPSG:4326', 'EPSG:32615') AS gu FROM wherobots_open_data.rasterflow_output_samples.fields_of_the_world_vector_global WHERE unix_timestamp(time) = 1735689600 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-93.676, 41.935, -93.625, 41.966))) SELECT ROUND(ST_Area(f.gu) / 10000, 2) AS area_ha, SUM(CASE WHEN px.scl IN (4, 5) THEN 1 ELSE 0 END) AS clear_pixels, ROUND(AVG(CASE WHEN px.scl IN (4, 5) THEN px.ndvi END), 4) AS mean_ndvi FROM f JOIN aoi ON ST_Within(f.gu, aoi.g) LEFT JOIN px ON ST_Contains(f.gu, px.geom) GROUP BY f.gu ORDER BY area_ha DESC
The six largest fields it returned:
The box held 139,351 pixels at 10 m. The SCL classed 136,979 as vegetation and 2,330 as not vegetated, and set aside 42, so the mask removed 0.03% of the box. Twenty-one field boundaries lie wholly inside it, covering 596 ha and 59,622 pixels, all clear. The 11 fields of 10 ha or more average NDVI between 0.768 and 0.922, ten of them above 0.89: dense mid-July canopy. The five polygons under 1.3 ha average 0.59 to 0.68, likely because most of their 10 m pixels straddle a field edge.
The query matches each 10 m red and near-infrared pixel to the 20 m SCL cell that contains it, on the UTM grid both share. Lanaras and colleagues instead trained a neural network that brings all bands to 10 m (ISPRS Journal, 2018). The query also tests each pixel centre against the field polygon in the same UTM projection.
This scene's STAC metadata lists a scale of 0.0001 and the baseline 04.00 offset of -0.1 for the red band. The red values stored in these files start at 130, with a 1st percentile of 179 across the box. With the offset applied, those values would give negative reflectance. The files are on the pre-2022 scale, so the query computes NDVI from the stored values. Wherobots documents how RS_FromPath handles band scale and offset. Test a few pixels before trusting either convention, because a time series that mixes them jumps by the 0.1 offset.
RS_FromPath
At scale, the Strait of Hormuz vessel analysis "read 719 Sentinel-2 scenes, 151 GB in total, straight from the public archive and fetched only about 1.5 GB covering three areas of interest." RasterFlow builds the cloud-filtered mosaics. It also runs the Fields of the World model that produced the boundaries above (pipeline post). RS_ZonalStats joins raster and vector data per polygon. Wherobots used that pattern to summarize embeddings for about 3.5 million Iowa fields across 2023-2025.
The models people use every day were trained on text, documents, databases, and the internet. None of those sources hold last week's Sentinel-2 scene. The Model Context Protocol (MCP) is a standard way to connect an AI agent to tools and data. Through the Wherobots MCP Server, an AI agent can search the scene index, write queries like the ones above, and run them. That is geospatial AI applied to Earth observation.
Sentinel-2 research follows the steps of the Iowa example: mask clouds, fill the gaps between clear looks, and summarize pixels per field, with benchmarks and foundation models built on top.
Zhu and Woodcock introduced Fmask in Object-based cloud and cloud shadow detection in Landsat imagery (2012). Fmask tests each pixel's band values for cloud, then matches clouds to their shadows. Qiu, Zhu, and He extended it to Sentinel-2 in Fmask 4.0 (2019). Sen2Cor, cited above, writes the SCL used here. Skakun and colleagues' Cloud Mask Intercomparison eXercise (2022) compared cloud masking algorithms on shared Landsat 8 and Sentinel-2 reference data. Aybar and colleagues released CloudSEN12 (2022), 49,400 hand-labelled patches for training deep learning masks.
Masks differ most on the hard classes. At the Iowa pixel, thin cirrus and cloud shadow made up 26 of the 113 rejected looks. So at this pixel, errors on those two classes change the clear count by a large share.
Clear looks arrive at irregular intervals, so many Sentinel-2 products are time series models or composites (clear pixels of many dates merged into one image). Li and Roy's figures show why analysts combine sensors: adding Landsat-8 shortens the median revisit from 3.7 to 2.9 days. HLS harmonizes them at 30 m: it adjusts both sensors' values to one scale. ESA's Sen2Like (Saunier and colleagues, 2022) does the same for users who process their own scenes.
Defourny and colleagues' Sen2-Agri system (2019) built national cloud-free composites, cropland masks, and crop type maps from Sentinel-2 and Landsat 8.
At country scale, the per-field summary becomes a raster-vector join split across many machines. Jia Yu, Jinxuan Wu, and Mohamed Sarwat introduced GeoSpark (ACM SIGSPATIAL 2015). Yu, Zongsi Zhang, and Sarwat described how it partitions, indexes, and joins spatial data in Spatial data management in Apache Spark: the GeoSpark perspective and beyond (GeoInformatica, 2019). GeoSpark became Apache Sedona. Yu and Sarwat founded Wherobots, whose out-db rasters read only the COG tiles a join touches.
Sentinel-2 is a standard training source for Earth observation machine learning. EuroSAT (Helber and colleagues, 2019) offers 27,000 labelled patches in 10 classes. BigEarthNet (Sumbul and colleagues, 2019) offers 590,326 multi-label patches. SSL4EO-S12 (Wang and colleagues, 2023) pairs Sentinel-2 with Sentinel-1 for self-supervised pretraining (training on unlabelled images). SatMAE (Cong and colleagues, NeurIPS 2022) adapted masked autoencoders to multispectral time series. Google DeepMind's AlphaEarth Foundations (Brown and colleagues, 2025) combines several Earth observation sources into annual embedding layers: per-pixel lists of numbers that summarize a year of observations. Wherobots summarized these over Iowa fields. Kanchan Chowdhury and Mohamed Sarwat's GeoTorch (ACM SIGSPATIAL 2022), now GeoTorchAI, adds raster transforms and benchmark datasets for training such models at scale.
The Iowa walkthrough shows what Sentinel-2 gives in practice: frequent looks, fewer clear ones, and stored values to check before use.
Search Sentinel-2 scenes and join them to fields and buildings in SQL with a Wherobots free trial at cloud.wherobots.com.
Sentinel-2 images Earth’s land surfaces, inland waters, and coastal waters in 13 spectral bands from visible to shortwave infrared, at 10, 20, and 60 m resolution. It images each location every five days at the Equator. Copernicus services use the imagery for land cover mapping, agriculture, forestry, water management, and emergency mapping of floods and wildfires.
Yes. EU law gives users free, full and open access to Copernicus Sentinel data, including reproduction, distribution, and modification. Anyone who publishes or redistributes the data must credit it as ‘Copernicus Sentinel data [Year]’, or ‘Contains modified Copernicus Sentinel data [Year]’ when the data has been changed.
Sentinel-1 and Sentinel-2 are two Copernicus satellite missions. Sentinel-1 carries a C-band synthetic aperture radar that images day or night through cloud. Sentinel-2 carries the MultiSpectral Instrument, a passive optical sensor that records reflected sunlight in 13 bands. Radar data covers cloudy and dark periods, and optical data adds color and vegetation detail.
Sentinel-2 and Sentinel-3 are separate Copernicus satellite families. Sentinel-2 is the high-resolution, wide-swath multispectral imaging mission for land and coastal monitoring, with pixels of 10 to 60 m. ESA and the European Organisation for the Exploitation of Meteorological Satellites (EUMETSAT) operate Sentinel-3 jointly. It measures sea surface height, sea and land surface temperature, and ocean and land color for ocean forecasting and environmental monitoring. Its Ocean and Land Colour Instrument (OLCI) images at 300 m, so Sentinel-3 trades detail for wide, frequent coverage. The Sentinel-3 mission overview lists its instruments.
Sentinel-2 has 13 spectral bands. Four are at 10 m: blue, green, red, and near-infrared. Six are at 20 m: four red edge and narrow near-infrared bands and two shortwave infrared bands. Three are at 60 m: coastal aerosol, water vapour, and cirrus. Level-2A products drop the cirrus band B10, which is used for cirrus detection.
Each Sentinel-2 satellite repeats its orbit every 10 days. Two satellites phased 180° apart give a revisit time of five days at the Equator. Since March 2025, an extension campaign for Sentinel-2A adds acquisitions over Europe and tropical Africa and South America.
The Copernicus Data Space Ecosystem is the main distribution service for Sentinel-2, with a browser and APIs. Cloud copies include the Sentinel-2 Cloud-Optimized GeoTIFFs on AWS, searchable through the Earth Search STAC API. Other cloud copies include the Sentinel-2 Level-2A collection on Microsoft Planetary Computer and the harmonized surface reflectance collection in Google Earth Engine.
Level-1C is reflectance as measured above the atmosphere, with all 13 bands. It is corrected for terrain and cut into 110 km by 110 km tiles on the UTM map grid. Level-2A is surface reflectance: ESA’s Sen2Cor processor removes the effect of the atmosphere. Level-2A adds an aerosol optical thickness map, a water vapour map, and the Scene Classification Layer. Level-2A drops the cirrus band B10. Land analysis that needs surface reflectance starts from Level-2A.
The SCL is a 20 m map in every Level-2A product that labels each pixel with one of 12 classes. They include vegetation (4), not vegetated (5), water (6), cloud shadow (3), medium and high probability cloud (8 and 9), thin cirrus (10), and snow or ice (11). A clear-land mask keeps classes 4 and 5 and drops the rest.
No. Sentinel-2 is a passive optical sensor that records reflected sunlight, so clouds and their shadows hide the ground. In 2025, one pixel among farm fields near Ames, Iowa, was imaged 172 times and the Scene Classification Layer marked 59 of those looks as clear. Radar missions such as Sentinel-1 image through cloud.
What is a Kelvin Wave? Speed, El Niño and 2026 Data
A Kelvin wave is a long, low ocean wave that carries warm water east along the equator in an El Niño. In the 30 days to 10 November 2026, the sea at San Diego stood a record 41.2 cm above NOAA's tide prediction.
What Is an ETL Pipeline? Steps, Examples and Spatial ETL
An ETL (extract, transform, load) pipeline moves data from sources into storage. Learn the steps with examples. Then see a spatial mistake that passed the usual checks: rounding coordinates emptied 27% of Denver's building outlines.
What is an MCP Server? Spatial Context for AI Agents
An MCP server gives AI agents tools to call. With no tools, Claude Code gave no count of San Francisco's buildings. Via Wherobots MCP, it counted 162,538.
share this article
Awesome that you’d like to share our articles. Where would you like to share it to: