ESA GSTP programme · Geomatrix UAB
Every Sentinel-1 acquisition over Europe since 2014, radiometrically terrain-corrected to γ⁰ backscatter and indexed as an Open Data Cube — then served three ways: through STAC and Python for the people who want the pixels, through eight browser applications for the people who want the answer, and through an OGC map service for everyone in between.
Level-1 GRD, radiometrically terrain-corrected to gamma-nought and stored as one GeoTIFF per acquisition and polarisation, with EO3 metadata alongside every file. Nothing is pre-aggregated: indices, composites and soil moisture are derived on demand from the dual-polarisation pair, so you can experiment without waiting for a product to be generated.
Why SAR and not optical: C-band sees through cloud and works at night, so the observation cadence is set by the orbit rather than the weather. That is the whole reason an unbroken decade of European growing seasons exists at all.
Counts and date ranges above are read live from /api/stats when this page loads. The full collection metadata, footprints and per-dataset detail are in the ODC Explorer and the STAC Browser.
Each application is a different question asked of the same archive. They share one design system, one API key and one sign-in, so moving between them carries your context with you. Every one of them has a manual at /help/.
The ODC Explorer — collections browsed by space and time, dataset footprints on a map, acquisition timelines, preview thumbnails and the STAC metadata behind each record.
Browse the collectionsThe Radiant Earth STAC Browser over the full archive — map-based search, collection filtering and GeoJSON export of a result set. The standards-compliant route in, for anyone integrating the catalogue.
Open the catalogueA Leaflet time-series viewer over the whole archive, tiled by the OGC map service. Coverage per acquisition is measured, not guessed from the footprint — the Mapper renders each candidate scene over your area and counts pixels, so a scene that would come back blank is never offered. Frames export georeferenced.
Open the mapThe polarimetric analysis workstation. Draw or import a polygon and every derived index is computed in real time — VV, VH, RVI, CRB, DPSVI, NDPI, θc, Hc and soil moisture — with a dual-axis chart, monthly statistics, orbit filtering and the composite-image window.
Open the workstationRaster algebra in the browser. Compose an expression over named scenes and bands, have it evaluated server-side and rendered straight back onto the map. The display stretch is calibrated, not guessed — histogram equalisation is the default because it was measured against the alternatives on real output.
Open the toolboxParcel-level monitoring built on CAP declarations. Phenology markers from the backscatter curve, false-colour field composites under a country-wide stretch, peer benchmarking against every same-crop field within 5 km, and crop-damage detection for standing water and storm lodging.
Open the panelPersistent change detection over thousands of objects. A pixel-level state machine with configurable confirmation logic — so a change has to hold before it is reported — plus a bi-temporal inspector, per-object history and a detected/confirmed/dismissed workflow.
Open the trackerDecade-scale detection of activity points — vessels, vehicle clusters, staging grounds — by trading spatial resolution for temporal depth. Ten years of revisits expose recurrence and seasonality that no single image can show. Built on the Tracker pipeline.
Open the previewOperator surfaces. The publishing control plane (/manager/), user and plan administration (/admin/) and the platform appearance panel (/config/) are restricted to the administrators group and are not part of the public entry points above.
Everything below is derived on request from the dual-polarisation pair. The methods are documented rather than hidden — each one names the assumption it makes and the conditions under which it degrades.
Polygon or point γ⁰ over any date range, with the full polarimetric index set computed alongside it — RVI, CRB, DPSVI, NDPI and the Bhogapurapu θc/Hc pair.
POST /api/timeseriesPer-acquisition PNG chips under a global stretch, plus simple, agriculture and temporal false-colour composites. Field composites use a country-wide, agriculture-masked stretch, so a colour means the same thing on every parcel.
POST /api/imagechipsExpressions composed in the browser over named scenes and bands, parsed to a safe AST and evaluated server-side. Results are capped at 1500 px across the area, and the interface tells you the pixel size before you run.
POST /api/algebra-evalA pixel-level state machine rather than a bi-temporal difference: a candidate must survive a configurable number of confirming acquisitions before it is reported, which is what separates a real change from speckle.
Tracker · confirmation logicEmergence, canopy closure, growth onset and harvest, fitted from the VH/CRB curve. A parcel is then ranked against every same-crop field within 5 km on every acquisition, bounded by its own growing period — nothing after harvest is graded.
POST /api/neighbors-bandRelative surface soil moisture with a vegetation-corrected variant, and per-parcel detection of standing water and storm lodging — with wild-animal damage separated from lodging by its rate of onset and reported as a candidate, not a verdict.
POST /api/agrisk-scanThe browser applications are one surface over the cube; they are not the only one. Connect the ODC client directly for full xarray access, or go through the STAC API from anything that speaks it.
The same engine the web applications run on. Spatial and temporal subsetting, lazy loading through Dask, and the whole scientific Python stack downstream of the Dataset you get back.
import datacube import matplotlib.pyplot as plt dc = datacube.Datacube(app="sagris-notebook") ds = dc.load( product="sagris_s1_rtc_vh_img_europe", x=(24.05, 24.15), y=(54.65, 54.75), time=("2025-03-01", "2025-08-31"), output_crs="EPSG:4326", resolution=(-0.0001, 0.0001), dask_chunks={"time": 1, "x": -1, "y": -1}, ) # DN is uint16; gamma-nought is DN / 1000, with 0 as NODATA g0 = ds.vh.where(ds.vh > 0) / 1000.0 g0.mean(dim=["x", "y"]).plot() plt.show()
Search the catalogue and pull per-acquisition statistics with nothing but an API key and pystac-client. Runs unchanged in a notebook, in Colab, or in a script on a server.
# pip install pystac-client requests pandas matplotlib from pystac_client import Client import requests, pandas as pd BASE = "https://odcube.landimage.info" HDRS = {"X-API-Key": "YOUR_API_KEY"} catalog = Client.open(f"{BASE}/stac/", headers=HDRS) items = catalog.search( collections=["sagris_s1_rtc_vh_img_europe"], bbox=[24.10, 54.68, 24.12, 54.70], datetime="2025-03-01/2025-08-31", ).items() r = requests.post(f"{BASE}/api/timeseries", headers=HDRS, json={"polarisation": "VH", "date_from": "2025-03-01", "date_to": "2025-08-31", "geometry": MY_FIELD_GEOJSON}) df = pd.DataFrame(r.json()["results"])
Desktop GIS and OGC clients. The catalogue answers at /stac/ for QGIS 3.x and ArcGIS Pro, and the map service at /ows/ speaks WMS and WMTS for anything that can add a layer by URL. Pass your key as the X-API-Key header; /stac/ and /ows/ are open, so a map layer needs no key at all. The interactive test console is at /demo/api_test.html.
One key, one header, three families of endpoint: the STAC catalogue for discovery, the OGC map service for rendering, and the data API for measurement. Authentication fails closed — if the auth service cannot be reached, the request is refused rather than allowed.
Feature access is enforced in the API rather than the interface: a plan without the export flag receives HTTP 403 with upgrade guidance, whichever client asked. Demo access needs no registration at all and is rate limited per address.
| Method | Endpoint | Returns |
|---|---|---|
| GET | /api/stats | Index statistics, per collection |
| GET | /api/footprint/<product> | Aggregate GeoJSON footprint |
| GET | /api/dataset-timeline/<product> | Acquisition dates for a collection |
| POST | /api/timeseries | γ⁰ and indices over a point or polygon |
| POST | /api/imagechips | PNG chips for a bbox and date list |
| POST | /api/datacube | CF NetCDF-4 subset — plan gated |
| POST | /api/algebra-eval | Raster-algebra expression result |
| POST | /api/algebra-scenes | Full-coverage scene pairs for an area |
| POST | /api/neighbors-band | Peer percentile band across parcels |
| POST | /api/agrisk-scan | Crop-damage rasters, events and series |
Extraction endpoints carry hard limits by design — /api/datacube at 1° per side and 256 MB uncompressed, algebra at 1500 px across the area. The full inventory, including the Tracker and Farmer service endpoints, is in the API documentation.
The data cube is the raw material. The SAGRIS map catalogue is what comes out of it: land cover status and land use change maps for 45 countries, one pair per growing season since 2015 — 980 layers, produced from 1.2 million processed Sentinel-1 images.
Two products, and they answer different questions. Status maps farming intensity — how hard the ground is worked across the season. Change maps crop type through the calendar itself: blue where the signal peaks earliest in the period, green in the middle, red at the end, so the colour of a field is the timing of its growth.
Each country page carries an interactive map at tile resolution, downloadable products and processing statistics. The catalogue answers on its own domain at sagris.eu and inside landimage.info — the same page, so a deep link works from either.
Five tiers, all enforced server-side from one plans table. Registration is self-service through Auth0 up to Pro; Enterprise is arranged directly. Quotas below are the limits the API actually applies.
Four ways into the same archive, depending on what you came for.
A free tier, the full STAC catalogue, and direct ODC access from Python — over a decade of unbroken European coverage to test a method against.
Register for a keyField-level phenology, peer benchmarking and damage assessment on declared parcels, with the evidence behind every reading shown rather than asserted.
Open the Farmer panelPersistent change detection across thousands of objects, with confirmation logic that separates a real change from radar speckle.
Open the TrackerClient-specific data cubes, multi-sensor extension and delivery straight into an existing information system — the direction the platform is heading.
Start a conversationData access, evaluation licences, commercial products and project partnerships all start the same way.
+370 699 99940 · Mokslininkų 2A, 08412 Vilnius, Lithuania