Seasonal mosaics
Every season, EOCube.ro publishes a (near-)cloudless true-colour mosaic of its whole area of interest (Romania, the Republic of Moldova and their neighbours) from Sentinel-2 Level-2A imagery: 10 m pixels, one seamless image per season. The files are public Cloud-Optimized GeoTIFFs (COG) you can open from any GIS without downloading them whole, and the platform’s TiTiler serves them as map tiles.
The map shows the newest season on the tiles.eocube.ro basemap.
Available seasons
Seasons are meteorological: winter (DJF) is December to February and carries the year of its January, spring (MAM) March to May, summer (JJA) June to August, autumn (SON) September to November. A season appears once it has ended and its mosaic is built.
| Season | Period | COG files | Tiles (TiTiler) |
|---|---|---|---|
| Loading… | |||
Each season is a STAC item in the collection sentinel-2-l2a-mosaic-seasonal (the AOI-wide items; the same collection holds one mosaic per Sentinel-2 tile). A season can be rebuilt when the method improves, and its file addresses then change: find them through the catalog, as the examples below do, rather than hard-coding them.
Files
| Asset | Content | Size |
|---|---|---|
visual | True colour (red, green, blue), 8 bits, JPEG-compressed COG. For viewing and maps | ~2 GB |
visual_lossless | The same image, lossless (LZW). For analysis and print | ~19 GB |
quality | Per pixel, the quality class of the observation used (1 = clear … 9 = cloud, 0 = no observation) | 35–450 MB |
thumbnail | A small JPEG preview | — |
All the rasters are in EPSG:3035 (ETRS89 / LAEA Europe) on a fixed 10 m grid, with nodata 0. They are Sentinel-2 L2A surface-reflectance composites; the colours are a fixed display stretch, the same for every season, so seasons compare directly.
Map tiles (TiTiler)
Each item links its tiles: rel="xyz" (a {z}/{x}/{y} template) and rel="tilejson". They are TiTiler URLs over the visual COG, in Web Mercator, zoom 4–13:
https://titiler.functions.svc.uvt-01.eocube.ro/cog/tiles/WebMercatorQuad/{z}/{x}/{y}.png?url=<visual COG URL, URL-encoded>Use the XYZ · Copy button in the table above, or read the link from the item:
curl -s -G 'https://stac.eocube.ro/search' \
--data-urlencode 'collections=sentinel-2-l2a-mosaic-seasonal' \
--data-urlencode 'filter-lang=cql2-text' \
--data-urlencode "filter=\"eocube:mosaic_scope\" = 'aoi' AND id LIKE '%-JJA-%'" \
--data-urlencode 'sortby=-start_datetime' --data-urlencode 'limit=1' \
| jq -r '.features[0].links[] | select(.rel == "xyz") | .href' | head -n 1In QGIS: XYZ Tiles ▸ New Connection with that URL, or, better for analysis, Layer ▸ Add Layer ▸ Add Raster Layer… ▸ Protocol: HTTP(S) with the COG URL, which keeps the native 10 m grid.
Reading the COGs
import rasterio
from rasterio.warp import transform_bounds
from rasterio.windows import from_bounds
url = "https://storage.svc.uvt-01.eocube.ro/mosaic/…/visual.tif" # the item's visual asset href
with rasterio.open(url) as src:
bounds = transform_bounds("EPSG:4326", src.crs, 21.1, 45.7, 21.35, 45.8)
rgb = src.read(window=from_bounds(*bounds, src.transform))
print(rgb.shape) # (3, rows, cols), read with HTTP range requestsgdalinfo /vsicurl/https://storage.svc.uvt-01.eocube.ro/mosaic/…/visual.tifAttribution
Credit the imagery with the item’s attribution property, for example:
EOCube.Ro Product (ROCS Project, EOCube.ro, West University of Timișoara). Contains modified Copernicus Sentinel data 2026.On a map with the basemap, add the basemap attribution as well.
Also in the catalog: monthly mosaics, per Sentinel-2 tile and AOI-wide, in the collection sentinel-2-l2a-mosaic-monthly.