SAVRN
Search Contact SAVRN

Dataset · Image feature extraction

strata-s12

by Christian Sanchez-Leon chsanleo/strata-s12

Co-registered Sentinel-1 / Sentinel-2 pairs for self-supervised pre-training in Earth observation. Generated 2026-08-09.

Rows
Configurations
Size138.3 GB
Licensecc-by-4.0
AccessAccess requested at publisher
Monthly Downloads115

Dataset Card

By Christian Sanchez-Leon, published under cc-by-4.0, revision 657e6ee2c9fb.

STRATA-S12 — full corpus

Upload in progress. This repository is being populated. Downloads are gated for now, and access will be opened once the upload is complete. Star / watch this repo to be notified when it goes live.

Co-registered Sentinel-1 / Sentinel-2 pairs for self-supervised pre-training in Earth observation.

Generated 2026-08-09.

What this is

Every entry is a pair: one Sentinel-2 optical tile and one Sentinel-1 radar tile over the same ground, written to the same grid — identical bounding box, identical CRS (the tile's local UTM zone) and 10 m pixels — so the two rasters correspond pixel for pixel with no resampling on your side. The two acquisitions are at most three days apart; the realised gap is recorded per pair.

Each tile is 512 × 512 pixels at 10 m, so it covers 5.12 × 5.12 km.

  • Sentinel-2: bands B4, B3, B2 (true colour), float32.
  • Sentinel-1: VV, VH and a precomputed VV−VH difference, float32.

The remaining Sentinel bands are not shipped, to keep the corpus trainable on ordinary hardware. They remain recoverable: every sidecar records the exact source-scene identifiers, so any additional band can be pulled for any tile from the same archive.

Contents

Pairs 740,746
Distinct geographic tiles 473,786
Non-empty strata 192
Land-cover classes 8
Seasons 4
Regions 6

Classes: bare_sparse_vegetation, built_up, cropland, grassland, herbaceous_wetland, permanent_water_bodies, shrubland, tree_cover

Seasons: autumn, spring, summer, winter

Regions: AFRICA, ASIA, AUSTRALIA_OCEANIA, EUROPE, NORTH_AMERICA, SOUTH_AMERICA

Folder layout

The corpus is distributed as one .tar per stratum (<sensor>_<class>_<season>_<region>.tar). Unpack a stratum archive and you get the tree below; unpack several into the same directory to merge them.

<sensor>/class_<class>/season_<season>/region_<region>/<file>.tif

For example s2/class_built_up/season_summer/region_AFRICA/.

The path is the index. Selecting a class, a season or a region is a directory walk and needs no metadata parsing:

cp -r s2/class_cropland/ /somewhere/          # one class, optical only
find . -path '*/season_winter/*' -name '*.tif'

The two members of a pair sit at matching s1/ and s2/ paths and share both identifiers in their filenames.

File names

<sensor>_<class>_<season>_<region>_<tile_id>_<timestamp>_<pair_id>.tif
Field Meaning
sensor S2 or S1
class first four letters of the dominant land-cover class
season WIN, SPR, SUM, AUT
region first three letters of the continental region
tile_id the geographic cell — same for every sampling of that ground
timestamp when the download batch ran (not the acquisition)
pair_id this specific S1–S2 pairing

A pair is identified by tile_id together with pair_id. Both are in the filename, so matching an optical tile to its radar counterpart is a string comparison — no index, no metadata read.

tile_id repeats across files on purpose: the same ground sampled in a different month or season is a different pair over the same cell. That is the temporal sampling, not duplication.

The sidecar

Every .tif has a .json beside it with the same stem, aligned with STAC 1.0.0 and informed by the NASA PDS4 information model. Nine blocks:

integritychecksum, algorithm. See Verifying a file below; the checksum is not a hash of the file's bytes.

coordinates — centroid lat/lon (WGS84), geographic bbox, and crs, the tile's native projected CRS. Both frames are recorded so downstream tooling can use either.

dimensionswidth, height, pixel_resolution_m, the list of bands, dtype and the nodata sentinel.

classificationseason, hemisphere, season_raw; the dominant land_cover_class and its class_id; geographic_region; label_purity, the fraction of the tile covered by the dominant class; and label_composition, the full list of classes present with their ratios. Mixed tiles are described, not discarded — filter on purity for homogeneous ones, or on the composition for any class present.

data_source — provider, mission, source collection and processing level.

acquisitiondownload_timestamp, satellite_acquisition_time (when the satellite captured the scene), spacecraft, the cloud threshold applied and the pairing tolerance.

license — terms, source, attribution and citation.

provenancesentinel2_image_id and sentinel1_image_id, the exact source scenes; plus the producing script, its version, the dataset version and the processing environment. The two scene identifiers are what let any tile be traced back to the archive it came from.

quality_metricstemporal_gap_days, the realised gap between the two acquisitions.

A complete example is in examples/.

Three things to get right

Seasons span two calendar years

Seasons are the three-month meteorological windows (DJF, MAM, JJA, SON), each named after the year it closes. Winter of year Y runs from December of Y−1 to February of Y, so part of the corpus carries a December date from the previous calendar year while belonging to the following season.

Group by the season field, not by the year of satellite_acquisition_time. Grouping by calendar year splits one winter across two buckets.

Seasons are local to the hemisphere

June–August is summer in the north and winter in the south; December is the reverse. The same acquisition month therefore carries either label depending on latitude, and both appear in the corpus. hemisphere and season_raw in the sidecar record which correction was applied.

The checksum hashes the pixels, not the file

integrity.checksum is the xxHash64 of the decoded pixel array, not of the bytes on disk. Hashing the file gives a different value. See below for the code that reproduces it.

Verifying a file

import json, xxhash, rasterio

tif = 's2/class_cropland/season_summer/region_EUROPE/S2_CROP_SUM_EUR_....tif'
arr = rasterio.open(tif).read()                    # (bands, H, W)
here = xxhash.xxh64(arr.tobytes()).hexdigest()
meta = json.load(open(tif[:-4] + '.json'))
assert here == meta['integrity']['checksum']

The array must be read whole and in band order — that is the buffer the checksum was computed over when the tile was written.

The manifest

manifest.parquet is one row per pair, with the identifiers, the stratum axes, latitude and longitude, the label purity and composition, the source scene identifiers, the temporal gap, and the paths of both files relative to this folder. Anything the folder tree cannot express — a purity threshold, a bounding box, a specific source scene — is a query over this file.

import pandas as pd
rows = pd.read_parquet('manifest.parquet')
pure = rows[rows['label_purity'] > 0.9]

About the labels

Land-cover labels come from ESA WorldCover 2021, product version v200, at 10 m. They exist to stratify the acquisition — to spread the sampling evenly over land-cover classes — and are not ground truth for a supervised task.

There is roughly a four-year gap between the label product and the imagery, so a tile in an area of real land-cover change may carry a stale class. That affects which stratum it was assigned to, not the validity of the pair or its usefulness for self-supervised pre-training. If you need supervised labels, bring them from an external benchmark.

Licence and attribution

Contains modified Copernicus Sentinel data. Released under CC BY 4.0. Per-file terms and the citation string are in each sidecar's license block.

Citation

If you use STRATA-S12, please cite the accompanying paper and this record:

@article{sanchezleon2026strata,
  title   = {Deficit-Driven Stratified Acquisition for Building STRATA-S12:
             An Open SAR--Optical Corpus for Self-Supervised Learning},
  author  = {Sanchez-Leon, Christian and Chen, Dongming and Wang, Dongqi},
  journal = {ISPRS Journal of Photogrammetry and Remote Sensing},
  year    = {2026}
}

@dataset{strata_s12_corpus_2026,
  title     = {STRATA-S12: A Stratified, Quality-Controlled Corpus of
               Co-Registered Sentinel-1/Sentinel-2 Pairs},
  author    = {Sanchez-Leon, Christian},
  year      = {2026},
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.22699047}
}

