Skip to content

worldcover statistics algorithm #165

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
[{
"id": "worldcover_statistics",
"type": "openeo",
"description": "World cover statistics.",
"backend": "openeofed.dataspace.copernicus.eu",
"process_graph": {
"worldcover_statistics": {
"arguments": {
"geometries": {
"coordinates": [
[
[
6.990046173926822,
50.92370033913926
],
[
6.990915651805,
50.8595444392102
],
[
7.239586324963913,
50.84527557041392
],
[
7.238716847085734,
50.92917965051333
],
[
6.990046173926822,
50.92370033913926
]
]
],
"type": "Polygon"
}
},
"description": "Land cover statistics for one or more areas based on ESA WorldCover 2021, provided by Terrascope.",
"namespace": "https://github.com/raw/ESA-APEx/apex_algorithms/refs/heads/worldcover_stats/algorithm_catalog/vito/worldcover_statistics/openeo_udp/worldcover_statistics.json",
"process_id": "worldcover_statistics",
"result": true
}
},
"reference_data": {}
}]
16 changes: 16 additions & 0 deletions algorithm_catalog/vito/worldcover_statistics/openeo_udp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 2021 landcover statistics

Computes landcover statistics over multiple user provided areas, based on the ESA WorldCover product.

As input, the service takes GeoJSON, which can also be a FeatureCollection defining multiple feature.

The output is a csv file containing the fraction of a specific landcover present in each area.

This service is maintained and provided by Terrascope.

![statistics](statistics.png)

## Methodology

The European Space Agency (ESA) WorldCover 10 m 2021 product provides a global land cover map for 2021 at 10 m resolution based on Sentinel-1 and Sentinel-2 data. The WorldCover product comes with 11 land cover classes, aligned with UN-FAO's Land Cover Classification System, and has been generated in the framework of the ESA WorldCover project.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
{
"id": "worldcover_statistics",
"summary": "Land cover statistics for one or more areas based on ESA WorldCover 2021, provided by Terrascope.",
"description": "# 2021 landcover statistics\n\nComputes landcover statistics over multiple areas, based on the ESA WorldCover product.\n\nAs input, the service takes GeoJSON, which can also be a FeatureCollection defining multiple feature.\n\nThe output is a csv file containing the fraction of a specific landcover present in each area.\n\nThis service is maintained and provided by Terrascope.\n\n![statistics](statistics.png)\n\n## Methodology\n\nThe European Space Agency (ESA) WorldCover 10 m 2021 product provides a global land cover map for 2021 at 10 m resolution based on Sentinel-1 and Sentinel-2 data. The WorldCover product comes with 11 land cover classes, aligned with UN-FAO's Land Cover Classification System, and has been generated in the framework of the ESA WorldCover project.\n\n",
"process_graph": {
"load4": {
"process_id": "load_collection",
"arguments": {
"spatial_extent": null,
"temporal_extent": null,
"bands": [
"MAP"
],
"id": "ESA_WORLDCOVER_10M_2021_V2"
}
},
"apply6": {
"process_id": "apply_dimension",
"arguments": {
"data": {
"from_node": "load4"
},
"dimension": "bands",
"process": {
"process_graph": {
"1": {
"arguments": {
"data": [
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 10
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 20
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 30
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 40
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 50
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 60
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 70
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 80
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 90
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 95
},
"process_id": "eq",
"result": true
}
}
},
{
"process_graph": {
"eq1": {
"arguments": {
"x": {
"from_parameter": "data"
},
"y": 100
},
"process_id": "eq",
"result": true
}
}
}
]
},
"process_id": "array_create",
"result": true
}
}
}
}
},
"rename7": {
"process_id": "rename_labels",
"arguments": {
"data": {
"from_node": "apply6"
},
"dimension": "bands",
"target": [
"treecover",
"shrubland",
"grassland",
"cropland",
"builtup",
"bare/sparse vegetation",
"snow and ice",
"water",
"herbaceous wetland",
"mangroves",
"moss and lichen"
]
}
},
"aggregate5": {
"process_id": "aggregate_spatial",
"arguments": {
"data": {
"from_node": "rename7"
},
"geometries": {
"from_parameter": "geometries"
},
"reducer": {
"process_graph": {
"count1": {
"arguments": {
"data": {
"from_parameter": "data"
}
},
"process_id": "mean",
"result": true
}
}
}
}
},
"save3": {
"process_id": "save_result",
"arguments": {
"data": {
"from_node": "aggregate5"
},
"format": "CSV"
},
"result": true
}
},
"parameters": [
{
"name": "geometries",
"description": "Geometries for which the statistics will be computed, as a GeoJSON FeatureCollection. Feature properties are preserved for vector data cubes and all GeoJSON Features.\n\nOne value will be computed per label in the dimension of type `geometries`, GeoJSON `Feature` or `Geometry`. For a `FeatureCollection` multiple values will be computed, one value per contained `Feature`. No values will be computed for empty geometries. For example, a single value will be computed for a `MultiPolygon`, but two values will be computed for a `FeatureCollection` containing two polygons.\n\n- For **polygons**, the process considers all pixels for which the point at the pixel center intersects with the corresponding polygon (as defined in the Simple Features standard by the OGC).\n- For **points**, the process considers the closest pixel center.\n- For **lines** (line strings), the process considers all the pixels whose centers are closest to at least one point on the line.\n\nThus, pixels may be part of multiple geometries and be part of multiple aggregations. No operation is applied to geometries that are outside of the bounds of the data.",
"schema": {
"type": "object",
"subtype": "geojson"
}
}
]
}
Loading
Loading