# ESA WorldCover

Een kaart van de hele aarde in elf klassen grondgebruik (bos, akker, bebouwing, water …), op basis van Sentinel-1 en -2. Twee jaargangen, er komen geen nieuwe.

- Uitgever: European Space Agency
- Gebied: Wereld · Laagste detail: 10 meter
- Periode: 2020 en 2021 · Ververst: afgerond
- Toegang: Open · Licentie: CC BY 4.0
- Koppelsleutels: coördinaten
- Status: grijs
- URL: https://esa-worldcover.org

## Wat kun je ermee?
- **Hoeveel van je gemeente is bebouwd?.** Tel de pixels per klasse binnen de gemeentegrens.

## Interessante koppelingen
- Groen per buurt → [pdok-wijkenbuurten](https://www.opendataindex.nl/bron/pdok-wijkenbuurten.md) via geometrie. Knip het raster per buurt uit en bereken het aandeel bos en gras.

## Vergelijkbare bronnen
- [Bestand Bodemgebruik (CBS)](https://www.cbs.nl): Officieel Nederlands grondgebruik, nauwkeuriger maar minder vaak bijgewerkt.

## API (STAC-API en tegel/statistiek-API (Microsoft Planetary Computer); Cloud-Optimized GeoTIFF op S3)

- Basis: https://planetarycomputer.microsoft.com/api
- Toegang: Zoeken, tegels en statistiek zonder account. De ruwe GeoTIFF's op Azure vragen een SAS-token, dat je anoniem ophaalt bij /sas/v1/token/esa-worldcover (ongeveer 45 minuten geldig). De ESA-bucket op AWS is helemaal open. (getest)
- Formaten: json, geojson, png, geotiff
- Omvang: 8 kaartbladen van 3 × 3 graden over Nederland (N48E003, N48E006, N51E003, N51E006, elk voor 2020 en 2021) (getest)
- Filteren: STAC: bbox, datetime en CQL2 op de queryables. Daarna rekenen op het raster met de data-API (uitsnede of statistiek per GeoJSON-vlak).; 

### Endpoints
- `GET /stac/v1/collections/esa-worldcover/items?bbox=…`: Kaartbladen in een gebied, met links naar de COG (map, input_quality), tilejson en een voorbeeldplaatje.
- `GET/POST /stac/v1/search`: Zoeken over collecties met bbox, datetime, filter (CQL2) en sortby.
- `GET /stac/v1/collections/esa-worldcover/queryables`: Filterbare velden: o.a. esa_worldcover:product_tile, start_datetime, proj:epsg.
- `GET /data/v1/item/bbox/{minx},{miny},{maxx},{maxy}/{w}x{h}.png?collection=esa-worldcover&item={id}&assets=map&colormap_name=esa-worldcover`: Uitsnede als PNG in de officiële kleuren (256 × 256 voor Amsterdam: 18 kB, 0,5 s).
- `POST /data/v1/item/statistics?collection=esa-worldcover&item={id}&assets=map&categorical=true&max_size=1024`: Stuur een GeoJSON-vlak mee en krijg een histogram: pixels per klasse binnen dat vlak.
- `GET /data/v1/item/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?collection=esa-worldcover&item={id}&assets=map&colormap_name=esa-worldcover`: XYZ-tegels voor een webkaart (het adres staat in tilejson.json van het item).
- `GET /data/v1/legend/classmap/esa-worldcover`: De kleurcodes per klasse als JSON (geen legendaplaatje).
- `GET /sas/v1/token/esa-worldcover`: Tijdelijk leestoken (token, msft:expiry) voor de GeoTIFF's in Azure Blob.

### Parameters
- `bbox`: west,zuid,oost,noord in WGS84. Nederland: 3.2,50.7,7.3,53.6 geeft 8 items. (getest)
- `item`: Kaartbladnaam ESA_WorldCover_10m_<jaar>_<v100|v200>_<N51E003>: hoek linksonder van een vak van 3 × 3 graden. (getest)
- `assets`: map (de klassen) of input_quality (aantal bruikbare opnamen). (uit de beschrijving)
- `colormap_name`: esa-worldcover geeft de officiële kleuren. (getest)
- `categorical`: Bij statistics: tellen per klasse in plaats van een gewoon histogram. (getest)
- `max_size`: Bij statistics: maximale rastergrootte; zonder max_size gaf een groot vlak HTTP 502. (ervaring)

### Klassen in het raster (pixelwaarde) (11)
`10` klasse, `20` klasse, `30` klasse, `40` klasse, `50` klasse, `60` klasse, `70` klasse, `80` klasse, `90` klasse, `95` klasse, `100` klasse

### Limieten en valkuilen
- Geen limiet gedocumenteerd voor anonieme aanroepen. Statistiek over een vlak van ~7 × 8 km kwam in 0,3 s terug (734.208 pixels). (getest)
- Er komen geen nieuwe jaargangen: 2020 (versie 1.0.0) en 2021 (versie 2.0.0) zijn met verschillende algoritmen gemaakt. Een verschil tussen de jaren is dus deels een methodeverschil, geen echte verandering. (uit de beschrijving)
- De eigen WMS van ESA/VITO (services.terrascope.be/wms/v2) gaf op 15 en 16 oktober 2026 alleen een HTTP/2-fout (INTERNAL_ERROR); daarom de Planetary Computer als ingang. (getest)
- De Planetary Computer-STAC geeft geen numberMatched: tel zelf de features of pagineer via rel=next. (getest)
- Een pixel is 1/12.000 graad (EPSG:4326; een kaartblad is 36.000 × 36.000 pixels). Op 52° noord is dat ongeveer 9,3 × 5,7 m = 53 m², niet 100 m². Reken pixels pas om naar oppervlak na projecteren naar RD of met de breedtegraad erbij. (getest)

### Voorbeeld
```
https://planetarycomputer.microsoft.com/api/stac/v1/search?collections=esa-worldcover&bbox=4.7,52.2,5.1,52.5&limit=2
```

## Wat je ermee kunt bouwen
- [Natuur in je buurt: welke soorten zijn er gezien en hoe groen is het?](https://www.opendataindex.nl/bouwen/biodiversiteit-buurt.md): Een app die voor elk punt in Nederland laat zien welke planten en dieren er in een straal van 1 km zijn waargenomen, hoeveel van de grond groen is en hoe ver het dichtstbijzijnde Natura 2000-gebied ligt.


## Voorbeelden met echte cijfers (2)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Landbedekking van de Randstad (vak tussen Amsterdam, Den Haag, Rotterdam en Utrecht): grasland is het grootste deel, 41% in 2021** (2021). Tabel ESA_WorldCover_10m_2021_v200_N51E003. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/worldcover-randstad-aandeel)
  - `https://planetarycomputer.microsoft.com/api/data/v1/item/statistics?collection=esa-worldcover&item=ESA_WorldCover_10m_2021_v200_N51E003&assets=map&categorical=true&max_size=1024 (POST, vlak 4.25,51.8,5.35,52.4)`
- **De Randstad van boven: steden in rood rond een geel Groene Hart, uit ESA WorldCover 2021** (2021). Tabel ESA_WorldCover_10m_2021_v200_N51E003. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/worldcover-randstad-kaart)
  - `https://planetarycomputer.microsoft.com/api/data/v1/item/bbox/4.25,51.8,5.35,52.4/900x800.png?collection=esa-worldcover&item=ESA_WorldCover_10m_2021_v200_N51E003&assets=map&colormap_name=esa-worldcover`