The dataset DOI above is the version DOI; the concept (all-versions) DOI will be added once the record is published.

Files in this folder

  • manifest.parquet — the index described above (one row per pair)
  • README.md — this file
  • requirements.txt — the pinned environment the tiles were produced in
  • norm_stats.json — per-band normalisation statistics (corpus band order)
  • load_example.py — opens and verifies a pair (see Verifying a file)
  • examples.zip — three complete pairs and their sidecars, to try the tooling
  • SHA256SUMS.txt — SHA-256 of each archive, for download integrity
  • *.tar — the tiles and their sidecars, one archive per stratum (<sensor>_<class>_<season>_<region>.tar); unpack to obtain the s1//s2/ tree

Details

Repository
chsanleo/strata-s12
Publisher
Christian Sanchez-Leon
Task category
Image feature extraction
Tags
remote-sensing, earth-observation, sentinel-1
Size category
100K<n<1M
Languages
sar
Revision
657e6ee2c9fb05ba1940a0bdfa9d204e675db941
Last updated
2026-09-18

Files

137 files, 138.3 GB in total.

Data134 files · 138.3 GB
Documentation1 file · 9.7 KB
Other1 file · 8.4 KB
Repository1 file · 2.5 KB
Every file
FileTypeSizeSHA-256
SHA256SUMS.txtData552 B
examples.zipData11.8 MB
manifest.parquetData107.7 MB
norm_stats.jsonData574 B
requirements.txtData248 B
s1_bare_sparse_vegetation_autumn_EUROPE.tarData135.4 MB
s1_bare_sparse_vegetation_spring_EUROPE.tarData19.3 MB
s1_bare_sparse_vegetation_summer_AUSTRALIA_OCEANIA.tarData1.7 GB
s1_bare_sparse_vegetation_summer_EUROPE.tarData165.9 MB
s1_bare_sparse_vegetation_winter_AUSTRALIA_OCEANIA.tarData1.9 GB
s1_bare_sparse_vegetation_winter_EUROPE.tarData35.8 MB
s1_built_up_autumn_AFRICA.tarData744.0 MB
s1_built_up_autumn_AUSTRALIA_OCEANIA.tarData166.8 MB
s1_built_up_autumn_NORTH_AMERICA.tarData1.5 GB
s1_built_up_autumn_SOUTH_AMERICA.tarData983.8 MB
s1_built_up_spring_AFRICA.tarData790.0 MB
s1_built_up_spring_AUSTRALIA_OCEANIA.tarData118.4 MB
s1_built_up_spring_NORTH_AMERICA.tarData1.2 GB
s1_built_up_spring_SOUTH_AMERICA.tarData879.5 MB
s1_built_up_summer_AFRICA.tarData424.3 MB
s1_built_up_summer_ASIA.tarData1.3 GB
s1_built_up_summer_AUSTRALIA_OCEANIA.tarData122.1 MB
s1_built_up_summer_NORTH_AMERICA.tarData977.7 MB
s1_built_up_summer_SOUTH_AMERICA.tarData347.1 MB
s1_built_up_winter_AFRICA.tarData801.9 MB
s1_built_up_winter_AUSTRALIA_OCEANIA.tarData88.4 MB
s1_built_up_winter_EUROPE.tarData1.7 GB
s1_built_up_winter_NORTH_AMERICA.tarData1.0 GB
s1_built_up_winter_SOUTH_AMERICA.tarData889.8 MB
s1_herbaceous_wetland_autumn_AUSTRALIA_OCEANIA.tarData531.9 MB
s1_herbaceous_wetland_autumn_NORTH_AMERICA.tarData2.1 GB
s1_herbaceous_wetland_spring_ASIA.tarData2.0 GB
s1_herbaceous_wetland_spring_AUSTRALIA_OCEANIA.tarData489.8 MB
s1_herbaceous_wetland_spring_EUROPE.tarData2.4 GB
s1_herbaceous_wetland_spring_NORTH_AMERICA.tarData1.8 GB
s1_herbaceous_wetland_summer_AUSTRALIA_OCEANIA.tarData322.8 MB
s1_herbaceous_wetland_summer_NORTH_AMERICA.tarData863.1 MB
s1_herbaceous_wetland_winter_ASIA.tarData490.3 MB
s1_herbaceous_wetland_winter_AUSTRALIA_OCEANIA.tarData308.6 MB
s1_herbaceous_wetland_winter_EUROPE.tarData1.3 GB
s1_herbaceous_wetland_winter_NORTH_AMERICA.tarData961.9 MB
s1_shrubland_autumn_EUROPE.tarData1.1 GB
s1_shrubland_spring_EUROPE.tarData982.7 MB
s1_shrubland_summer_EUROPE.tarData1.4 GB
s1_shrubland_winter_EUROPE.tarData872.0 MB
s2_bare_sparse_vegetation_autumn_AUSTRALIA_OCEANIA.tarData2.0 GB
s2_bare_sparse_vegetation_autumn_EUROPE.tarData60.9 MB
s2_bare_sparse_vegetation_autumn_NORTH_AMERICA.tarData1.6 GB
s2_bare_sparse_vegetation_spring_EUROPE.tarData8.6 MB
s2_bare_sparse_vegetation_summer_AUSTRALIA_OCEANIA.tarData716.7 MB
s2_bare_sparse_vegetation_summer_EUROPE.tarData73.6 MB
s2_bare_sparse_vegetation_winter_AUSTRALIA_OCEANIA.tarData822.3 MB
s2_bare_sparse_vegetation_winter_EUROPE.tarData16.0 MB
s2_built_up_autumn_AFRICA.tarData357.1 MB
s2_built_up_autumn_ASIA.tarData2.5 GB
s2_built_up_autumn_AUSTRALIA_OCEANIA.tarData83.5 MB
s2_built_up_autumn_EUROPE.tarData1.4 GB
s2_built_up_autumn_NORTH_AMERICA.tarData746.0 MB
s2_built_up_autumn_SOUTH_AMERICA.tarData482.5 MB
s2_built_up_spring_AFRICA.tarData370.9 MB
s2_built_up_spring_ASIA.tarData2.2 GB
s2_built_up_spring_AUSTRALIA_OCEANIA.tarData57.4 MB
s2_built_up_spring_EUROPE.tarData1.3 GB
s2_built_up_spring_NORTH_AMERICA.tarData556.9 MB
s2_built_up_spring_SOUTH_AMERICA.tarData421.6 MB
s2_built_up_summer_AFRICA.tarData201.4 MB
s2_built_up_summer_ASIA.tarData644.2 MB
s2_built_up_summer_AUSTRALIA_OCEANIA.tarData59.1 MB
s2_built_up_summer_EUROPE.tarData1.2 GB
s2_built_up_summer_NORTH_AMERICA.tarData469.9 MB
s2_built_up_summer_SOUTH_AMERICA.tarData167.3 MB
s2_built_up_winter_AFRICA.tarData380.0 MB
s2_built_up_winter_ASIA.tarData2.1 GB
s2_built_up_winter_AUSTRALIA_OCEANIA.tarData43.8 MB
s2_built_up_winter_EUROPE.tarData831.7 MB
s2_built_up_winter_NORTH_AMERICA.tarData511.9 MB
s2_built_up_winter_SOUTH_AMERICA.tarData438.3 MB
s2_cropland_autumn_AUSTRALIA_OCEANIA.tarData1.9 GB
s2_cropland_spring_AUSTRALIA_OCEANIA.tarData1.5 GB
s2_cropland_summer_AUSTRALIA_OCEANIA.tarData1.4 GB
s2_cropland_winter_AUSTRALIA_OCEANIA.tarData1.3 GB
s2_cropland_winter_NORTH_AMERICA.tarData1.5 GB
s2_herbaceous_wetland_autumn_AFRICA.tarData1.6 GB
s2_herbaceous_wetland_autumn_ASIA.tarData2.0 GB
s2_herbaceous_wetland_autumn_AUSTRALIA_OCEANIA.tarData219.3 MB
s2_herbaceous_wetland_autumn_EUROPE.tarData1.2 GB
s2_herbaceous_wetland_autumn_NORTH_AMERICA.tarData887.1 MB
s2_herbaceous_wetland_autumn_SOUTH_AMERICA.tarData1.6 GB
s2_herbaceous_wetland_spring_AFRICA.tarData2.4 GB
s2_herbaceous_wetland_spring_ASIA.tarData827.0 MB
s2_herbaceous_wetland_spring_AUSTRALIA_OCEANIA.tarData208.3 MB
s2_herbaceous_wetland_spring_EUROPE.tarData966.0 MB
s2_herbaceous_wetland_spring_NORTH_AMERICA.tarData741.5 MB
s2_herbaceous_wetland_spring_SOUTH_AMERICA.tarData1.8 GB
s2_herbaceous_wetland_summer_AFRICA.tarData1.1 GB
s2_herbaceous_wetland_summer_ASIA.tarData1.6 GB
s2_herbaceous_wetland_summer_AUSTRALIA_OCEANIA.tarData131.9 MB
s2_herbaceous_wetland_summer_EUROPE.tarData1.3 GB
s2_herbaceous_wetland_summer_NORTH_AMERICA.tarData354.2 MB
s2_herbaceous_wetland_summer_SOUTH_AMERICA.tarData1.7 GB
s2_herbaceous_wetland_winter_AFRICA.tarData2.4 GB
s2_herbaceous_wetland_winter_ASIA.tarData206.4 MB
s2_herbaceous_wetland_winter_AUSTRALIA_OCEANIA.tarData131.0 MB
s2_herbaceous_wetland_winter_EUROPE.tarData567.9 MB
s2_herbaceous_wetland_winter_NORTH_AMERICA.tarData399.5 MB
s2_herbaceous_wetland_winter_SOUTH_AMERICA.tarData1.6 GB
s2_permanent_water_bodies_autumn_AUSTRALIA_OCEANIA.tarData1.5 GB
s2_permanent_water_bodies_autumn_NORTH_AMERICA.tarData2.1 GB
s2_permanent_water_bodies_autumn_SOUTH_AMERICA.tarData1.3 GB
s2_permanent_water_bodies_spring_AUSTRALIA_OCEANIA.tarData1.9 GB
s2_permanent_water_bodies_spring_SOUTH_AMERICA.tarData1.8 GB
s2_permanent_water_bodies_summer_SOUTH_AMERICA.tarData1.6 GB
s2_permanent_water_bodies_winter_AUSTRALIA_OCEANIA.tarData1.9 GB
s2_permanent_water_bodies_winter_NORTH_AMERICA.tarData1.9 GB
s2_permanent_water_bodies_winter_SOUTH_AMERICA.tarData1.2 GB
s2_shrubland_autumn_AUSTRALIA_OCEANIA.tarData2.4 GB
s2_shrubland_autumn_EUROPE.tarData507.1 MB
s2_shrubland_autumn_NORTH_AMERICA.tarData2.4 GB
s2_shrubland_autumn_SOUTH_AMERICA.tarData1.9 GB
s2_shrubland_spring_AUSTRALIA_OCEANIA.tarData1.8 GB
s2_shrubland_spring_EUROPE.tarData445.2 MB
s2_shrubland_spring_SOUTH_AMERICA.tarData2.4 GB
s2_shrubland_summer_AUSTRALIA_OCEANIA.tarData2.4 GB
s2_shrubland_summer_EUROPE.tarData619.5 MB
s2_shrubland_summer_NORTH_AMERICA.tarData1.5 GB
s2_shrubland_summer_SOUTH_AMERICA.tarData1.9 GB
s2_shrubland_winter_AUSTRALIA_OCEANIA.tarData1.4 GB
s2_shrubland_winter_EUROPE.tarData401.0 MB
s2_shrubland_winter_NORTH_AMERICA.tarData1.5 GB
s2_shrubland_winter_SOUTH_AMERICA.tarData1.9 GB
s2_tree_cover_autumn_AUSTRALIA_OCEANIA.tarData1.6 GB
s2_tree_cover_summer_AUSTRALIA_OCEANIA.tarData1.5 GB
s2_tree_cover_winter_AUSTRALIA_OCEANIA.tarData2.2 GB
s2_tree_cover_winter_SOUTH_AMERICA.tarData2.2 GB
README.mdDocumentation9.7 KB
load_example.pyOther8.4 KB
.gitattributesRepository2.5 KB

License and Download

License
cc-by-4.0
Access
Access requested at publisher
Request access from Christian Sanchez-Leon

Christian Sanchez-Leon grants access through its official repository on Hugging Face. Read the license.