From 5ec51f4e764a434c288067542bd6e18a5d37cd6e Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:04:12 +0200 Subject: [PATCH 01/44] Add stac_dist/corine_land_cover/corine_land_cover.json for pull request submission --- .../corine_land_cover/corine_land_cover.json | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 stac_dist/corine_land_cover/corine_land_cover.json diff --git a/stac_dist/corine_land_cover/corine_land_cover.json b/stac_dist/corine_land_cover/corine_land_cover.json new file mode 100644 index 00000000..25b0cb38 --- /dev/null +++ b/stac_dist/corine_land_cover/corine_land_cover.json @@ -0,0 +1,122 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "properties": { + "license": null, + "description": "It consists of an inventory of land cover in 44 cases.", + "area_cover": "EEA-38+UK", + "crs": "EPSG:3035", + "providers": [ + { + "organization": "EEA", + "organization_name": null, + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": "https://land.copernicus.eu/pan-european/corine-land-cover", + "comments": "The present 100m raster dataset is the 2018 CLC status layer modified for the purpose of consistent statistical analysis in the land cover change accounting system at EEA.\n\nCORINE Land Cover (CLC) data are produced from 1986 for European (EEA member or cooperating) countries. Altogether five mapping inventories were implemented in this period, producing five status layers (CLC1990, CLC2000, CLC2006, CLC2012, CLC2018) and four CLC-Change (CLCC) layers for the corresponding periods (1990-2000, 2000-2006, 2006-2012, 2012-2018). Pan-European CLC and CLCC data are available as vector and raster products." + } + ], + "dataSource": "https://land.copernicus.eu/pan-european/corine-land-cover", + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + -31.561261, + 44.820775 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 100 + }, + "y": { + "axis": "y", + "extent": [ + 27.405827, + 71.409109 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 100 + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "time": { + "extent": [ + "1990-01-01T00:00:00Z", + "2018-01-01T00:00:00Z" + ], + "type": "temporal", + "unit_of_measure": "y", + "interpolation": null, + "regular": false + } + }, + "datetime": "2000-01-01T00:00:00Z", + "raster:bands": [ + { + "band_name": null, + "unit": "categorial, numeric code", + "nodata": null, + "data_type": "int8", + "definition": "CLC code - each code represents a colour", + "description": "Each colour is a landform feature (urban area, forests, etc)", + "category_list": "Multiple values", + "comment": null, + "interpolation": "Nearest\u200b" + } + ], + "title": "Corine Land Cover", + "datasource_type": "grid", + "personalData": null, + "Provenance_name": "EO-based, produced by countries", + "preprocessing": null, + "documentation": null, + "keywords": null, + "use_case_S4E": 1, + "use_case_WER": 2, + "use_case_NHM_2": null, + "use_case_NILU": null, + "use_case_NHM": 1, + "platform": "Both", + "ingestion_status": "Completed, year as integer, (1990,2000,2006,2012,2018)" + }, + "geometry": { + "type": "Polygon", + "coordinates": [] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": {}, + "bbox": [], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ], + "id": "corine_land_cover" +} \ No newline at end of file From fc3e805e0199acb2ac05209daa0a631d0fcef501 Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:04:48 +0200 Subject: [PATCH 02/44] Add stac_dist/dominant_leaf_type/dominant_leaf_type.json for pull request submission --- .../dominant_leaf_type.json | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 stac_dist/dominant_leaf_type/dominant_leaf_type.json diff --git a/stac_dist/dominant_leaf_type/dominant_leaf_type.json b/stac_dist/dominant_leaf_type/dominant_leaf_type.json new file mode 100644 index 00000000..cc3b93f4 --- /dev/null +++ b/stac_dist/dominant_leaf_type/dominant_leaf_type.json @@ -0,0 +1,122 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "properties": { + "license": null, + "description": "Denotes the leaf type dominant in a region - broadleaf or coniferous", + "area_cover": "EEA-38+UK", + "crs": "EPSG:3035", + "providers": [ + { + "organization": "EEA", + "organization_name": null, + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": "https://land.copernicus.eu/pan-european/high-resolution-layers/forests/dominant-leaf-type/status-maps", + "comments": "https://sdi.eea.europa.eu/catalogue/srv/eng/catalog.search#/metadata/7b28d3c1-b363-4579-9141-bdd09d073fd8" + } + ], + "dataSource": "https://land.copernicus.eu/pan-european/high-resolution-layers/forests/dominant-leaf-type/status-maps", + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + -10.6198, + 44.8212 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 20 + }, + "y": { + "axis": "y", + "extent": [ + 34.5619, + 71.1855 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 20 + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "time": { + "extent": [ + "2012-01-01T00:00:00Z", + "2015-01-01T00:00:00Z" + ], + "type": "temporal", + "unit_of_measure": "y", + "interpolation": null, + "regular": false + } + }, + "datetime": "2000-01-01T00:00:00Z", + "raster:bands": [ + { + "band_name": "Leaf type", + "unit": "categorial value", + "nodata": null, + "data_type": "int8", + "definition": "Type of leaf", + "description": "Describes the leaf type that is dominant in a region", + "category_list": "Non forest, broadleaf, coniferous, outside area", + "comment": null, + "interpolation": null + } + ], + "title": "High Resolution Layer - Forest -Dominant Leaf Type", + "datasource_type": "grid", + "personalData": null, + "Provenance_name": "EO-based", + "preprocessing": null, + "documentation": null, + "keywords": null, + "use_case_S4E": 1, + "use_case_WER": 2, + "use_case_NHM_2": null, + "use_case_NILU": null, + "use_case_NHM": 2, + "platform": "Both", + "ingestion_status": "Completed, year as integer, (2012,2015,2018)" + }, + "geometry": { + "type": "Polygon", + "coordinates": [] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": {}, + "bbox": [], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ], + "id": "dominant_leaf_type" +} \ No newline at end of file From e18a8596604545d3343eef001d596c7dba41d8e6 Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:05:02 +0200 Subject: [PATCH 03/44] Add stac_dist/grassland_status/grassland_status.json for pull request submission --- .../grassland_status/grassland_status.json | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 stac_dist/grassland_status/grassland_status.json diff --git a/stac_dist/grassland_status/grassland_status.json b/stac_dist/grassland_status/grassland_status.json new file mode 100644 index 00000000..a1389ff7 --- /dev/null +++ b/stac_dist/grassland_status/grassland_status.json @@ -0,0 +1,122 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "properties": { + "license": null, + "description": "Denotes grassland and non grassland areas", + "area_cover": "EEA-38+UK", + "crs": "EPSG:3035", + "providers": [ + { + "organization": "EEA", + "organization_name": null, + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": "https://land.copernicus.eu/pan-european/high-resolution-layers/grassland", + "comments": "The HRL Grassland 2018 100 m aggregate raster product provides a basic land cover classification with two thematic classes (grassland / non-grassland) at 100m spatial resolution, covering the EEA38 area and the United Kingdom. The production of the High Resolution Grassland layers was coordinated by the European Environment Agency (EEA) in the frame of the EU Copernicus programme.\n\nThe main High Resolution Grassland product is the Grassland layer. This grassy and non-woody vegetation baseline product includes all kinds of grasslands: managed grassland, semi-natural grassland and natural grassy vegetation. It is a binary status layer for the 2015 reference year mapping grassland and all non-grassland areas in 20m and (aggregated) 100m pixel size and, for the 2018 reference year, in 10m and (aggregated) 100m pixel size." + } + ], + "dataSource": "https://land.copernicus.eu/pan-european/high-resolution-layers/grassland", + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + -56.506, + 72.907 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 10 + }, + "y": { + "axis": "y", + "extent": [ + 24.284, + 72.665 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 10 + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "time": { + "extent": [ + "2018-01-01T00:00:00Z", + "2018-01-01T00:00:00Z" + ], + "type": "temporal", + "unit_of_measure": "y", + "interpolation": null, + "regular": false + } + }, + "datetime": "2000-01-01T00:00:00Z", + "raster:bands": [ + { + "band_name": "Value representing grassland", + "unit": "categorial value", + "nodata": null, + "data_type": "int8", + "definition": "Denotes if class is grassland, or not (or is outside area)", + "description": "Denotes if class is grassland, or not (or is outside area)", + "category_list": "Non grassland, grassland, outside area", + "comment": null, + "interpolation": null + } + ], + "title": "High Resolution Layer - Grassland", + "datasource_type": "grid", + "personalData": null, + "Provenance_name": "EO-based", + "preprocessing": null, + "documentation": null, + "keywords": null, + "use_case_S4E": 1, + "use_case_WER": 2, + "use_case_NHM_2": null, + "use_case_NILU": null, + "use_case_NHM": 2, + "platform": "Both", + "ingestion_status": "Completed, year as integer, (2015,2018)" + }, + "geometry": { + "type": "Polygon", + "coordinates": [] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": {}, + "bbox": [], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ], + "id": "grassland_status" +} \ No newline at end of file From cdcc4bfdb8d68c9de1c0b84e7eb18fd526dd9e01 Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:05:11 +0200 Subject: [PATCH 04/44] Add stac_dist/water_and_wetness/water_and_wetness.json for pull request submission --- .../water_and_wetness/water_and_wetness.json | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 stac_dist/water_and_wetness/water_and_wetness.json diff --git a/stac_dist/water_and_wetness/water_and_wetness.json b/stac_dist/water_and_wetness/water_and_wetness.json new file mode 100644 index 00000000..69bbf653 --- /dev/null +++ b/stac_dist/water_and_wetness/water_and_wetness.json @@ -0,0 +1,122 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "properties": { + "license": null, + "description": "Denotes water, wetness areas and sea water", + "area_cover": "EEA-38+UK", + "crs": "EPSG:3035", + "providers": [ + { + "organization": "EEA", + "organization_name": null, + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": "https://land.copernicus.eu/pan-european/high-resolution-layers/water-wetness", + "comments": "The Copernicus High Resolution Water and Wetness (WAW) 2018 layer is a thematic product showing the occurrence of water and wet surfaces over the period from 2012 to 2018 for the EEA38 area and the United Kingdom.\nTwo products are available:\n- The main Water and Wetness (WAW) product, with defined classes of (1) permanent water, (2) temporary water, (3) permanent wetness and (4) temporary wetness.\n- The additional expert product: Water and Wetness Probability Index (WWPI).\nThe products show the occurrence of water and indicate the degree of wetness in a physical sense, assessed independently of the actual vegetation cover and are thus not limited to a specific land cover class and their relative frequencies." + } + ], + "dataSource": "https://land.copernicus.eu/pan-european/high-resolution-layers/water-wetness", + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + -31.285, + 44.807 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 10 + }, + "y": { + "axis": "y", + "extent": [ + 27.642, + 71.165 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 10 + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "time": { + "extent": [ + "2018-01-01T00:00:00Z", + "2018-01-01T00:00:00Z" + ], + "type": "temporal", + "unit_of_measure": "y", + "interpolation": null, + "regular": false + } + }, + "datetime": "2000-01-01T00:00:00Z", + "raster:bands": [ + { + "band_name": "Water type", + "unit": "categorial value", + "nodata": null, + "data_type": "int8", + "definition": "Type of water and wetness", + "description": "Type of water and wetness", + "category_list": "Dry, permanent water, temporary water, permanent wet, temporary wet, sea water, unclassifiable, outside area", + "comment": null, + "interpolation": null + } + ], + "title": "High Resolution Layer - Water & Wetness", + "datasource_type": "grid", + "personalData": null, + "Provenance_name": "EO-based", + "preprocessing": null, + "documentation": null, + "keywords": null, + "use_case_S4E": 1, + "use_case_WER": 2, + "use_case_NHM_2": null, + "use_case_NILU": null, + "use_case_NHM": 2, + "platform": "Both", + "ingestion_status": "Completed, year as integer, (2015,2018)" + }, + "geometry": { + "type": "Polygon", + "coordinates": [] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": {}, + "bbox": [], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ], + "id": "water_and_wetness" +} \ No newline at end of file From b8ea50a3dc4ca30c1472863c0435c0f67e90e104 Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:05:26 +0200 Subject: [PATCH 05/44] Add stac_dist/european_settlement_map/european_settlement_map.json for pull request submission --- .../european_settlement_map.json | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 stac_dist/european_settlement_map/european_settlement_map.json diff --git a/stac_dist/european_settlement_map/european_settlement_map.json b/stac_dist/european_settlement_map/european_settlement_map.json new file mode 100644 index 00000000..8f6127ac --- /dev/null +++ b/stac_dist/european_settlement_map/european_settlement_map.json @@ -0,0 +1,120 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "properties": { + "license": null, + "description": null, + "area_cover": "EEA-38+UK", + "crs": null, + "providers": [ + { + "organization": "JRC", + "organization_name": null, + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": "https://land.copernicus.eu/pan-european/GHSL/european-settlement-map", + "comments": null + } + ], + "dataSource": " https://ghsl.jrc.ec.europa.eu/download.php", + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "y": { + "axis": "y", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "time": { + "extent": [ + "2012-01-01T00:00:00Z", + "2015-01-01T00:00:00Z" + ], + "type": "temporal", + "unit_of_measure": "y", + "interpolation": null, + "step": "P3Y" + } + }, + "datetime": "2000-01-01T00:00:00Z", + "raster:bands": [ + { + "band_name": null, + "unit": null, + "nodata": null, + "data_type": null, + "definition": null, + "description": null, + "category_list": null, + "comment": null, + "interpolation": null + } + ], + "title": "European Settlement Map", + "datasource_type": "grid", + "personalData": null, + "Provenance_name": "EO-based", + "preprocessing": null, + "documentation": null, + "keywords": null, + "use_case_S4E": 1, + "use_case_WER": null, + "use_case_NHM_2": null, + "use_case_NILU": null, + "use_case_NHM": 1, + "platform": "Both", + "ingestion_status": "not ingested: no longer offered by CLMS" + }, + "geometry": { + "type": "Polygon", + "coordinates": [] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": {}, + "bbox": [], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ], + "id": "european_settlement_map" +} \ No newline at end of file From 2ffd2ffe7203119e473c021cdf06dde032067833 Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:05:31 +0200 Subject: [PATCH 06/44] Add stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json for pull request submission --- .../CLMS_Urban_Atlas/CLMS_Urban_Atlas.json | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json diff --git a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json new file mode 100644 index 00000000..aba4b2e8 --- /dev/null +++ b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json @@ -0,0 +1,122 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "properties": { + "license": null, + "description": null, + "area_cover": "EEA-38+UK", + "crs": "EPSG:3035", + "providers": [ + { + "organization": "EEA", + "organization_name": null, + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": "https://land.copernicus.eu/local/urban-atlas", + "comments": "The Urban Atlas provides pan-European comparable land cover and land use data for Functional Urban Areas (FUA). Urban Atlas 2006 data contain 319 FUAs with more than 100,000 inhabitants as defined by the Urban Audit. The Urban Atlas 2012 data set contains 785 FUAs with more than 50,000 inhabitants, covering EU28 + EFTA countries + West Balkans + Turkey. The nomenclature includes 17 urban classes with MMU 0.25 ha (minor nomenclature changes compared to Urban Atlas 2006) and 10 Rural Classes with MMU 1ha. The data also contain population estimates for each polygon. The Urban Atlas 2018 coverage increased to 788 FUAs covering EU27 + EFTA countries + West Balkans + Turkey + UK. The nomenclature of the Land Cover/Land Use product is the same as for the 2012 version. It includes 17 urban classes with MMU 0.25 ha and 10 Rural Classes with MMU 1ha.The EEA indicator \u201cVegetation productivity\u201d shows a varying impact of the nr of frost days on productivity variations, depending on climatic zone and land cover combinations." + } + ], + "dataSource": null, + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + -25.857, + 43.853 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 10 + }, + "y": { + "axis": "y", + "extent": [ + 27.9117, + 70.312 + ], + "reference_system": "EPSG:4326", + "type": "spatial", + "unit_of_measure": "m", + "interpolation": null, + "step": 10 + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null + }, + "time": { + "extent": [ + "2006-01-01T00:00:00Z", + "2018-01-01T00:00:00Z" + ], + "type": "temporal", + "unit_of_measure": "y", + "interpolation": null, + "step": "P6Y" + } + }, + "datetime": "2000-01-01T00:00:00Z", + "raster:bands": [ + { + "band_name": null, + "unit": null, + "nodata": null, + "data_type": null, + "definition": null, + "description": null, + "category_list": null, + "comment": null, + "interpolation": null + } + ], + "title": "CLMS Urban Atlas", + "datasource_type": "vector", + "personalData": null, + "Provenance_name": null, + "preprocessing": null, + "documentation": null, + "keywords": null, + "use_case_S4E": 1, + "use_case_WER": 2, + "use_case_NHM_2": null, + "use_case_NILU": 2, + "use_case_NHM": null, + "platform": "Eox", + "ingestion_status": "Contact S4E to get access" + }, + "geometry": { + "type": "Polygon", + "coordinates": [] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": {}, + "bbox": [], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ], + "id": "CLMS_Urban_Atlas" +} \ No newline at end of file From 01c82c4af22a39592b48e031ddcbde140b212bf2 Mon Sep 17 00:00:00 2001 From: Mussab Abdalla Date: Mon, 15 Apr 2024 20:07:57 +0200 Subject: [PATCH 07/44] Add stac_dist/eu_demography/eu_demography.json for pull request submission --- stac_dist/eu_demography/eu_demography.json | 155 ++++++++++----------- 1 file changed, 76 insertions(+), 79 deletions(-) diff --git a/stac_dist/eu_demography/eu_demography.json b/stac_dist/eu_demography/eu_demography.json index d3589c82..a9a2b84f 100644 --- a/stac_dist/eu_demography/eu_demography.json +++ b/stac_dist/eu_demography/eu_demography.json @@ -1,82 +1,102 @@ { "type": "Feature", - "stac_version": "2.2.0", - "id": "eu_demography", + "stac_version": "1.0.0", "properties": { - "description": "European Demography on a 1km grid\n2018 - eu_demography_2018_index\n2021 - eu_demography_2021_index\nvirtual coverage - eu_demography_virtual_coverage_index", - "providers": [], - "dataSource": "", + "license": "These data shall not be used for commercial purposes (even within the user's organisation) without prior approval by the owner.\nUsers may not:\n- disseminate the dataset to clients outside their own organisation\n- sell the dataset \u2013 in whole or in part \u2013 to parties outside their organisation\n- use it for any other commercial purpose.", + "description": "European Demography on a 1km grid", + "area_cover": "EU", + "crs": "EPSG:3035", + "providers": [ + { + "organization": "Eurostat", + "organization_name": "GISCO", + "organization_email": null, + "orcid_id": null, + "project_purpose": null, + "doc_link": null, + "comments": null + } + ], + "dataSource": "https://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/population-distribution-demography/geostat", "cube:dimensions": { "x": { "axis": "x", "extent": [ - 944000, - 6505000 + "944000.000", + "6505000.000" ], - "reference_system": "3035", + "reference_system": "EPSG:3035", "type": "spatial", - "unit_of_measure": "meter", - "step": "1000" + "unit_of_measure": "m", + "interpolation": "Other", + "step": 1000 }, "y": { "axis": "y", "extent": [ - 942000, - 5414000 + "942000.000", + "5414000.000" ], - "reference_system": "3035", + "reference_system": "EPSG:3035", "type": "spatial", - "unit_of_measure": "meter", - "step": "1000" + "unit_of_measure": "m", + "interpolation": "Other", + "step": 1000 + }, + "z": { + "axis": "z", + "extent": [ + null, + null + ], + "reference_system": null, + "type": "spatial", + "unit_of_measure": null, + "interpolation": null }, "time": { "extent": [ - "2018-01-01T00:00Z", - "2020-12-31T23:59:59Z" + "2018-01-01T00:00:00Z", + "2021-01-01T00:00:00Z" ], "type": "temporal", + "unit_of_measure": "y", + "interpolation": "Other", "step": "P3Y" - }, - "z": {} + } }, - "datetime": "2021-02-17T15:13:53Z", - "raster:bands": [], + "datetime": "2021-10-02T00:00:00Z", + "raster:bands": [ + { + "band_name": "Population total", + "unit": "https://qudt.org/schema/qudt/CountingUnit", + "nodata": 65535, + "data_type": "int16", + "definition": "https://qudt.org/vocab/quantitykind/Population", + "description": "The number of people living within the spatial unit", + "category_list": null, + "comment": null, + "interpolation": "Other" + } + ], "title": "EU Demography", - "datasource_type": "eu_demography_2018_index", - "keywords": "These data shall not be used for commercial purposes (even within the user's organisation) without prior approval by the owner. Users may not: - disseminate the dataset to clients outside their own organisation - sell the dataset \u2013 in whole or in part \u2013 to parties outside their organisation - use it for any other commercial purpose.", - "start_datetime": "2018-01-01T00:00Z", - "end_datetime": "2020-12-31T23:59:59Z", - "personalData": "https://ec.europa.eu/eurostat/web/main/about/policies/copyright", + "datasource_type": "grid", + "personalData": null, "Provenance_name": "https://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/population-distribution-demography/geostat", - "use_case_NHM": "two", - "platform": "rasdaman" + "preprocessing": "https://un-ggim-europe.org/wp-content/uploads/2022/01/1121_UNGGIM_Europe_WG_DataIntegration_SWG1_SDG_IndicatorCalculation-and-Recommendations.pdf", + "documentation": "https://ec.europa.eu/eurostat/de/web/gisco/gisco-activities/integrating-statistics-geospatial-information/geostat-initiative", + "keywords": "Demography, Census, Population", + "use_case_S4E": null, + "use_case_WER": null, + "use_case_NHM_2": null, + "use_case_NILU": null, + "use_case_NHM": 2, + "platform": "Rasdaman", + "ingestion_status": "Completed, year as integer (2018)" }, "geometry": { "type": "Polygon", - "coordinates": [ - [ - [ - -54.896608380235485, - 24.805697480738544 - ], - [ - -54.896608380235485, - 64.33852817800617 - ], - [ - 59.87641607130845, - 64.33852817800617 - ], - [ - 59.87641607130845, - 24.805697480738544 - ], - [ - -54.896608380235485, - 24.805697480738544 - ] - ] - ] + "coordinates": [] }, "links": [ { @@ -90,36 +110,13 @@ "href": "../catalog.json", "type": "application/json", "title": "data-access catalog" - }, - { - "href": "https://fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=eu_demography&outputType=GeneralGridCoverage", - "rel": "about", - "type": "text/xml", - "title": "Link to the coverage description in XML" - }, - { - "href": "https://fairicube.rasdaman.com/rasdaman-dashboard/?layers=eu_demography", - "rel": "service", - "type": "text/html", - "title": "Link to the web application to Access, process gridded data" } ], - "assets": { - "data": { - "href": "https://fairicube.rasdaman.com/rasdaman/ows?SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=eu_demography&FORMAT=application/netcdf", - "roles": [ - "data" - ] - } - }, - "bbox": [ - -54.896608380235485, - 24.805697480738544, - 59.87641607130845, - 64.33852817800617 - ], + "assets": {}, + "bbox": [], "stac_extensions": [ "https://stac-extensions.github.io/raster/v1.1.0/schema.json", "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ] + ], + "id": "eu_demography" } \ No newline at end of file From 5695273300a27ebfa2cf04caeabe44d65838ebdb Mon Sep 17 00:00:00 2001 From: fairicube-data <154539050+fairicube-data@users.noreply.github.com> Date: Fri, 19 Apr 2024 11:47:03 +0200 Subject: [PATCH 08/44] Add stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json for pull request submission --- .../CLMS_Urban_Atlas/CLMS_Urban_Atlas.json | 117 +++++++++++------- 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json index aba4b2e8..bd815429 100644 --- a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json +++ b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json @@ -1,23 +1,21 @@ { "type": "Feature", "stac_version": "1.0.0", + "id": "CLMS_Urban_Atlas", "properties": { - "license": null, - "description": null, - "area_cover": "EEA-38+UK", - "crs": "EPSG:3035", + "license": "other", + "description": "Urban Atlas in gridded form.", "providers": [ { - "organization": "EEA", "organization_name": null, - "organization_email": null, - "orcid_id": null, - "project_purpose": null, + "organization": "EEA", + "comments": "The Urban Atlas provides pan-European comparable land cover and land use data for Functional Urban Areas (FUA). Urban Atlas 2006 data contain 319 FUAs with more than 100,000 inhabitants as defined by the Urban Audit. The Urban Atlas 2012 data set contains 785 FUAs with more than 50,000 inhabitants, covering EU28 + EFTA countries + West Balkans + Turkey. The nomenclature includes 17 urban classes with MMU 0.25 ha (minor nomenclature changes compared to Urban Atlas 2006) and 10 Rural Classes with MMU 1ha. The data also contain population estimates for each polygon. The Urban Atlas 2018 coverage increased to 788 FUAs covering EU27 + EFTA countries + West Balkans + Turkey + UK. The nomenclature of the Land Cover/Land Use product is the same as for the 2012 version. It includes 17 urban classes with MMU 0.25 ha and 10 Rural Classes with MMU 1ha.The EEA indicator \u201cVegetation productivity\u201d shows a varying impact of the nr of frost days on productivity variations, depending on climatic zone and land cover combinations.", "doc_link": "https://land.copernicus.eu/local/urban-atlas", - "comments": "The Urban Atlas provides pan-European comparable land cover and land use data for Functional Urban Areas (FUA). Urban Atlas 2006 data contain 319 FUAs with more than 100,000 inhabitants as defined by the Urban Audit. The Urban Atlas 2012 data set contains 785 FUAs with more than 50,000 inhabitants, covering EU28 + EFTA countries + West Balkans + Turkey. The nomenclature includes 17 urban classes with MMU 0.25 ha (minor nomenclature changes compared to Urban Atlas 2006) and 10 Rural Classes with MMU 1ha. The data also contain population estimates for each polygon. The Urban Atlas 2018 coverage increased to 788 FUAs covering EU27 + EFTA countries + West Balkans + Turkey + UK. The nomenclature of the Land Cover/Land Use product is the same as for the 2012 version. It includes 17 urban classes with MMU 0.25 ha and 10 Rural Classes with MMU 1ha.The EEA indicator \u201cVegetation productivity\u201d shows a varying impact of the nr of frost days on productivity variations, depending on climatic zone and land cover combinations." + "organization_email": null, + "project_purpose": null } ], - "dataSource": null, + "dataSource": "https://sdi.eea.europa.eu/catalogue/srv/eng/catalog.search#/metadata/fb4dffa1-6ceb-4cc0-8372-1ed354c285e6", "cube:dimensions": { "x": { "axis": "x", @@ -25,11 +23,11 @@ -25.857, 43.853 ], - "reference_system": "EPSG:4326", + "reference_system": "EPSG:3035", "type": "spatial", "unit_of_measure": "m", "interpolation": null, - "step": 10 + "step": "10" }, "y": { "axis": "y", @@ -37,66 +35,95 @@ 27.9117, 70.312 ], - "reference_system": "EPSG:4326", + "reference_system": "EPSG:3035", "type": "spatial", "unit_of_measure": "m", "interpolation": null, - "step": 10 + "step": "10" + }, + "time": { + "extent": [ + "2006-01-01T00:00:00Z", + "2018-01-01T00:00:00Z" + ], + "type": "temporal", + "step": "P6Y0M0DT0H0M0S" }, "z": { - "axis": "z", "extent": [ null, null ], "reference_system": null, - "type": "spatial", "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "2006-01-01T00:00:00Z", - "2018-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", "interpolation": null, - "step": "P6Y" + "type": "spatial" } }, "datetime": "2000-01-01T00:00:00Z", "raster:bands": [ { - "band_name": null, + "band_name": "categorical", "unit": null, + "data_type": "int16", "nodata": null, - "data_type": null, "definition": null, "description": null, - "category_list": null, + "category_list": "11100 Continuous Urban Fabric (S.L. &gt; 80%) 11210 Discontinuous Dense Urban Fabric (S.L. : 50% - 80%) 11220 Discontinuous Medium Density Urban Fabric (S.L. : 30% - 50%) 11230 Discontinuous Low Density Urban Fabric (S.L. : 10% - 30%) 11240 Discontinuous Very Low Density Urban Fabric (S.L. &lt; 10%) 11300 Isolated Structures 12100 Industrial, commercial, public, military and private units 12210 Fast transit roads and associated land 12220 Other roads and associated land 12230 Railways and associated land 12300 Port areas 12400 Airports 13100 Mineral extraction and dump sites 13300 Construction sites 13400 Land without current use 14100 Green urban areas 14200 Sports and leisure facilities 21000 Arable land (annual crops) 22000 Permanent crops (vineyards, fruit trees, olive groves) 23000 Pastures 24000 Complex and mixed cultivation patterns 25000 Orchards at the fringe of urban classes 31000 Forests 32000 Herbaceous vegetation associations (natural grassland, moors...) 33000 Open spaces with little or no vegetations (beaches, dunes, bare rocks, glaciers) 40000 Wetland 50000 Water bodies", "comment": null, "interpolation": null } ], - "title": "CLMS Urban Atlas", - "datasource_type": "vector", + "title": "CLMS Urban Atlas gridded", + "datasource_type": "raster", + "keywords": "urban", + "area_cover": "EEA38+UK", + "documentation": "https://sdi.eea.europa.eu/catalogue/srv/eng/catalog.search#/metadata/fb4dffa1-6ceb-4cc0-8372-1ed354c285e6", + "crs": "EPSG:3035", + "start_datetime": "2006-01-01T00:00:00Z", + "end_datetime": "2018-01-01T00:00:00Z", + "re_projection_crs": "", + "unit_of_measure": "", + "resolution": "", "personalData": null, - "Provenance_name": null, - "preprocessing": null, - "documentation": null, - "keywords": null, + "Provenance_name": "Urban Atlas vector product", + "preprocessing": "rasterization", + "modification": null, + "provision": null, "use_case_S4E": 1, "use_case_WER": 2, - "use_case_NHM_2": null, - "use_case_NILU": 2, "use_case_NHM": null, - "platform": "Eox", - "ingestion_status": "Contact S4E to get access" + "use_case_NILU": 2, + "use_case_NHM_2": null, + "ingestion_status": "Contact S4E to get access", + "platform": "Eox" }, "geometry": { "type": "Polygon", - "coordinates": [] + "coordinates": [ + [ + [ + -29.0872431221431, + 12.993696422216487 + ], + [ + -29.0872431221431, + 12.99436189517529 + ], + [ + -29.086540089541263, + 12.99436189517529 + ], + [ + -29.086540089541263, + 12.993696422216487 + ], + [ + -29.0872431221431, + 12.993696422216487 + ] + ] + ] }, "links": [ { @@ -113,10 +140,14 @@ } ], "assets": {}, - "bbox": [], + "bbox": [ + -29.0872431221431, + 12.993696422216487, + -29.086540089541263, + 12.99436189517529 + ], "stac_extensions": [ "https://stac-extensions.github.io/raster/v1.1.0/schema.json", "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "CLMS_Urban_Atlas" + ] } \ No newline at end of file From 003a3aca038fefe774e77c0bef75edba5fb49896 Mon Sep 17 00:00:00 2001 From: fairicube-data <154539050+fairicube-data@users.noreply.github.com> Date: Fri, 19 Apr 2024 12:01:07 +0200 Subject: [PATCH 09/44] Add stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json for pull request submission --- stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json index bd815429..89dfb584 100644 --- a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json +++ b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json @@ -87,7 +87,7 @@ "resolution": "", "personalData": null, "Provenance_name": "Urban Atlas vector product", - "preprocessing": "rasterization", + "preprocessing": "rasterization with ArcGis Tool FeatureToRaster. The polygon that overlaps the center of the cell yields the attribute to assign to the cell.", "modification": null, "provision": null, "use_case_S4E": 1, From af268f523bc1777ea8bef62a3e6cd2dcc3d4831e Mon Sep 17 00:00:00 2001 From: fairicube-data <154539050+fairicube-data@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:57:42 +0200 Subject: [PATCH 10/44] Add stac_dist/corine_land_cover/corine_land_cover.json for pull request submission --- .../corine_land_cover/corine_land_cover.json | 109 +++++++++++++----- 1 file changed, 78 insertions(+), 31 deletions(-) diff --git a/stac_dist/corine_land_cover/corine_land_cover.json b/stac_dist/corine_land_cover/corine_land_cover.json index 25b0cb38..49cb45aa 100644 --- a/stac_dist/corine_land_cover/corine_land_cover.json +++ b/stac_dist/corine_land_cover/corine_land_cover.json @@ -1,20 +1,18 @@ { "type": "Feature", "stac_version": "1.0.0", + "id": "corine_land_cover", "properties": { "license": null, "description": "It consists of an inventory of land cover in 44 cases.", - "area_cover": "EEA-38+UK", - "crs": "EPSG:3035", "providers": [ { - "organization": "EEA", "organization_name": null, - "organization_email": null, - "orcid_id": null, - "project_purpose": null, + "organization": "EEA", + "comments": "The present 100m raster dataset is the 2018 CLC status layer modified for the purpose of consistent statistical analysis in the land cover change accounting system at EEA.\n\nCORINE Land Cover (CLC) data are produced from 1986 for European (EEA member or cooperating) countries. Altogether five mapping inventories were implemented in this period, producing five status layers (CLC1990, CLC2000, CLC2006, CLC2012, CLC2018) and four CLC-Change (CLCC) layers for the corresponding periods (1990-2000, 2000-2006, 2006-2012, 2012-2018). Pan-European CLC and CLCC data are available as vector and raster products.", "doc_link": "https://land.copernicus.eu/pan-european/corine-land-cover", - "comments": "The present 100m raster dataset is the 2018 CLC status layer modified for the purpose of consistent statistical analysis in the land cover change accounting system at EEA.\n\nCORINE Land Cover (CLC) data are produced from 1986 for European (EEA member or cooperating) countries. Altogether five mapping inventories were implemented in this period, producing five status layers (CLC1990, CLC2000, CLC2006, CLC2012, CLC2018) and four CLC-Change (CLCC) layers for the corresponding periods (1990-2000, 2000-2006, 2006-2012, 2012-2018). Pan-European CLC and CLCC data are available as vector and raster products." + "organization_email": null, + "project_purpose": null } ], "dataSource": "https://land.copernicus.eu/pan-european/corine-land-cover", @@ -43,26 +41,23 @@ "interpolation": null, "step": 100 }, + "time": { + "extent": [ + "1990-01-01T00:00:00Z", + "2018-01-01T00:00:00Z" + ], + "type": "temporal", + "step": "" + }, "z": { - "axis": "z", "extent": [ null, null ], "reference_system": null, - "type": "spatial", "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "1990-01-01T00:00:00Z", - "2018-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", "interpolation": null, - "regular": false + "type": "spatial" } }, "datetime": "2000-01-01T00:00:00Z", @@ -70,8 +65,8 @@ { "band_name": null, "unit": "categorial, numeric code", - "nodata": null, "data_type": "int8", + "nodata": null, "definition": "CLC code - each code represents a colour", "description": "Each colour is a landform feature (urban area, forests, etc)", "category_list": "Multiple values", @@ -81,22 +76,51 @@ ], "title": "Corine Land Cover", "datasource_type": "grid", + "keywords": null, + "area_cover": "EEA-38+UK", + "documentation": null, + "crs": "EPSG:3035", + "start_datetime": "1990-01-01T00:00:00Z", + "end_datetime": "2018-01-01T00:00:00Z", "personalData": null, "Provenance_name": "EO-based, produced by countries", "preprocessing": null, - "documentation": null, - "keywords": null, + "modification": null, + "provision": null, "use_case_S4E": 1, "use_case_WER": 2, - "use_case_NHM_2": null, - "use_case_NILU": null, "use_case_NHM": 1, - "platform": "Both", - "ingestion_status": "Completed, year as integer, (1990,2000,2006,2012,2018)" + "use_case_NILU": null, + "use_case_NHM_2": null, + "ingestion_status": "Completed, year as integer, (1990,2000,2006,2012,2018)", + "platform": "Both" }, "geometry": { "type": "Polygon", - "coordinates": [] + "coordinates": [ + [ + [ + -31.561261000000002, + 27.405827000000002 + ], + [ + -31.561261000000002, + 71.409109 + ], + [ + 44.820775, + 71.409109 + ], + [ + 44.820775, + 27.405827000000002 + ], + [ + -31.561261000000002, + 27.405827000000002 + ] + ] + ] }, "links": [ { @@ -110,13 +134,36 @@ "href": "../catalog.json", "type": "application/json", "title": "data-access catalog" + }, + { + "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=corine_land_cover&outputType=GeneralGridCoverage", + "rel": "about", + "type": "text/xml", + "title": "Link to the rasdaman coverage description in XML" + }, + { + "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman-dashboard/?layers=corine_land_cover", + "rel": "service", + "type": "text/html", + "title": "Link to the rasdaman web application to Access, process gridded data" } ], - "assets": {}, - "bbox": [], + "assets": { + "thumbnail_rasdaman": { + "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman/ows?service=WMS&version=1.3.0&request=GetMap&layers=corine_land_cover&bbox=27.405827000000002,-31.561261000000002,71.409109,44.820775&time=\"1990-01-01T00:00:00Z\"&width=800&height=600&crs=EPSG:4326&format=image/png&transparent=true&styles=", + "roles": [ + "thumbnail" + ] + } + }, + "bbox": [ + -31.561261000000002, + 27.405827000000002, + 44.820775, + 71.409109 + ], "stac_extensions": [ "https://stac-extensions.github.io/raster/v1.1.0/schema.json", "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "corine_land_cover" + ] } \ No newline at end of file From c6bc3faf8a50c0f070f02c93e67f094abd6c30b2 Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:10:51 +0200 Subject: [PATCH 11/44] add validation a job --- .github/workflows/pages.yml | 23 +++-------- .github/workflows/tests.yml | 25 ++++++++++++ stac/stac-generator/requirements.txt | 1 + stac/stac-generator/test/valdator.py | 57 ++++++++++++++++++++++++++++ 4 files changed, 88 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/tests.yml create mode 100644 stac/stac-generator/test/valdator.py diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 45ec580c..72a9f20c 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,10 +2,11 @@ name: Deploy static content to Pages on: - # Runs on pushes targeting the default branch - push: - branches: - - main + workflow_run: + workflows: ["tests"] + branches: [main] + types: + - completed # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -43,18 +44,4 @@ jobs: run: | python3 ./stac/stac-generator/stac-generator.py stac copy -t ABSOLUTE_PUBLISHED --publish-location "https://fairicube.github.io/data-requests" stac_dist/catalog.json out - - name: Upload artifact - uses: actions/upload-pages-artifact@v1 - with: - # Upload entire repository - path: './out' - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v2 - - name: Update items - env: - USERNAME: ${{ secrets.USERNAME }} - PASSWORD: ${{ secrets.PASSWORD }} - run: | - python3 ./stac/stac-generator/update_items.py diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..71ce8236 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,25 @@ +name: Validate generated stac item in the PR + +on: + pull_request: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: install dependencies + run: | + pip install -r ./stac/stac-generator/requirements.txt + - name: validate stac items + + run: | + python3 ./stac/stac-generator/test/validator.py + + diff --git a/stac/stac-generator/requirements.txt b/stac/stac-generator/requirements.txt index ae6c237e..0db26ed8 100644 --- a/stac/stac-generator/requirements.txt +++ b/stac/stac-generator/requirements.txt @@ -1,4 +1,5 @@ pystac +pytest gql shapely stactools diff --git a/stac/stac-generator/test/valdator.py b/stac/stac-generator/test/valdator.py new file mode 100644 index 00000000..a075831a --- /dev/null +++ b/stac/stac-generator/test/valdator.py @@ -0,0 +1,57 @@ +import pystac +import pytest +import os +from typing import Any + + +def validate_item(item: pystac.item.Item): + properties: dict[str, Any] = item.properties + + # validate ID + assert isinstance(item.id, str) + + assert len(item.id) > 0 + + # validate Description + assert "description" in properties.keys() + + # assert isinstance(properties["description"], str) + # assert len(properties["description"]) > 0 + + +@pytest.mark.parametrize("dir", [ + os.path.join('stac_dist', f) for f in os.listdir( + os.path.join('stac_dist')) if os.path.isdir(os.path.join('stac_dist', f))]) +def test_items(dir): + + items = [ + f for f in os.listdir(dir) if not f.endswith( + 'catalog.json') and f.endswith('.json')] + + for item in items: + stac_item = pystac.Item.from_file(os.path.join(dir, item)) + validate_item(stac_item) + +# Mandatory Columns (additions in bold) +# ID [Column C] +# Description [D] +# Data Source [Column E] +# Owner/Organisation [G] +# Horizontal +# Horizontal CRS [Column P] +# Bounding Box (Horizontal) [Column Q-T] +# Resolution of Horizontal Axis (ie. Pixel Size) [Column W] +# Units of Measurement [Column U] +# Temporal +# Time (Begin/End) [Column AD-AE] +# Resolution of Time Axis (Intervall) [Column AH] +# Unit of measure [Column AF] +# Range Data Type [Column AR] +# Range Definition [AS] +# Range Description [AT] +# Null values [Column AQ] +# Legal - License [BA] +# Keywords - Keywords [BJ] +# In addition, some fields can be filled with defaults, e.g. +# Metadata Standard: STAC +# Provision Date: Date being provided \ No newline at end of file From 39c00afc26bab529c244506c4700413b9ff1582f Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:14:38 +0200 Subject: [PATCH 12/44] update validation test --- stac/stac-generator/test/valdator.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stac/stac-generator/test/valdator.py b/stac/stac-generator/test/valdator.py index a075831a..6cb552f1 100644 --- a/stac/stac-generator/test/valdator.py +++ b/stac/stac-generator/test/valdator.py @@ -32,6 +32,8 @@ def test_items(dir): stac_item = pystac.Item.from_file(os.path.join(dir, item)) validate_item(stac_item) + + # Mandatory Columns (additions in bold) # ID [Column C] # Description [D] From 9a606801592fd290a7bb92e6677ec703580874bb Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:16:51 +0200 Subject: [PATCH 13/44] correctly rename test file --- stac/stac-generator/test/{valdator.py => validator.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename stac/stac-generator/test/{valdator.py => validator.py} (100%) diff --git a/stac/stac-generator/test/valdator.py b/stac/stac-generator/test/validator.py similarity index 100% rename from stac/stac-generator/test/valdator.py rename to stac/stac-generator/test/validator.py From 3bff68137a8e5b4e3b7dfe749beaa4184a035d34 Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:19:48 +0200 Subject: [PATCH 14/44] run pytest command --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 71ce8236..05284ee0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -20,6 +20,6 @@ jobs: - name: validate stac items run: | - python3 ./stac/stac-generator/test/validator.py + pytest --verbosity=1 ./stac/stac-generator/test/validator.py From d5b3cfab06b1516e7c67ee20127d21564d0f05cb Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:25:36 +0200 Subject: [PATCH 15/44] merge jobs into one file --- .github/workflows/pages.yml | 22 +++++++++++++++++----- .github/workflows/tests.yml | 25 ------------------------- 2 files changed, 17 insertions(+), 30 deletions(-) delete mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 72a9f20c..026156d7 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,11 +2,9 @@ name: Deploy static content to Pages on: - workflow_run: - workflows: ["tests"] - branches: [main] - types: - - completed + pull_request: + branches: + - main # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -24,8 +22,22 @@ concurrency: cancel-in-progress: false jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: install dependencies + run: | + pip install -r ./stac/stac-generator/requirements.txt + - name: validate stac items + + run: | + pytest --verbosity=1 ./stac/stac-generator/test/validator.py + # Single deploy job since we're just deploying deploy: + needs: test environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 05284ee0..00000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Validate generated stac item in the PR - -on: - pull_request: - branches: - - main - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: install dependencies - run: | - pip install -r ./stac/stac-generator/requirements.txt - - name: validate stac items - - run: | - pytest --verbosity=1 ./stac/stac-generator/test/validator.py - - From 1957b43970b37a43ff060d2702bd8c3ddc5b5d7f Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:30:15 +0200 Subject: [PATCH 16/44] merge attempt --- .github/workflows/pages.yml | 21 +++++---------------- .github/workflows/tests.yml | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 026156d7..86ea3825 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,9 +2,11 @@ name: Deploy static content to Pages on: - pull_request: - branches: - - main + workflow_run: + workflows: ["tests"] + branches: [main] + types: + - completed # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -22,22 +24,9 @@ concurrency: cancel-in-progress: false jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: install dependencies - run: | - pip install -r ./stac/stac-generator/requirements.txt - - name: validate stac items - - run: | - pytest --verbosity=1 ./stac/stac-generator/test/validator.py # Single deploy job since we're just deploying deploy: - needs: test environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..bc2a52c9 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,23 @@ +name: Validate generated stac item in the PR + +on: + pull_request: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: install dependencies + run: | + pip install -r ./stac/stac-generator/requirements.txt + - name: validate stac items + + run: | + pytest --verbosity=1 ./stac/stac-generator/test/validator.py From c9c3a6fa27d36c2496643b6f53358b55ae5d049a Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:35:00 +0200 Subject: [PATCH 17/44] trigger deployment upon merge --- .github/workflows/pages.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 72a9f20c..8bc37e2f 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,11 +2,9 @@ name: Deploy static content to Pages on: - workflow_run: - workflows: ["tests"] - branches: [main] - types: - - completed + push: + branches: + - main # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From 21eecca2487b9c3f9cafae919af878ffefb5c81d Mon Sep 17 00:00:00 2001 From: baloola Date: Tue, 30 Apr 2024 11:37:35 +0200 Subject: [PATCH 18/44] re-trigger pages deployment --- .github/workflows/pages.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index d68766e6..1926d95b 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -43,4 +43,17 @@ jobs: run: | python3 ./stac/stac-generator/stac-generator.py stac copy -t ABSOLUTE_PUBLISHED --publish-location "https://fairicube.github.io/data-requests" stac_dist/catalog.json out - + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload entire repository + path: './out' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 + - name: Update items + env: + USERNAME: ${{ secrets.USERNAME }} + PASSWORD: ${{ secrets.PASSWORD }} + run: | + python3 ./stac/stac-generator/update_items.py From 37db132a8dab728cfeea5f483197155cd6288ed0 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 2 May 2024 11:52:07 +0200 Subject: [PATCH 19/44] Update readme.md --- encoding-examples/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/encoding-examples/readme.md b/encoding-examples/readme.md index 90804739..ae369f6d 100644 --- a/encoding-examples/readme.md +++ b/encoding-examples/readme.md @@ -1,3 +1,3 @@ # Coverage encoding examples -Note that the errors were corrected in November 2023, the examples should be updated by their creator to serve as a good basis. +On this page, we provide encoding examples linked from issues. While some of these examples may be outdated, they serve to illustrate the problems described in the issues. From 71e1944a62bd9bcd79a1e7008abbab55e822e78f Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Tue, 7 May 2024 17:19:01 +0200 Subject: [PATCH 20/44] Create rangeType.md --- encoding-examples/rangeType.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 encoding-examples/rangeType.md diff --git a/encoding-examples/rangeType.md b/encoding-examples/rangeType.md new file mode 100644 index 00000000..5d75a5a2 --- /dev/null +++ b/encoding-examples/rangeType.md @@ -0,0 +1,23 @@ +# Specification for provision of rangeType information + +OGC CIS uses [SWE Common](https://portal.ogc.org/files/?artifact_id=41157) DataRecord types for the provision of rangeType (description of what the numbers provided in the coverage range actually mean) +To date, this element has often been filled with erroneous values, not taking requirements from the SWE Common specification into account. +In order to ensure correct provision of CIS encoded data, we will describe the requirements here, together with examples. + +## SWE Common +The OGC Sensor Web Enablement Suite aims to cover requirements pertaining to measured or observed data. +For CIS encodings, the following requirements classes are of relevance: +- Record Components Package: `The “DataRecord” class is modeled on the definition of ‘Record’ from ISO 11404. In this definition, a record is a composite data type composed of one to many fields, each of which having its own name and type definition.` +- Basic Types and Simple Components Schemas: `XML Schema elements and types defined in the “basic_types.xsd” and “simple_components.xsd” schema files implement all classes defined respectively in the “Basic Types” and “Simple Components” UML packages.` + +From the Basic Types and Simple Components, we rely on the Quantity and Category Elements. +While the Count Element would also be applicable, for the moment we handle Counts as Quantities. + +## SWE:DataRecord +SWE:DataRecord, derived from the SWE Common AbstractDataComponent, can be used to group multiple components via the `field` attribute. +Each field describes one band of the described Coverage. + +![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/f943b189-cc85-4ccf-a39e-d85cad4a3e6f) + + + From 57f72a1dd50a1ca9c3b30e31a37d6e648f37f7c7 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Tue, 7 May 2024 17:54:40 +0200 Subject: [PATCH 21/44] Update rangeType.md --- encoding-examples/rangeType.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/encoding-examples/rangeType.md b/encoding-examples/rangeType.md index 5d75a5a2..f8f1d6de 100644 --- a/encoding-examples/rangeType.md +++ b/encoding-examples/rangeType.md @@ -11,7 +11,7 @@ For CIS encodings, the following requirements classes are of relevance: - Basic Types and Simple Components Schemas: `XML Schema elements and types defined in the “basic_types.xsd” and “simple_components.xsd” schema files implement all classes defined respectively in the “Basic Types” and “Simple Components” UML packages.` From the Basic Types and Simple Components, we rely on the Quantity and Category Elements. -While the Count Element would also be applicable, for the moment we handle Counts as Quantities. +While the Count Element would also be applicable, for the moment we will handle Counts as Quantities. ## SWE:DataRecord SWE:DataRecord, derived from the SWE Common AbstractDataComponent, can be used to group multiple components via the `field` attribute. @@ -19,5 +19,17 @@ Each field describes one band of the described Coverage. ![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/f943b189-cc85-4ccf-a39e-d85cad4a3e6f) +Depending on the nature of the data provided in each band, the correct Simple Component must be provided in the corresponding DataRecord.field. +## SWE:SimpleComponent +All SWE:SimpleComponent types are derived from the SWE:AbstractDataComponent. +This is where the `definition` attribute is specified. + +Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/definition-resolvable +`Req 62. The “definition” attribute shall contain a URI that can be resolved to the complete human readable definition of the property that is represented by the data component.` + +Additional information on the definition attribute is provided in clause 7.2.2 as follows: +`The “definition” attribute identifies the property (often an observed property in our context) that the data component represents by using a scoped ame. It should map to a controlled term defined in an (web accessible) dictionary, registry or ontology. Such terms provide the formal textual efinition agreed upon by one or more communities, eventually illustrated by pictures and diagrams as well as additional semantic information such as relationships to units and other concepts, ontological mappings, etc. ` + +As Observed Property registers covering FAIRiCUBE requirements have not been identified, a simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance) From ce1793ba20d7993a16075dd3fa2ac197018f3964 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 17:03:36 +0200 Subject: [PATCH 22/44] Update rangeType.md field name req --- encoding-examples/rangeType.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/encoding-examples/rangeType.md b/encoding-examples/rangeType.md index f8f1d6de..4af5f509 100644 --- a/encoding-examples/rangeType.md +++ b/encoding-examples/rangeType.md @@ -19,6 +19,8 @@ Each field describes one band of the described Coverage. ![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/f943b189-cc85-4ccf-a39e-d85cad4a3e6f) +The name attribute of the swe:field must be provided, whereby Req 39 stipulates that `Each “field” attribute in a given instance of the “DataRecord” class shall be identified by a name that is unique to this instance.` + Depending on the nature of the data provided in each band, the correct Simple Component must be provided in the corresponding DataRecord.field. ## SWE:SimpleComponent From ad06b6aed61b141b9531c6570be5ac7317e89a02 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 17:05:46 +0200 Subject: [PATCH 23/44] Create rangeType.md --- CoverageEncoding/rangeType.md | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 CoverageEncoding/rangeType.md diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md new file mode 100644 index 00000000..4af5f509 --- /dev/null +++ b/CoverageEncoding/rangeType.md @@ -0,0 +1,37 @@ +# Specification for provision of rangeType information + +OGC CIS uses [SWE Common](https://portal.ogc.org/files/?artifact_id=41157) DataRecord types for the provision of rangeType (description of what the numbers provided in the coverage range actually mean) +To date, this element has often been filled with erroneous values, not taking requirements from the SWE Common specification into account. +In order to ensure correct provision of CIS encoded data, we will describe the requirements here, together with examples. + +## SWE Common +The OGC Sensor Web Enablement Suite aims to cover requirements pertaining to measured or observed data. +For CIS encodings, the following requirements classes are of relevance: +- Record Components Package: `The “DataRecord” class is modeled on the definition of ‘Record’ from ISO 11404. In this definition, a record is a composite data type composed of one to many fields, each of which having its own name and type definition.` +- Basic Types and Simple Components Schemas: `XML Schema elements and types defined in the “basic_types.xsd” and “simple_components.xsd” schema files implement all classes defined respectively in the “Basic Types” and “Simple Components” UML packages.` + +From the Basic Types and Simple Components, we rely on the Quantity and Category Elements. +While the Count Element would also be applicable, for the moment we will handle Counts as Quantities. + +## SWE:DataRecord +SWE:DataRecord, derived from the SWE Common AbstractDataComponent, can be used to group multiple components via the `field` attribute. +Each field describes one band of the described Coverage. + +![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/f943b189-cc85-4ccf-a39e-d85cad4a3e6f) + +The name attribute of the swe:field must be provided, whereby Req 39 stipulates that `Each “field” attribute in a given instance of the “DataRecord” class shall be identified by a name that is unique to this instance.` + +Depending on the nature of the data provided in each band, the correct Simple Component must be provided in the corresponding DataRecord.field. + +## SWE:SimpleComponent +All SWE:SimpleComponent types are derived from the SWE:AbstractDataComponent. +This is where the `definition` attribute is specified. + +Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/definition-resolvable +`Req 62. The “definition” attribute shall contain a URI that can be resolved to the complete human readable definition of the property that is represented by the data component.` + +Additional information on the definition attribute is provided in clause 7.2.2 as follows: +`The “definition” attribute identifies the property (often an observed property in our context) that the data component represents by using a scoped ame. It should map to a controlled term defined in an (web accessible) dictionary, registry or ontology. Such terms provide the formal textual efinition agreed upon by one or more communities, eventually illustrated by pictures and diagrams as well as additional semantic information such as relationships to units and other concepts, ontological mappings, etc. ` + +As Observed Property registers covering FAIRiCUBE requirements have not been identified, a simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance) + From 55f7cf33f872edcd47e53c252c978b6123999e08 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 17:08:40 +0200 Subject: [PATCH 24/44] Delete encoding-examples/rangeType.md --- encoding-examples/rangeType.md | 37 ---------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 encoding-examples/rangeType.md diff --git a/encoding-examples/rangeType.md b/encoding-examples/rangeType.md deleted file mode 100644 index 4af5f509..00000000 --- a/encoding-examples/rangeType.md +++ /dev/null @@ -1,37 +0,0 @@ -# Specification for provision of rangeType information - -OGC CIS uses [SWE Common](https://portal.ogc.org/files/?artifact_id=41157) DataRecord types for the provision of rangeType (description of what the numbers provided in the coverage range actually mean) -To date, this element has often been filled with erroneous values, not taking requirements from the SWE Common specification into account. -In order to ensure correct provision of CIS encoded data, we will describe the requirements here, together with examples. - -## SWE Common -The OGC Sensor Web Enablement Suite aims to cover requirements pertaining to measured or observed data. -For CIS encodings, the following requirements classes are of relevance: -- Record Components Package: `The “DataRecord” class is modeled on the definition of ‘Record’ from ISO 11404. In this definition, a record is a composite data type composed of one to many fields, each of which having its own name and type definition.` -- Basic Types and Simple Components Schemas: `XML Schema elements and types defined in the “basic_types.xsd” and “simple_components.xsd” schema files implement all classes defined respectively in the “Basic Types” and “Simple Components” UML packages.` - -From the Basic Types and Simple Components, we rely on the Quantity and Category Elements. -While the Count Element would also be applicable, for the moment we will handle Counts as Quantities. - -## SWE:DataRecord -SWE:DataRecord, derived from the SWE Common AbstractDataComponent, can be used to group multiple components via the `field` attribute. -Each field describes one band of the described Coverage. - -![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/f943b189-cc85-4ccf-a39e-d85cad4a3e6f) - -The name attribute of the swe:field must be provided, whereby Req 39 stipulates that `Each “field” attribute in a given instance of the “DataRecord” class shall be identified by a name that is unique to this instance.` - -Depending on the nature of the data provided in each band, the correct Simple Component must be provided in the corresponding DataRecord.field. - -## SWE:SimpleComponent -All SWE:SimpleComponent types are derived from the SWE:AbstractDataComponent. -This is where the `definition` attribute is specified. - -Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/definition-resolvable -`Req 62. The “definition” attribute shall contain a URI that can be resolved to the complete human readable definition of the property that is represented by the data component.` - -Additional information on the definition attribute is provided in clause 7.2.2 as follows: -`The “definition” attribute identifies the property (often an observed property in our context) that the data component represents by using a scoped ame. It should map to a controlled term defined in an (web accessible) dictionary, registry or ontology. Such terms provide the formal textual efinition agreed upon by one or more communities, eventually illustrated by pictures and diagrams as well as additional semantic information such as relationships to units and other concepts, ontological mappings, etc. ` - -As Observed Property registers covering FAIRiCUBE requirements have not been identified, a simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance) - From 2cc51ce334d665cbdca343e1cb3ca9da6ceb2f3b Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 17:39:18 +0200 Subject: [PATCH 25/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index 4af5f509..f8f63439 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -23,9 +23,11 @@ The name attribute of the swe:field must be provided, whereby Req 39 stipulates Depending on the nature of the data provided in each band, the correct Simple Component must be provided in the corresponding DataRecord.field. -## SWE:SimpleComponent -All SWE:SimpleComponent types are derived from the SWE:AbstractDataComponent. -This is where the `definition` attribute is specified. +## SWE:SimpleComponent Elements +All SWE:SimpleComponent types are derived from the SWE:AbstractSimpleComponent. Elements defined for SWE:AbstractSimpleComponent apply to all SWE:SimpleComponent types, thus are described jointly in this section. + +### definition +`definition` is a mandatory attribute of the SWE:SimpleComponent types. Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/definition-resolvable `Req 62. The “definition” attribute shall contain a URI that can be resolved to the complete human readable definition of the property that is represented by the data component.` @@ -33,5 +35,16 @@ Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/defi Additional information on the definition attribute is provided in clause 7.2.2 as follows: `The “definition” attribute identifies the property (often an observed property in our context) that the data component represents by using a scoped ame. It should map to a controlled term defined in an (web accessible) dictionary, registry or ontology. Such terms provide the formal textual efinition agreed upon by one or more communities, eventually illustrated by pictures and diagrams as well as additional semantic information such as relationships to units and other concepts, ontological mappings, etc. ` -As Observed Property registers covering FAIRiCUBE requirements have not been identified, a simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance) +As Observed Property registers covering FAIRiCUBE requirements have not been identified, a simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance). If a reference to an Observed Property register is available, this should be used. + +### label +The `label` element is a short descriptive human readable label describing what property the component represents. + +### description +The `description` element is a longer more descriptive human readable description describing what property the component represents. + +### nilValues +The `nilValues` element is defined on the SWE:AbstractSimpleComponentType. If nil values are used in the coverage, they must be provided here, together with a reason. The swe:NilValuesType must be used. +### extension +The `extension` element is a container for future extensions. This extension point can be used to add new extended properties to an existing class. From 76c727b5b0e69c655c9678e525c89fab52396daa Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 17:40:36 +0200 Subject: [PATCH 26/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index f8f63439..3cf4918f 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -26,6 +26,8 @@ Depending on the nature of the data provided in each band, the correct Simple Co ## SWE:SimpleComponent Elements All SWE:SimpleComponent types are derived from the SWE:AbstractSimpleComponent. Elements defined for SWE:AbstractSimpleComponent apply to all SWE:SimpleComponent types, thus are described jointly in this section. +![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/04029405-8c1d-4b67-a210-7ce1288423c4) + ### definition `definition` is a mandatory attribute of the SWE:SimpleComponent types. From 14c9fa5cd6bd9bfaa69816453f75403fa65b1fd2 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 17:48:41 +0200 Subject: [PATCH 27/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index 3cf4918f..d9780eb5 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -50,3 +50,5 @@ The `nilValues` element is defined on the SWE:AbstractSimpleComponentType. If ni ### extension The `extension` element is a container for future extensions. This extension point can be used to add new extended properties to an existing class. + +## swe:Quantity From b3a212bfb9042cf12af8408aef875a43f13a351d Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 18:19:09 +0200 Subject: [PATCH 28/44] added Quantity --- CoverageEncoding/rangeType.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index d9780eb5..4a6c7a12 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -51,4 +51,10 @@ The `nilValues` element is defined on the SWE:AbstractSimpleComponentType. If ni ### extension The `extension` element is a container for future extensions. This extension point can be used to add new extended properties to an existing class. -## swe:Quantity +## swe:Quantity +The SWE:Quantity type adds a mandatory `uom` element of type swe:UnitReference + +Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/ucum-code-used +Req 64. The UCUM code for a unit of measure shall be used as the value of the “code” XML attribute whenever it can be constructed using the UCUM 1.8 specification. Otherwise the “href” XML attribute shall be used to reference an external unit definition. + +Note: UCUM 1.8 has been deprecated, curent version is [UCUM 2.1](https://ucum.org/ucum) From 9624d360308215680796a95451f925d761e1afc2 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 18:40:14 +0200 Subject: [PATCH 29/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index 4a6c7a12..cffabd9a 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -5,7 +5,7 @@ To date, this element has often been filled with erroneous values, not taking re In order to ensure correct provision of CIS encoded data, we will describe the requirements here, together with examples. ## SWE Common -The OGC Sensor Web Enablement Suite aims to cover requirements pertaining to measured or observed data. +The OGC Sensor Web Enablement Suite (SWE) aims to cover requirements pertaining to measured or observed data. For CIS encodings, the following requirements classes are of relevance: - Record Components Package: `The “DataRecord” class is modeled on the definition of ‘Record’ from ISO 11404. In this definition, a record is a composite data type composed of one to many fields, each of which having its own name and type definition.` - Basic Types and Simple Components Schemas: `XML Schema elements and types defined in the “basic_types.xsd” and “simple_components.xsd” schema files implement all classes defined respectively in the “Basic Types” and “Simple Components” UML packages.` @@ -51,10 +51,16 @@ The `nilValues` element is defined on the SWE:AbstractSimpleComponentType. If ni ### extension The `extension` element is a container for future extensions. This extension point can be used to add new extended properties to an existing class. -## swe:Quantity +## SWE:Quantity The SWE:Quantity type adds a mandatory `uom` element of type swe:UnitReference Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/ucum-code-used Req 64. The UCUM code for a unit of measure shall be used as the value of the “code” XML attribute whenever it can be constructed using the UCUM 1.8 specification. Otherwise the “href” XML attribute shall be used to reference an external unit definition. -Note: UCUM 1.8 has been deprecated, curent version is [UCUM 2.1](https://ucum.org/ucum) +Note: UCUM 1.8 has been deprecated, current version is [UCUM 2.1](https://ucum.org/ucum). Thus, we will use UCUM 2.1 in FAIRiCUBE. + +## SWE:Category +The SWE:Category type adds a `codeSpace` element of type swe:UnitReference. This element utilizes xlink:href to reference an external dictionary, taxonomy or ontology representing the code space. This element is implicitely mandatory, as Req 25 stipulates the alternative provision of a `constraint` with a list of allowed values; as the constraint alternative does not allow for additional semantics on the individual entries, the `codeSpace` approach is prefered. + +However, the `codeSpace` approach requires the availability of a URI that resolves to information on the categorization used in the data, often not the case. While a machine readable approach would be preferable, in lieu of identified standards in this area, a simple GitHub page can suffice. + From fee6e87d948368dab85dce0ae777fc55cad379e4 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 19:07:52 +0200 Subject: [PATCH 30/44] Create CategoryInformation.md --- CoverageEncoding/CategoryInformation.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 CoverageEncoding/CategoryInformation.md diff --git a/CoverageEncoding/CategoryInformation.md b/CoverageEncoding/CategoryInformation.md new file mode 100644 index 00000000..4b671d3d --- /dev/null +++ b/CoverageEncoding/CategoryInformation.md @@ -0,0 +1,9 @@ +# Example codespace for SWE:Category + +Dominant Leafe Type. Details at https://land.copernicus.eu/pan-european/high-resolution-layers/forests/dominant-leaf-type/status-maps/dominant-leaf-type-2018 + +| Label | Value | Color | Color RGBA | +|-------|-------|-------|-----------| +| all non-tree covered areas | 0 | ![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/1d01084f-cd75-4052-8019-9e122270be47) | 240,240,240,255 | +| broadleaved trees | 1 | ![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/1254b337-78df-4560-bc35-b1ac5ceedc5f) | 70,158,74,255 | +| coniferous trees | 2 | ![grafik](https://github.com/FAIRiCUBE/data-requests/assets/11915304/cfdee270-398f-4d3f-901f-236e6ea6258e) | 28,92,36,255 | From 5f849a8f1ec4b9618124d681c9f09a91d2a3f950 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 19:48:24 +0200 Subject: [PATCH 31/44] Added category example --- CoverageEncoding/rangeType.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index cffabd9a..678ac5fd 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -37,7 +37,8 @@ Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/defi Additional information on the definition attribute is provided in clause 7.2.2 as follows: `The “definition” attribute identifies the property (often an observed property in our context) that the data component represents by using a scoped ame. It should map to a controlled term defined in an (web accessible) dictionary, registry or ontology. Such terms provide the formal textual efinition agreed upon by one or more communities, eventually illustrated by pictures and diagrams as well as additional semantic information such as relationships to units and other concepts, ontological mappings, etc. ` -As Observed Property registers covering FAIRiCUBE requirements have not been identified, a simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance). If a reference to an Observed Property register is available, this should be used. +As Observed Property registers covering FAIRiCUBE requirements have not been identified, alternative solutions may be required. A simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance) in order to provide basic information on the property being conveyed. When re-providing data from Copernicus Services, a reference to the page describing this dataset can be used, e.g. [High Resolution Layer Dominant Leaf Type](https://land.copernicus.eu/en/products/high-resolution-layer-dominant-leaf-type) +If a reference to an Observed Property register is available, this should be used. ### label The `label` element is a short descriptive human readable label describing what property the component represents. @@ -64,3 +65,25 @@ The SWE:Category type adds a `codeSpace` element of type swe:UnitReference. This However, the `codeSpace` approach requires the availability of a URI that resolves to information on the categorization used in the data, often not the case. While a machine readable approach would be preferable, in lieu of identified standards in this area, a simple GitHub page can suffice. +The following shows an example of a Category rangeType taken from the DominantLeafType dataset + + +``` + + + + Dominant Leaf Type + The HRL Forest 2018 primary status layer Dominant Leaf Type (DLT) has been created in frame of the tender “EEA/IDM/R0/18/009 - High Resolution land cover characteristics for the 2018 reference year” as part of the EEA Copernicus Land Monitoring Service (CLMS, https://land.copernicus.eu). The DLT raster product provides a basic land cover classification with 3 thematic classes (all non-tree covered areas / broadleaved / coniferous) at 10m spatial resolution and covers the full of EEA39 area. More about the High Resolution Layers and CLMS datasets can be found at https://land.copernicus.eu/pan-european. + + + 240 + 255 + + + + + + + +``` + From 297cb6a54e8e028c3f496a50e5b56c2c98aeb05a Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 20:26:23 +0200 Subject: [PATCH 32/44] Added examples --- CoverageEncoding/rangeType.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index 678ac5fd..926c6f94 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -60,6 +60,26 @@ Req 64. The UCUM code for a unit of measure shall be used as the value of the Note: UCUM 1.8 has been deprecated, current version is [UCUM 2.1](https://ucum.org/ucum). Thus, we will use UCUM 2.1 in FAIRiCUBE. +The following shows an example of a Quantity rangeType taken from the Demography dataset. Note that ideally we would use the swe:Count type for this purpose. + +``` + + + + Population total + The 2021 census contained a major innovation with the presentation of key census topics on an EU-wide 1 km² grid. + + + 65535 + + + + + + + +``` + ## SWE:Category The SWE:Category type adds a `codeSpace` element of type swe:UnitReference. This element utilizes xlink:href to reference an external dictionary, taxonomy or ontology representing the code space. This element is implicitely mandatory, as Req 25 stipulates the alternative provision of a `constraint` with a list of allowed values; as the constraint alternative does not allow for additional semantics on the individual entries, the `codeSpace` approach is prefered. @@ -67,7 +87,6 @@ However, the `codeSpace` approach requires the availability of a URI that resolv The following shows an example of a Category rangeType taken from the DominantLeafType dataset - ``` From 1c067d0c3d10bb9a72aefe6e2a021d93479d0911 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 9 May 2024 20:41:49 +0200 Subject: [PATCH 33/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index 926c6f94..f0f2f987 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -40,20 +40,30 @@ Additional information on the definition attribute is provided in clause 7.2.2 a As Observed Property registers covering FAIRiCUBE requirements have not been identified, alternative solutions may be required. A simple solution would be the use of the [QUDT Quantity Kind Vocabulary](http://qudt.org/2.1/vocab/quantitykind), e.g. [velocity](https://qudt.org/vocab/quantitykind/Velocity) or [radiance](https://qudt.org/vocab/quantitykind/Radiance) in order to provide basic information on the property being conveyed. When re-providing data from Copernicus Services, a reference to the page describing this dataset can be used, e.g. [High Resolution Layer Dominant Leaf Type](https://land.copernicus.eu/en/products/high-resolution-layer-dominant-leaf-type) If a reference to an Observed Property register is available, this should be used. +When working from a data request, the `Definition` field in the Bands section provides the required content. +If this is missing, and there is only one band, the text from the dataset `Documentation Link` or `Data Source` may be used. + ### label The `label` element is a short descriptive human readable label describing what property the component represents. +When working from a data request, the `cell components` field in the Bands section provides the required content. +If this is missing, and there is only one band, the text from the dataset `Title` may be used. + ### description The `description` element is a longer more descriptive human readable description describing what property the component represents. +When working from a data request, the `Description` field in the Bands section provides the required content. +If this is missing, and there is only one band, the text from the dataset Description may be used. + ### nilValues The `nilValues` element is defined on the SWE:AbstractSimpleComponentType. If nil values are used in the coverage, they must be provided here, together with a reason. The swe:NilValuesType must be used. -### extension -The `extension` element is a container for future extensions. This extension point can be used to add new extended properties to an existing class. +When working from a data request, the `Null values` field in the Bands section provides the required content. ## SWE:Quantity -The SWE:Quantity type adds a mandatory `uom` element of type swe:UnitReference +The SWE:Quantity type adds a mandatory `Unit of Measure` element of type swe:UnitReference + +When working from a data request, the `Null values` field in the Bands section provides the required content. Requirement - http://www.opengis.net/spec/SWE/2.0/req/xsd-simple-components/ucum-code-used Req 64. The UCUM code for a unit of measure shall be used as the value of the “code” XML attribute whenever it can be constructed using the UCUM 1.8 specification. Otherwise the “href” XML attribute shall be used to reference an external unit definition. @@ -83,7 +93,9 @@ The following shows an example of a Quantity rangeType taken from the Demography ## SWE:Category The SWE:Category type adds a `codeSpace` element of type swe:UnitReference. This element utilizes xlink:href to reference an external dictionary, taxonomy or ontology representing the code space. This element is implicitely mandatory, as Req 25 stipulates the alternative provision of a `constraint` with a list of allowed values; as the constraint alternative does not allow for additional semantics on the individual entries, the `codeSpace` approach is prefered. -However, the `codeSpace` approach requires the availability of a URI that resolves to information on the categorization used in the data, often not the case. While a machine readable approach would be preferable, in lieu of identified standards in this area, a simple GitHub page can suffice. +However, the `codeSpace` approach requires the availability of a URI that resolves to information on the categorization used in the data, often not the case. While a machine readable approach would be preferable, in lieu of identified standards in this area, a simple [GitHub page](https://github.com/FAIRiCUBE/data-requests/blob/main/CoverageEncoding/CategoryInformation.md) can suffice. + +When working from a data request, the `Category List` field in the Bands section provides the required content. The following shows an example of a Category rangeType taken from the DominantLeafType dataset From a3488d20ef2656cf8dce3887f95a77f1f25141a7 Mon Sep 17 00:00:00 2001 From: fairicube-data <154539050+fairicube-data@users.noreply.github.com> Date: Thu, 30 May 2024 10:22:45 +0200 Subject: [PATCH 34/44] Add stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json for pull request submission --- stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json | 191 +++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json diff --git a/stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json b/stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json new file mode 100644 index 00000000..bf89537a --- /dev/null +++ b/stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json @@ -0,0 +1,191 @@ +{ + "type": "Feature", + "stac_version": "1.0.0", + "id": "SPARTACUS_v2.1", + "properties": { + "license": "CC-BY-4.0", + "description": "The gridded data set describes the spatial distribution of observed air temperature (minimum temperature (TN) and maximum temperature (TX)), precipitation (RR) and absolute sunshine duration (SA) from day to day since 1961 in kilometer resolution over Austria. In addition to the original daily resolution, [monthly](https://data.hub.geosphere.at/dataset/spartacus-v2-1m-1km), [seasonal](https://data.hub.geosphere.at/dataset/spartacus-v2-1q-1km) and [annual](https://data.hub.geosphere.at/dataset/spartacus-v2-1y-1km) aggregates are available. The data set is operationally expanded on a daily basis.", + "providers": [ + { + "organization": "GeoSphere Austria", + "doc_link": "https://data.hub.geosphere.at/dataset/spartacus-v2-1d-1km", + "organization_email": "kontakt@geosphere.at" + } + ], + "cube:dimensions": { + "x": { + "axis": "x", + "extent": [ + 112500, + 695500 + ], + "reference_system": "3416", + "type": "spatial", + "unit_of_measure": "m", + "step": "1000" + }, + "y": { + "axis": "y", + "extent": [ + 258500, + 586500 + ], + "reference_system": "3416", + "type": "spatial", + "unit_of_measure": "m", + "step": "1000" + }, + "time": { + "extent": [ + "19961-01-01T00:00Z", + "2999-01-01T00:00:00Z" + ], + "type": "temporal", + "step": "P1DT0H" + }, + "z": { + "extent": [ + null, + null + ], + "type": "spatial" + } + }, + "raster:bands": [ + { + "band_name": "RR", + "unit": "kg m-2", + "data_type": "float32", + "nodata": -999, + "definition": "daily precipitation", + "description": "daily sum (derived from daily sums measured between 07:00 CET of the respective day and 07:00 CET of the following day)" + }, + { + "band_name": "TX", + "unit": "degree_Celsius", + "data_type": "float32", + "nodata": -999, + "definition": "daily maximum of air temperature", + "description": "daily maximum (derived from daily maxima measured between 19:00 CET of the previous day and 19:00 CET of the respective day", + "comment": "only available in the daily data" + }, + { + "band_name": "TN", + "unit": "degree_Celsius", + "data_type": "float32", + "nodata": -999, + "definition": "daily minimum of air temperature", + "description": "daily minimum (derived from daily minima measured between 19:00 CET of the previous day and 19:00 CET of the respective day", + "comment": "only available in the daily data" + }, + { + "band_name": "TM", + "unit": "degree_Celsius", + "data_type": "float32", + "nodata": -999, + "definition": "aggregated mean of air temperature", + "description": "aggregated mean (derived from daily minima and maxima measured between 19:00 CET of the previous day and 19:00 CET of the respective day)", + "comment": "only available for aggregated products (monthly, yearly, seasonal)" + }, + { + "band_name": "SA", + "unit": "s", + "data_type": "float32", + "nodata": -999, + "definition": "daily duration of sunshine", + "description": "daily sum (derived from daily sums measured between 00:00 CET and 24:00 CET of the respective day)" + } + ], + "title": "SPARTACUS v2.1 - Spatial Reanalysis Dataset for Climate in Austria", + "datasource_type": "gridded data", + "keywords": "precipitation, temperature, sunshine duration, ", + "area_cover": "Austria", + "crs": "EPSG:3416", + "start_datetime": "19961-01-01T00:00Z", + "end_datetime": "2999-01-01T00:00:00Z", + "personalData": "no", + "metada_standards": "no", + "apis": "https://dataset.api.hub.geosphere.at/v1/docs/index.html", + "access_control": "open data", + "use_case_S4E": "1", + "use_case_NHM": "1", + "platform": "Eox" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 9.393909734939921, + 46.161328568692404 + ], + [ + 9.393909734939921, + 49.112000163568425 + ], + [ + 17.38218004543295, + 49.112000163568425 + ], + [ + 17.38218004543295, + 46.161328568692404 + ], + [ + 9.393909734939921, + 46.161328568692404 + ] + ] + ] + }, + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json", + "title": "data-access catalog" + } + ], + "assets": { + "SPARTACUS v1.2 daily data": { + "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1d-1km", + "roles": [ + "data" + ] + }, + "SPARTACUS v1.2 monthly data": { + "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1m-1km", + "roles": [ + "data" + ] + }, + "SPARTACUS v1.2 yearly data": { + "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1y-1km", + "roles": [ + "data" + ] + }, + "SPARTACUS v1.2 seasonal data": { + "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1s-1km", + "roles": [ + "data" + ] + } + }, + "bbox": [ + 9.393909734939921, + 46.161328568692404, + 17.38218004543295, + 49.112000163568425 + ], + "stac_extensions": [ + "https://stac-extensions.github.io/raster/v1.1.0/schema.json", + "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" + ] +} \ No newline at end of file From 38855fec10b01c273f59b05e14e6abeb1bc4ebb7 Mon Sep 17 00:00:00 2001 From: Kathi Schleidt Date: Thu, 30 May 2024 21:48:02 +0200 Subject: [PATCH 35/44] Revert "ChangeType.update stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json" --- stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json | 191 ------------------- 1 file changed, 191 deletions(-) delete mode 100644 stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json diff --git a/stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json b/stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json deleted file mode 100644 index bf89537a..00000000 --- a/stac_dist/SPARTACUS_v2.1/SPARTACUS_v2.1.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "id": "SPARTACUS_v2.1", - "properties": { - "license": "CC-BY-4.0", - "description": "The gridded data set describes the spatial distribution of observed air temperature (minimum temperature (TN) and maximum temperature (TX)), precipitation (RR) and absolute sunshine duration (SA) from day to day since 1961 in kilometer resolution over Austria. In addition to the original daily resolution, [monthly](https://data.hub.geosphere.at/dataset/spartacus-v2-1m-1km), [seasonal](https://data.hub.geosphere.at/dataset/spartacus-v2-1q-1km) and [annual](https://data.hub.geosphere.at/dataset/spartacus-v2-1y-1km) aggregates are available. The data set is operationally expanded on a daily basis.", - "providers": [ - { - "organization": "GeoSphere Austria", - "doc_link": "https://data.hub.geosphere.at/dataset/spartacus-v2-1d-1km", - "organization_email": "kontakt@geosphere.at" - } - ], - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - 112500, - 695500 - ], - "reference_system": "3416", - "type": "spatial", - "unit_of_measure": "m", - "step": "1000" - }, - "y": { - "axis": "y", - "extent": [ - 258500, - 586500 - ], - "reference_system": "3416", - "type": "spatial", - "unit_of_measure": "m", - "step": "1000" - }, - "time": { - "extent": [ - "19961-01-01T00:00Z", - "2999-01-01T00:00:00Z" - ], - "type": "temporal", - "step": "P1DT0H" - }, - "z": { - "extent": [ - null, - null - ], - "type": "spatial" - } - }, - "raster:bands": [ - { - "band_name": "RR", - "unit": "kg m-2", - "data_type": "float32", - "nodata": -999, - "definition": "daily precipitation", - "description": "daily sum (derived from daily sums measured between 07:00 CET of the respective day and 07:00 CET of the following day)" - }, - { - "band_name": "TX", - "unit": "degree_Celsius", - "data_type": "float32", - "nodata": -999, - "definition": "daily maximum of air temperature", - "description": "daily maximum (derived from daily maxima measured between 19:00 CET of the previous day and 19:00 CET of the respective day", - "comment": "only available in the daily data" - }, - { - "band_name": "TN", - "unit": "degree_Celsius", - "data_type": "float32", - "nodata": -999, - "definition": "daily minimum of air temperature", - "description": "daily minimum (derived from daily minima measured between 19:00 CET of the previous day and 19:00 CET of the respective day", - "comment": "only available in the daily data" - }, - { - "band_name": "TM", - "unit": "degree_Celsius", - "data_type": "float32", - "nodata": -999, - "definition": "aggregated mean of air temperature", - "description": "aggregated mean (derived from daily minima and maxima measured between 19:00 CET of the previous day and 19:00 CET of the respective day)", - "comment": "only available for aggregated products (monthly, yearly, seasonal)" - }, - { - "band_name": "SA", - "unit": "s", - "data_type": "float32", - "nodata": -999, - "definition": "daily duration of sunshine", - "description": "daily sum (derived from daily sums measured between 00:00 CET and 24:00 CET of the respective day)" - } - ], - "title": "SPARTACUS v2.1 - Spatial Reanalysis Dataset for Climate in Austria", - "datasource_type": "gridded data", - "keywords": "precipitation, temperature, sunshine duration, ", - "area_cover": "Austria", - "crs": "EPSG:3416", - "start_datetime": "19961-01-01T00:00Z", - "end_datetime": "2999-01-01T00:00:00Z", - "personalData": "no", - "metada_standards": "no", - "apis": "https://dataset.api.hub.geosphere.at/v1/docs/index.html", - "access_control": "open data", - "use_case_S4E": "1", - "use_case_NHM": "1", - "platform": "Eox" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - 9.393909734939921, - 46.161328568692404 - ], - [ - 9.393909734939921, - 49.112000163568425 - ], - [ - 17.38218004543295, - 49.112000163568425 - ], - [ - 17.38218004543295, - 46.161328568692404 - ], - [ - 9.393909734939921, - 46.161328568692404 - ] - ] - ] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": { - "SPARTACUS v1.2 daily data": { - "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1d-1km", - "roles": [ - "data" - ] - }, - "SPARTACUS v1.2 monthly data": { - "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1m-1km", - "roles": [ - "data" - ] - }, - "SPARTACUS v1.2 yearly data": { - "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1y-1km", - "roles": [ - "data" - ] - }, - "SPARTACUS v1.2 seasonal data": { - "href": "https://dataset.api.hub.geosphere.at/v1/grid/historical/spartacus-v1-1s-1km", - "roles": [ - "data" - ] - } - }, - "bbox": [ - 9.393909734939921, - 46.161328568692404, - 17.38218004543295, - 49.112000163568425 - ], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ] -} \ No newline at end of file From fabeff203ccdbd95f59a34a7c3a45b9bde258108 Mon Sep 17 00:00:00 2001 From: Peter Baumann Date: Tue, 4 Jun 2024 13:36:13 +0200 Subject: [PATCH 36/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index f0f2f987..4f775c64 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -11,7 +11,7 @@ For CIS encodings, the following requirements classes are of relevance: - Basic Types and Simple Components Schemas: `XML Schema elements and types defined in the “basic_types.xsd” and “simple_components.xsd” schema files implement all classes defined respectively in the “Basic Types” and “Simple Components” UML packages.` From the Basic Types and Simple Components, we rely on the Quantity and Category Elements. -While the Count Element would also be applicable, for the moment we will handle Counts as Quantities. +While the Count Element would also be applicable, for the moment we will handle Counts as Quantities with a uom of "1" for "unitless". ## SWE:DataRecord SWE:DataRecord, derived from the SWE Common AbstractDataComponent, can be used to group multiple components via the `field` attribute. From d3e1480f09336d6437096dda4b2ff0e5ecee7a7c Mon Sep 17 00:00:00 2001 From: Peter Baumann Date: Tue, 4 Jun 2024 13:40:37 +0200 Subject: [PATCH 37/44] Update rangeType.md --- CoverageEncoding/rangeType.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index 4f775c64..5e5ef06b 100644 --- a/CoverageEncoding/rangeType.md +++ b/CoverageEncoding/rangeType.md @@ -72,7 +72,8 @@ Note: UCUM 1.8 has been deprecated, current version is [UCUM 2.1](https://ucum.o The following shows an example of a Quantity rangeType taken from the Demography dataset. Note that ideally we would use the swe:Count type for this purpose. -``` +``` + @@ -83,7 +84,7 @@ The following shows an example of a Quantity rangeType taken from the Demography 65535 - + @@ -99,7 +100,8 @@ When working from a data request, the `Category List` field in the Bands section The following shows an example of a Category rangeType taken from the DominantLeafType dataset -``` +``` + From 246ad9dee9ebf15e888f1b44620a2ae73131386e Mon Sep 17 00:00:00 2001 From: Peter Baumann Date: Tue, 4 Jun 2024 13:42:12 +0200 Subject: [PATCH 38/44] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c40dba0f..51556bb8 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Contents of this space: - [How to Get Data Added](https://github.com/FAIRiCUBE/data-requests/wiki/How-to-Add-Data) - [Choosing the right pixel type](https://github.com/FAIRiCUBE/data-requests/wiki/Choosing-the-Right-Pixel-Type) +- [Details on the Coverage range type, as inherited from SWE Common](https://github.com/FAIRiCUBE/data-requests/blob/main/CoverageEncoding/rangeType.md) - [Connecting catalog with datacubes](https://github.com/FAIRiCUBE/data-requests/wiki/Connection-Catalog-Datacubes) - [Finding data ingested, datacube access how-to](https://github.com/FAIRiCUBE/data-requests/wiki) - [Use case specific modeling and access](https://github.com/FAIRiCUBE/data-requests/wiki/Data-Overview) From 8a77f3ac0d421d6fd52eaedc3028f88ea28867d6 Mon Sep 17 00:00:00 2001 From: baloola Date: Thu, 13 Jun 2024 10:23:56 +0200 Subject: [PATCH 39/44] adding more tests to validation --- .github/workflows/tests.yml | 5 +- stac/stac-generator/requirements.txt | 1 - stac/stac-generator/test/validator.py | 142 +++++++++++++++++++++----- 3 files changed, 121 insertions(+), 27 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bc2a52c9..60a06c06 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,10 @@ on: pull_request: branches: - main - + push: + branches: + - '**' + - '!master' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: diff --git a/stac/stac-generator/requirements.txt b/stac/stac-generator/requirements.txt index 0db26ed8..5df015df 100644 --- a/stac/stac-generator/requirements.txt +++ b/stac/stac-generator/requirements.txt @@ -1,6 +1,5 @@ pystac pytest -gql shapely stactools requests-toolbelt \ No newline at end of file diff --git a/stac/stac-generator/test/validator.py b/stac/stac-generator/test/validator.py index 6cb552f1..252233e0 100644 --- a/stac/stac-generator/test/validator.py +++ b/stac/stac-generator/test/validator.py @@ -5,19 +5,131 @@ def validate_item(item: pystac.item.Item): + item_is_EDC: bool = False + # for now exempt edc items from the inventory required fields + for link in item.links: + if link.rel == "about" and link.target.startswith("https://collections.eurodatacube.com"): + item_is_EDC = True + break + properties: dict[str, Any] = item.properties + if not item_is_EDC: + # validate Data Source + assert "dataSource" in properties.keys(), "No dataSource in the stac item" + assert isinstance(properties["dataSource"], str), "dataSource must be a string" + assert len(properties["dataSource"]) > 0, "dataSource string must not be empty" + + # validate Owner/Organisation + assert "providers" in properties, "No dataSource in the stac item" + assert isinstance(properties["providers"], list), "providers must be a list" + for provider in properties["providers"]: + assert "organization" in provider.keys() or "name" in provider.keys() + if "organization" in provider.keys(): + assert isinstance(provider["organization"], str), "provider's organization must be a string" + assert len(provider["organization"]) > 0, " provider's organization must not be empty" + if "name" in provider.keys(): + assert isinstance(provider["name"], str), "provider name must be a string" + assert len(provider["name"]) > 0, "provider name string must not be empty" + + # validate Horizontal section + assert isinstance(item.bbox, list), "bbox must be a list" + assert len(item.bbox) == 4, "bbox must contain a 4 coordinates" + assert isinstance(item.geometry, dict),"geometry must be an object" + + # Resolution of Horizontal Axis + assert isinstance(item.properties["cube:dimensions"], dict), "No dimensions in the stac item" + assert "x" in item.properties["cube:dimensions"].keys(), "No x dimension in the stac item" + assert "y" in item.properties["cube:dimensions"].keys(), "No y dimension in the stac item" + x = item.properties["cube:dimensions"]["x"] + y = item.properties["cube:dimensions"]["y"] + assert "step" in x.keys() and x["step"] is not None, "No x dimensions in the stac item" + assert isinstance(float(x["step"]), float), "x step must be float" + assert "step" in y.keys()and y["step"] is not None, "No y dimensions in the stac item" + assert isinstance(float(y["step"]), float), "y step must be float" + + # Units of Measurement + assert "unit_of_measure" in x.keys(), "No unit in x dimensions" + assert isinstance(x["unit_of_measure"], str), "x dimension unit_of_measure must be a string" + assert "unit_of_measure" in y.keys(), "No unit in y dimensions" + assert isinstance(y["unit_of_measure"], str), "y dimension unit_of_measure must be a string" + + # Horizontal CRS + assert "reference_system" in x.keys(), "No reference_system in x dimensions" + assert isinstance(x["reference_system"], str), "x dimension reference_system must be a string" + assert "reference_system" in y.keys(), "No reference_system in y dimensions" + assert isinstance(y["reference_system"], str), "x dimension reference_system must be a string" + + # Temporal + assert "t" in item.properties["cube:dimensions"].keys() or "time" in item.properties["cube:dimensions"].keys() + time = dict() + if "t" in item.properties["cube:dimensions"].keys(): + time = item.properties["cube:dimensions"]["t"] + else: + time = item.properties["cube:dimensions"]["time"] + + # Time (Begin/End) + assert "extent" in time.keys() or "values" in time.keys() + # Resolution of Time Axis (Interval) + if "values" in time.keys(): + assert "step" in time.keys(), "No step in time dimensions" + assert isinstance(time["step"], str), "time's step must be a string" + # Unit of measure + assert isinstance(time["unit_of_measure"], str), "time's unit_of_measure must be a string" + + + # Range Data validation + assert "raster:bands" in item.properties.keys() or "bands" in item.properties.keys() + + #TODO figure out a way to validate edc items , the ones with "bands" + + if "raster:bands" in item.properties.keys(): + bands = item.properties["raster:bands"] + for band in bands: + # Range Data Type + assert "data_type" in band.keys(), "No data_type in band" + assert isinstance(band["data_type"], str), "band's data_type must be a string" + assert len(band["data_type"]) > 0, "band's data_type string must not be empty" + + # Range Definition + assert "definition" in band.keys(), "No definition in band" + assert isinstance(band["definition"], str), "band's definition must be a string" + assert len(band["definition"]) > 0, "band's definition string must not be empty" + + # Range Description + assert "description" in band.keys(), "No description in band" + assert isinstance(band["description"], str), "band's description must be a string" + assert len(band["description"]) > 0, "band's description string must not be empty" + + # Null values + + assert "nodata" in band.keys() and band["nodata"]is not None, "No nodata in band" + assert isinstance(float(band["nodata"]), float), "band's nodata must be float" + + + # validate ID - assert isinstance(item.id, str) + assert isinstance(item.id, str), "id must be a string" + + assert len(item.id) > 0, "item id string must not be empty" - assert len(item.id) > 0 # validate Description - assert "description" in properties.keys() + assert "description" in properties.keys(), "No description in the stac item" + assert isinstance(properties["description"], str), "description must be a string" + assert len(properties["description"]) > 0, "description string must not be empty" + - # assert isinstance(properties["description"], str) - # assert len(properties["description"]) > 0 + # Legal - License + assert "license" in item.properties.keys(), "No license in the stac item" + assert isinstance(item.properties["license"], str), "license must be a string" + #TODO: keywords must be a list + # Keywords + assert "keywords" in item.properties.keys(), "No keywords in the stac item" + keywords = item.properties["keywords"] + assert isinstance(keywords, list) or (isinstance(keywords, str) and isinstance(keywords.split(","), list)), "keywords is not a valid list" + assert len(item.properties["keywords"]) > 0, "keywords must not be empty" @pytest.mark.parametrize("dir", [ os.path.join('stac_dist', f) for f in os.listdir( @@ -34,26 +146,6 @@ def test_items(dir): -# Mandatory Columns (additions in bold) -# ID [Column C] -# Description [D] -# Data Source [Column E] -# Owner/Organisation [G] -# Horizontal -# Horizontal CRS [Column P] -# Bounding Box (Horizontal) [Column Q-T] -# Resolution of Horizontal Axis (ie. Pixel Size) [Column W] -# Units of Measurement [Column U] -# Temporal -# Time (Begin/End) [Column AD-AE] -# Resolution of Time Axis (Intervall) [Column AH] -# Unit of measure [Column AF] -# Range Data Type [Column AR] -# Range Definition [AS] -# Range Description [AT] -# Null values [Column AQ] -# Legal - License [BA] -# Keywords - Keywords [BJ] # In addition, some fields can be filled with defaults, e.g. # Metadata Standard: STAC # Provision Date: Date being provided \ No newline at end of file From d8769705ccbe835e1a4e69f1f9d9f26156ba1bf9 Mon Sep 17 00:00:00 2001 From: baloola Date: Thu, 13 Jun 2024 10:44:01 +0200 Subject: [PATCH 40/44] remove traceback --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 60a06c06..c569e9df 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,4 +23,4 @@ jobs: - name: validate stac items run: | - pytest --verbosity=1 ./stac/stac-generator/test/validator.py + pytest --tb=no ./stac/stac-generator/test/validator.py From 5292f4e274c5231362169b06ec9ba7a7b9e51577 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 13 Jun 2024 13:48:38 +0200 Subject: [PATCH 41/44] Update README.md added link to metadata editor WebGUI --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 51556bb8..6d8460e9 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ Contents of this space: As data ingest is tightly connected with metadata management, use of data, etc., consider also these related spaces: +- [metadata-editor WebGUI](https://catalog-editor.eoxhub.fairicube.eu/): to provide and edit metadata to be shown in the [data catalog (STAC-fastapi)](https://catalog.eoxhub.fairicube.eu/?.language=en) + - [resource-metadata](https://github.com/FAIRiCUBE/resource-metadata): in addition to the issues providing metadata for resources, also used to discuss technical details on resource metadata - [Fairicube Hub](https://github.com/FAIRiCUBE/FAIRiCUBE-Hub-issue-tracker): for general FAIRiCUBE topics From 44278ad3b85a80e54c18299895c35131df0c0e0d Mon Sep 17 00:00:00 2001 From: baloola Date: Thu, 13 Jun 2024 14:22:35 +0200 Subject: [PATCH 42/44] remove premature merges --- .../CLMS_Urban_Atlas/CLMS_Urban_Atlas.json | 153 ---------------- stac_dist/LGN/LGN.json | 138 -------------- .../OSM_OpenStreetMap/OSM_OpenStreetMap.json | 112 ------------ .../corine_land_cover/corine_land_cover.json | 169 ------------------ .../dominant_leaf_type.json | 122 ------------- stac_dist/eu_demography/eu_demography.json | 122 ------------- .../european_settlement_map.json | 120 ------------- .../grassland_status/grassland_status.json | 122 ------------- .../water_and_wetness/water_and_wetness.json | 122 ------------- 9 files changed, 1180 deletions(-) delete mode 100644 stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json delete mode 100644 stac_dist/LGN/LGN.json delete mode 100644 stac_dist/OSM_OpenStreetMap/OSM_OpenStreetMap.json delete mode 100644 stac_dist/corine_land_cover/corine_land_cover.json delete mode 100644 stac_dist/dominant_leaf_type/dominant_leaf_type.json delete mode 100644 stac_dist/eu_demography/eu_demography.json delete mode 100644 stac_dist/european_settlement_map/european_settlement_map.json delete mode 100644 stac_dist/grassland_status/grassland_status.json delete mode 100644 stac_dist/water_and_wetness/water_and_wetness.json diff --git a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json b/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json deleted file mode 100644 index 89dfb584..00000000 --- a/stac_dist/CLMS_Urban_Atlas/CLMS_Urban_Atlas.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "id": "CLMS_Urban_Atlas", - "properties": { - "license": "other", - "description": "Urban Atlas in gridded form.", - "providers": [ - { - "organization_name": null, - "organization": "EEA", - "comments": "The Urban Atlas provides pan-European comparable land cover and land use data for Functional Urban Areas (FUA). Urban Atlas 2006 data contain 319 FUAs with more than 100,000 inhabitants as defined by the Urban Audit. The Urban Atlas 2012 data set contains 785 FUAs with more than 50,000 inhabitants, covering EU28 + EFTA countries + West Balkans + Turkey. The nomenclature includes 17 urban classes with MMU 0.25 ha (minor nomenclature changes compared to Urban Atlas 2006) and 10 Rural Classes with MMU 1ha. The data also contain population estimates for each polygon. The Urban Atlas 2018 coverage increased to 788 FUAs covering EU27 + EFTA countries + West Balkans + Turkey + UK. The nomenclature of the Land Cover/Land Use product is the same as for the 2012 version. It includes 17 urban classes with MMU 0.25 ha and 10 Rural Classes with MMU 1ha.The EEA indicator \u201cVegetation productivity\u201d shows a varying impact of the nr of frost days on productivity variations, depending on climatic zone and land cover combinations.", - "doc_link": "https://land.copernicus.eu/local/urban-atlas", - "organization_email": null, - "project_purpose": null - } - ], - "dataSource": "https://sdi.eea.europa.eu/catalogue/srv/eng/catalog.search#/metadata/fb4dffa1-6ceb-4cc0-8372-1ed354c285e6", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - -25.857, - 43.853 - ], - "reference_system": "EPSG:3035", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": "10" - }, - "y": { - "axis": "y", - "extent": [ - 27.9117, - 70.312 - ], - "reference_system": "EPSG:3035", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": "10" - }, - "time": { - "extent": [ - "2006-01-01T00:00:00Z", - "2018-01-01T00:00:00Z" - ], - "type": "temporal", - "step": "P6Y0M0DT0H0M0S" - }, - "z": { - "extent": [ - null, - null - ], - "reference_system": null, - "unit_of_measure": null, - "interpolation": null, - "type": "spatial" - } - }, - "datetime": "2000-01-01T00:00:00Z", - "raster:bands": [ - { - "band_name": "categorical", - "unit": null, - "data_type": "int16", - "nodata": null, - "definition": null, - "description": null, - "category_list": "11100 Continuous Urban Fabric (S.L. &gt; 80%) 11210 Discontinuous Dense Urban Fabric (S.L. : 50% - 80%) 11220 Discontinuous Medium Density Urban Fabric (S.L. : 30% - 50%) 11230 Discontinuous Low Density Urban Fabric (S.L. : 10% - 30%) 11240 Discontinuous Very Low Density Urban Fabric (S.L. &lt; 10%) 11300 Isolated Structures 12100 Industrial, commercial, public, military and private units 12210 Fast transit roads and associated land 12220 Other roads and associated land 12230 Railways and associated land 12300 Port areas 12400 Airports 13100 Mineral extraction and dump sites 13300 Construction sites 13400 Land without current use 14100 Green urban areas 14200 Sports and leisure facilities 21000 Arable land (annual crops) 22000 Permanent crops (vineyards, fruit trees, olive groves) 23000 Pastures 24000 Complex and mixed cultivation patterns 25000 Orchards at the fringe of urban classes 31000 Forests 32000 Herbaceous vegetation associations (natural grassland, moors...) 33000 Open spaces with little or no vegetations (beaches, dunes, bare rocks, glaciers) 40000 Wetland 50000 Water bodies", - "comment": null, - "interpolation": null - } - ], - "title": "CLMS Urban Atlas gridded", - "datasource_type": "raster", - "keywords": "urban", - "area_cover": "EEA38+UK", - "documentation": "https://sdi.eea.europa.eu/catalogue/srv/eng/catalog.search#/metadata/fb4dffa1-6ceb-4cc0-8372-1ed354c285e6", - "crs": "EPSG:3035", - "start_datetime": "2006-01-01T00:00:00Z", - "end_datetime": "2018-01-01T00:00:00Z", - "re_projection_crs": "", - "unit_of_measure": "", - "resolution": "", - "personalData": null, - "Provenance_name": "Urban Atlas vector product", - "preprocessing": "rasterization with ArcGis Tool FeatureToRaster. The polygon that overlaps the center of the cell yields the attribute to assign to the cell.", - "modification": null, - "provision": null, - "use_case_S4E": 1, - "use_case_WER": 2, - "use_case_NHM": null, - "use_case_NILU": 2, - "use_case_NHM_2": null, - "ingestion_status": "Contact S4E to get access", - "platform": "Eox" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - -29.0872431221431, - 12.993696422216487 - ], - [ - -29.0872431221431, - 12.99436189517529 - ], - [ - -29.086540089541263, - 12.99436189517529 - ], - [ - -29.086540089541263, - 12.993696422216487 - ], - [ - -29.0872431221431, - 12.993696422216487 - ] - ] - ] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [ - -29.0872431221431, - 12.993696422216487, - -29.086540089541263, - 12.99436189517529 - ], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ] -} \ No newline at end of file diff --git a/stac_dist/LGN/LGN.json b/stac_dist/LGN/LGN.json deleted file mode 100644 index a0b911e0..00000000 --- a/stac_dist/LGN/LGN.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "type": "Feature", - "stac_version": "2.2.0", - "id": "LGN", - "properties": { - "description": "", - "providers": [], - "dataSource": "", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - 0, - 280000 - ], - "reference_system": "28992", - "type": "spatial", - "unit_of_measure": "meter", - "step": "5" - }, - "y": { - "axis": "y", - "extent": [ - 300000, - 625000 - ], - "reference_system": "4326", - "type": "spatial", - "step": "-5" - }, - "time": { - "extent": [], - "type": "temporal", - "values": [ - "2012-01-01T00:00Z", - "2018-01-01T00:00Z", - "2019-01-01T00:00Z", - "2020-01-01T00:00Z", - "2021-01-01T00:00Z", - "2022-01-01T00:00Z" - ], - "step": "" - }, - "z": { - "extent": [ - null, - null - ], - "type": "spatial" - } - }, - "start_datetime": "2012-01-01T00:00Z", - "end_datetime": "2022-01-01T00:00Z", - "datetime": null, - "raster:bands": [ - { - "name": "Gray", - "unit": "10^0", - "data_type": "other", - "nodata": 0, - "definition": "http://www.opengis.net/def/dataType/OGC/0/unsignedByte" - } - ], - "title": "National Land Use Database (LGN)", - "platform": "rasdaman" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - 3.0464264025399874, - 50.66919756175071 - ], - [ - 3.0464264025399874, - 53.59620050977796 - ], - [ - 7.275203768012878, - 53.59620050977796 - ], - [ - 7.275203768012878, - 50.66919756175071 - ], - [ - 3.0464264025399874, - 50.66919756175071 - ] - ] - ] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=LGN&outputType=GeneralGridCoverage", - "rel": "about", - "type": "text/xml", - "title": "Link to the coverage description in XML" - }, - { - "href": "https://fairicube.rasdaman.com/rasdaman-dashboard/?layers=LGN", - "rel": "service", - "type": "text/html", - "title": "Link to the web application to Access, process gridded data" - } - ], - "assets": { - "thumbnail": { - "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman/ows?service=WMS&version=1.3.0&request=GetMap&layers=LGN&bbox=50.66919756175071,3.0464264025399874,53.59620050977796,7.275203768012878&time=\"2012-01-01T00:00Z\"&width=800&height=600&crs=EPSG:4326&format=image/png&transparent=true&styles=", - "roles": [ - "thumbnail" - ] - } - }, - "bbox": [ - 3.0464264025399874, - 50.66919756175071, - 7.275203768012878, - 53.59620050977796 - ], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ] -} \ No newline at end of file diff --git a/stac_dist/OSM_OpenStreetMap/OSM_OpenStreetMap.json b/stac_dist/OSM_OpenStreetMap/OSM_OpenStreetMap.json deleted file mode 100644 index 042634a9..00000000 --- a/stac_dist/OSM_OpenStreetMap/OSM_OpenStreetMap.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "type": "Feature", - "stac_version": "2.2.0", - "id": "OSM_OpenStreetMap", - "properties": { - "license": "ODbL-1.0", - "description": "OSM provides 2D maps", - "providers": [ - { - "name": "Open Street Map", - "organization": "OSM", - "description": "OSM provides 2D maps", - "url": "https://www.openstreetmap.org", - "project_purpose": "OSM provides 2D-level data for buildings" - } - ], - "dataSource": "", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - -180, - 180 - ], - "reference_system": "4326", - "type": "spatial" - }, - "y": { - "axis": "y", - "extent": [ - -90, - 90 - ], - "reference_system": "4326", - "type": "spatial" - }, - "time": { - "extent": [], - "type": "temporal", - "values": [ - "1900-01-01T00:00:00Z", - "2999-01-01T00:00:00Z" - ], - "step": "" - }, - "z": {} - }, - "raster:bands": [], - "title": "OSM_OpenStreetMap", - "datasource_type": "vector", - "area_cover": "World", - "start_datetime": "1900-01-01T00:00:00Z", - "end_datetime": "2999-01-01T00:00:00Z", - "use_case_S4E": "two", - "use_case_WER": "two", - "use_case_NHM": "one", - "use_case_NILU": "one", - "platform": "other" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - -180, - -90 - ], - [ - -180, - 90 - ], - [ - 180, - 90 - ], - [ - 180, - -90 - ], - [ - -180, - -90 - ] - ] - ] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [ - -180, - -90, - 180, - 90 - ], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ] -} \ No newline at end of file diff --git a/stac_dist/corine_land_cover/corine_land_cover.json b/stac_dist/corine_land_cover/corine_land_cover.json deleted file mode 100644 index 49cb45aa..00000000 --- a/stac_dist/corine_land_cover/corine_land_cover.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "id": "corine_land_cover", - "properties": { - "license": null, - "description": "It consists of an inventory of land cover in 44 cases.", - "providers": [ - { - "organization_name": null, - "organization": "EEA", - "comments": "The present 100m raster dataset is the 2018 CLC status layer modified for the purpose of consistent statistical analysis in the land cover change accounting system at EEA.\n\nCORINE Land Cover (CLC) data are produced from 1986 for European (EEA member or cooperating) countries. Altogether five mapping inventories were implemented in this period, producing five status layers (CLC1990, CLC2000, CLC2006, CLC2012, CLC2018) and four CLC-Change (CLCC) layers for the corresponding periods (1990-2000, 2000-2006, 2006-2012, 2012-2018). Pan-European CLC and CLCC data are available as vector and raster products.", - "doc_link": "https://land.copernicus.eu/pan-european/corine-land-cover", - "organization_email": null, - "project_purpose": null - } - ], - "dataSource": "https://land.copernicus.eu/pan-european/corine-land-cover", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - -31.561261, - 44.820775 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 100 - }, - "y": { - "axis": "y", - "extent": [ - 27.405827, - 71.409109 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 100 - }, - "time": { - "extent": [ - "1990-01-01T00:00:00Z", - "2018-01-01T00:00:00Z" - ], - "type": "temporal", - "step": "" - }, - "z": { - "extent": [ - null, - null - ], - "reference_system": null, - "unit_of_measure": null, - "interpolation": null, - "type": "spatial" - } - }, - "datetime": "2000-01-01T00:00:00Z", - "raster:bands": [ - { - "band_name": null, - "unit": "categorial, numeric code", - "data_type": "int8", - "nodata": null, - "definition": "CLC code - each code represents a colour", - "description": "Each colour is a landform feature (urban area, forests, etc)", - "category_list": "Multiple values", - "comment": null, - "interpolation": "Nearest\u200b" - } - ], - "title": "Corine Land Cover", - "datasource_type": "grid", - "keywords": null, - "area_cover": "EEA-38+UK", - "documentation": null, - "crs": "EPSG:3035", - "start_datetime": "1990-01-01T00:00:00Z", - "end_datetime": "2018-01-01T00:00:00Z", - "personalData": null, - "Provenance_name": "EO-based, produced by countries", - "preprocessing": null, - "modification": null, - "provision": null, - "use_case_S4E": 1, - "use_case_WER": 2, - "use_case_NHM": 1, - "use_case_NILU": null, - "use_case_NHM_2": null, - "ingestion_status": "Completed, year as integer, (1990,2000,2006,2012,2018)", - "platform": "Both" - }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - -31.561261000000002, - 27.405827000000002 - ], - [ - -31.561261000000002, - 71.409109 - ], - [ - 44.820775, - 71.409109 - ], - [ - 44.820775, - 27.405827000000002 - ], - [ - -31.561261000000002, - 27.405827000000002 - ] - ] - ] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman/ows?&SERVICE=WCS&VERSION=2.1.0&REQUEST=DescribeCoverage&COVERAGEID=corine_land_cover&outputType=GeneralGridCoverage", - "rel": "about", - "type": "text/xml", - "title": "Link to the rasdaman coverage description in XML" - }, - { - "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman-dashboard/?layers=corine_land_cover", - "rel": "service", - "type": "text/html", - "title": "Link to the rasdaman web application to Access, process gridded data" - } - ], - "assets": { - "thumbnail_rasdaman": { - "href": "https://catalog:JdpsUHpPoqXtbM3@fairicube.rasdaman.com/rasdaman/ows?service=WMS&version=1.3.0&request=GetMap&layers=corine_land_cover&bbox=27.405827000000002,-31.561261000000002,71.409109,44.820775&time=\"1990-01-01T00:00:00Z\"&width=800&height=600&crs=EPSG:4326&format=image/png&transparent=true&styles=", - "roles": [ - "thumbnail" - ] - } - }, - "bbox": [ - -31.561261000000002, - 27.405827000000002, - 44.820775, - 71.409109 - ], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ] -} \ No newline at end of file diff --git a/stac_dist/dominant_leaf_type/dominant_leaf_type.json b/stac_dist/dominant_leaf_type/dominant_leaf_type.json deleted file mode 100644 index cc3b93f4..00000000 --- a/stac_dist/dominant_leaf_type/dominant_leaf_type.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "properties": { - "license": null, - "description": "Denotes the leaf type dominant in a region - broadleaf or coniferous", - "area_cover": "EEA-38+UK", - "crs": "EPSG:3035", - "providers": [ - { - "organization": "EEA", - "organization_name": null, - "organization_email": null, - "orcid_id": null, - "project_purpose": null, - "doc_link": "https://land.copernicus.eu/pan-european/high-resolution-layers/forests/dominant-leaf-type/status-maps", - "comments": "https://sdi.eea.europa.eu/catalogue/srv/eng/catalog.search#/metadata/7b28d3c1-b363-4579-9141-bdd09d073fd8" - } - ], - "dataSource": "https://land.copernicus.eu/pan-european/high-resolution-layers/forests/dominant-leaf-type/status-maps", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - -10.6198, - 44.8212 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 20 - }, - "y": { - "axis": "y", - "extent": [ - 34.5619, - 71.1855 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 20 - }, - "z": { - "axis": "z", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "2012-01-01T00:00:00Z", - "2015-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", - "interpolation": null, - "regular": false - } - }, - "datetime": "2000-01-01T00:00:00Z", - "raster:bands": [ - { - "band_name": "Leaf type", - "unit": "categorial value", - "nodata": null, - "data_type": "int8", - "definition": "Type of leaf", - "description": "Describes the leaf type that is dominant in a region", - "category_list": "Non forest, broadleaf, coniferous, outside area", - "comment": null, - "interpolation": null - } - ], - "title": "High Resolution Layer - Forest -Dominant Leaf Type", - "datasource_type": "grid", - "personalData": null, - "Provenance_name": "EO-based", - "preprocessing": null, - "documentation": null, - "keywords": null, - "use_case_S4E": 1, - "use_case_WER": 2, - "use_case_NHM_2": null, - "use_case_NILU": null, - "use_case_NHM": 2, - "platform": "Both", - "ingestion_status": "Completed, year as integer, (2012,2015,2018)" - }, - "geometry": { - "type": "Polygon", - "coordinates": [] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "dominant_leaf_type" -} \ No newline at end of file diff --git a/stac_dist/eu_demography/eu_demography.json b/stac_dist/eu_demography/eu_demography.json deleted file mode 100644 index a9a2b84f..00000000 --- a/stac_dist/eu_demography/eu_demography.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "properties": { - "license": "These data shall not be used for commercial purposes (even within the user's organisation) without prior approval by the owner.\nUsers may not:\n- disseminate the dataset to clients outside their own organisation\n- sell the dataset \u2013 in whole or in part \u2013 to parties outside their organisation\n- use it for any other commercial purpose.", - "description": "European Demography on a 1km grid", - "area_cover": "EU", - "crs": "EPSG:3035", - "providers": [ - { - "organization": "Eurostat", - "organization_name": "GISCO", - "organization_email": null, - "orcid_id": null, - "project_purpose": null, - "doc_link": null, - "comments": null - } - ], - "dataSource": "https://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/population-distribution-demography/geostat", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - "944000.000", - "6505000.000" - ], - "reference_system": "EPSG:3035", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": "Other", - "step": 1000 - }, - "y": { - "axis": "y", - "extent": [ - "942000.000", - "5414000.000" - ], - "reference_system": "EPSG:3035", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": "Other", - "step": 1000 - }, - "z": { - "axis": "z", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "2018-01-01T00:00:00Z", - "2021-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", - "interpolation": "Other", - "step": "P3Y" - } - }, - "datetime": "2021-10-02T00:00:00Z", - "raster:bands": [ - { - "band_name": "Population total", - "unit": "https://qudt.org/schema/qudt/CountingUnit", - "nodata": 65535, - "data_type": "int16", - "definition": "https://qudt.org/vocab/quantitykind/Population", - "description": "The number of people living within the spatial unit", - "category_list": null, - "comment": null, - "interpolation": "Other" - } - ], - "title": "EU Demography", - "datasource_type": "grid", - "personalData": null, - "Provenance_name": "https://ec.europa.eu/eurostat/web/gisco/geodata/reference-data/population-distribution-demography/geostat", - "preprocessing": "https://un-ggim-europe.org/wp-content/uploads/2022/01/1121_UNGGIM_Europe_WG_DataIntegration_SWG1_SDG_IndicatorCalculation-and-Recommendations.pdf", - "documentation": "https://ec.europa.eu/eurostat/de/web/gisco/gisco-activities/integrating-statistics-geospatial-information/geostat-initiative", - "keywords": "Demography, Census, Population", - "use_case_S4E": null, - "use_case_WER": null, - "use_case_NHM_2": null, - "use_case_NILU": null, - "use_case_NHM": 2, - "platform": "Rasdaman", - "ingestion_status": "Completed, year as integer (2018)" - }, - "geometry": { - "type": "Polygon", - "coordinates": [] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "eu_demography" -} \ No newline at end of file diff --git a/stac_dist/european_settlement_map/european_settlement_map.json b/stac_dist/european_settlement_map/european_settlement_map.json deleted file mode 100644 index 8f6127ac..00000000 --- a/stac_dist/european_settlement_map/european_settlement_map.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "properties": { - "license": null, - "description": null, - "area_cover": "EEA-38+UK", - "crs": null, - "providers": [ - { - "organization": "JRC", - "organization_name": null, - "organization_email": null, - "orcid_id": null, - "project_purpose": null, - "doc_link": "https://land.copernicus.eu/pan-european/GHSL/european-settlement-map", - "comments": null - } - ], - "dataSource": " https://ghsl.jrc.ec.europa.eu/download.php", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "y": { - "axis": "y", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "z": { - "axis": "z", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "2012-01-01T00:00:00Z", - "2015-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", - "interpolation": null, - "step": "P3Y" - } - }, - "datetime": "2000-01-01T00:00:00Z", - "raster:bands": [ - { - "band_name": null, - "unit": null, - "nodata": null, - "data_type": null, - "definition": null, - "description": null, - "category_list": null, - "comment": null, - "interpolation": null - } - ], - "title": "European Settlement Map", - "datasource_type": "grid", - "personalData": null, - "Provenance_name": "EO-based", - "preprocessing": null, - "documentation": null, - "keywords": null, - "use_case_S4E": 1, - "use_case_WER": null, - "use_case_NHM_2": null, - "use_case_NILU": null, - "use_case_NHM": 1, - "platform": "Both", - "ingestion_status": "not ingested: no longer offered by CLMS" - }, - "geometry": { - "type": "Polygon", - "coordinates": [] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "european_settlement_map" -} \ No newline at end of file diff --git a/stac_dist/grassland_status/grassland_status.json b/stac_dist/grassland_status/grassland_status.json deleted file mode 100644 index a1389ff7..00000000 --- a/stac_dist/grassland_status/grassland_status.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "properties": { - "license": null, - "description": "Denotes grassland and non grassland areas", - "area_cover": "EEA-38+UK", - "crs": "EPSG:3035", - "providers": [ - { - "organization": "EEA", - "organization_name": null, - "organization_email": null, - "orcid_id": null, - "project_purpose": null, - "doc_link": "https://land.copernicus.eu/pan-european/high-resolution-layers/grassland", - "comments": "The HRL Grassland 2018 100 m aggregate raster product provides a basic land cover classification with two thematic classes (grassland / non-grassland) at 100m spatial resolution, covering the EEA38 area and the United Kingdom. The production of the High Resolution Grassland layers was coordinated by the European Environment Agency (EEA) in the frame of the EU Copernicus programme.\n\nThe main High Resolution Grassland product is the Grassland layer. This grassy and non-woody vegetation baseline product includes all kinds of grasslands: managed grassland, semi-natural grassland and natural grassy vegetation. It is a binary status layer for the 2015 reference year mapping grassland and all non-grassland areas in 20m and (aggregated) 100m pixel size and, for the 2018 reference year, in 10m and (aggregated) 100m pixel size." - } - ], - "dataSource": "https://land.copernicus.eu/pan-european/high-resolution-layers/grassland", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - -56.506, - 72.907 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 10 - }, - "y": { - "axis": "y", - "extent": [ - 24.284, - 72.665 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 10 - }, - "z": { - "axis": "z", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "2018-01-01T00:00:00Z", - "2018-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", - "interpolation": null, - "regular": false - } - }, - "datetime": "2000-01-01T00:00:00Z", - "raster:bands": [ - { - "band_name": "Value representing grassland", - "unit": "categorial value", - "nodata": null, - "data_type": "int8", - "definition": "Denotes if class is grassland, or not (or is outside area)", - "description": "Denotes if class is grassland, or not (or is outside area)", - "category_list": "Non grassland, grassland, outside area", - "comment": null, - "interpolation": null - } - ], - "title": "High Resolution Layer - Grassland", - "datasource_type": "grid", - "personalData": null, - "Provenance_name": "EO-based", - "preprocessing": null, - "documentation": null, - "keywords": null, - "use_case_S4E": 1, - "use_case_WER": 2, - "use_case_NHM_2": null, - "use_case_NILU": null, - "use_case_NHM": 2, - "platform": "Both", - "ingestion_status": "Completed, year as integer, (2015,2018)" - }, - "geometry": { - "type": "Polygon", - "coordinates": [] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "grassland_status" -} \ No newline at end of file diff --git a/stac_dist/water_and_wetness/water_and_wetness.json b/stac_dist/water_and_wetness/water_and_wetness.json deleted file mode 100644 index 69bbf653..00000000 --- a/stac_dist/water_and_wetness/water_and_wetness.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "type": "Feature", - "stac_version": "1.0.0", - "properties": { - "license": null, - "description": "Denotes water, wetness areas and sea water", - "area_cover": "EEA-38+UK", - "crs": "EPSG:3035", - "providers": [ - { - "organization": "EEA", - "organization_name": null, - "organization_email": null, - "orcid_id": null, - "project_purpose": null, - "doc_link": "https://land.copernicus.eu/pan-european/high-resolution-layers/water-wetness", - "comments": "The Copernicus High Resolution Water and Wetness (WAW) 2018 layer is a thematic product showing the occurrence of water and wet surfaces over the period from 2012 to 2018 for the EEA38 area and the United Kingdom.\nTwo products are available:\n- The main Water and Wetness (WAW) product, with defined classes of (1) permanent water, (2) temporary water, (3) permanent wetness and (4) temporary wetness.\n- The additional expert product: Water and Wetness Probability Index (WWPI).\nThe products show the occurrence of water and indicate the degree of wetness in a physical sense, assessed independently of the actual vegetation cover and are thus not limited to a specific land cover class and their relative frequencies." - } - ], - "dataSource": "https://land.copernicus.eu/pan-european/high-resolution-layers/water-wetness", - "cube:dimensions": { - "x": { - "axis": "x", - "extent": [ - -31.285, - 44.807 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 10 - }, - "y": { - "axis": "y", - "extent": [ - 27.642, - 71.165 - ], - "reference_system": "EPSG:4326", - "type": "spatial", - "unit_of_measure": "m", - "interpolation": null, - "step": 10 - }, - "z": { - "axis": "z", - "extent": [ - null, - null - ], - "reference_system": null, - "type": "spatial", - "unit_of_measure": null, - "interpolation": null - }, - "time": { - "extent": [ - "2018-01-01T00:00:00Z", - "2018-01-01T00:00:00Z" - ], - "type": "temporal", - "unit_of_measure": "y", - "interpolation": null, - "regular": false - } - }, - "datetime": "2000-01-01T00:00:00Z", - "raster:bands": [ - { - "band_name": "Water type", - "unit": "categorial value", - "nodata": null, - "data_type": "int8", - "definition": "Type of water and wetness", - "description": "Type of water and wetness", - "category_list": "Dry, permanent water, temporary water, permanent wet, temporary wet, sea water, unclassifiable, outside area", - "comment": null, - "interpolation": null - } - ], - "title": "High Resolution Layer - Water & Wetness", - "datasource_type": "grid", - "personalData": null, - "Provenance_name": "EO-based", - "preprocessing": null, - "documentation": null, - "keywords": null, - "use_case_S4E": 1, - "use_case_WER": 2, - "use_case_NHM_2": null, - "use_case_NILU": null, - "use_case_NHM": 2, - "platform": "Both", - "ingestion_status": "Completed, year as integer, (2015,2018)" - }, - "geometry": { - "type": "Polygon", - "coordinates": [] - }, - "links": [ - { - "rel": "root", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - }, - { - "rel": "parent", - "href": "../catalog.json", - "type": "application/json", - "title": "data-access catalog" - } - ], - "assets": {}, - "bbox": [], - "stac_extensions": [ - "https://stac-extensions.github.io/raster/v1.1.0/schema.json", - "https://stac-extensions.github.io/datacube/v2.0.0/schema.json" - ], - "id": "water_and_wetness" -} \ No newline at end of file From 22d3576843e996945695b09f608b220403c3d9d4 Mon Sep 17 00:00:00 2001 From: baloola Date: Thu, 13 Jun 2024 15:54:13 +0200 Subject: [PATCH 43/44] fix assert message --- stac/stac-generator/test/validator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stac/stac-generator/test/validator.py b/stac/stac-generator/test/validator.py index 252233e0..aee23bc9 100644 --- a/stac/stac-generator/test/validator.py +++ b/stac/stac-generator/test/validator.py @@ -43,9 +43,9 @@ def validate_item(item: pystac.item.Item): assert "y" in item.properties["cube:dimensions"].keys(), "No y dimension in the stac item" x = item.properties["cube:dimensions"]["x"] y = item.properties["cube:dimensions"]["y"] - assert "step" in x.keys() and x["step"] is not None, "No x dimensions in the stac item" + assert "step" in x.keys() and x["step"] is not None, "No step in the x dimension" assert isinstance(float(x["step"]), float), "x step must be float" - assert "step" in y.keys()and y["step"] is not None, "No y dimensions in the stac item" + assert "step" in y.keys()and y["step"] is not None, "No step in the x dimension" assert isinstance(float(y["step"]), float), "y step must be float" # Units of Measurement From b7d6ca899f8212f0292d6ae4519d73dec855640d Mon Sep 17 00:00:00 2001 From: baloola Date: Thu, 13 Jun 2024 23:47:30 +0200 Subject: [PATCH 44/44] modifying validation --- stac/stac-generator/test/validator.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/stac/stac-generator/test/validator.py b/stac/stac-generator/test/validator.py index aee23bc9..0a3b0c7b 100644 --- a/stac/stac-generator/test/validator.py +++ b/stac/stac-generator/test/validator.py @@ -1,6 +1,8 @@ import pystac import pytest import os +import json + from typing import Any @@ -49,10 +51,10 @@ def validate_item(item: pystac.item.Item): assert isinstance(float(y["step"]), float), "y step must be float" # Units of Measurement - assert "unit_of_measure" in x.keys(), "No unit in x dimensions" - assert isinstance(x["unit_of_measure"], str), "x dimension unit_of_measure must be a string" - assert "unit_of_measure" in y.keys(), "No unit in y dimensions" - assert isinstance(y["unit_of_measure"], str), "y dimension unit_of_measure must be a string" + assert "unit" in x.keys(), "No unit in x dimensions" + assert isinstance(x["unit"], str), "x dimension unit must be a string" + assert "unit" in y.keys(), "No unit in y dimensions" + assert isinstance(y["unit"], str), "y dimension unit must be a string" # Horizontal CRS assert "reference_system" in x.keys(), "No reference_system in x dimensions" @@ -63,7 +65,7 @@ def validate_item(item: pystac.item.Item): # Temporal assert "t" in item.properties["cube:dimensions"].keys() or "time" in item.properties["cube:dimensions"].keys() time = dict() - if "t" in item.properties["cube:dimensions"].keys(): + if "t" in item.properties["cube:dimensions"].keys() or "time" in item.properties["cube:dimensions"].keys(): time = item.properties["cube:dimensions"]["t"] else: time = item.properties["cube:dimensions"]["time"] @@ -75,7 +77,7 @@ def validate_item(item: pystac.item.Item): assert "step" in time.keys(), "No step in time dimensions" assert isinstance(time["step"], str), "time's step must be a string" # Unit of measure - assert isinstance(time["unit_of_measure"], str), "time's unit_of_measure must be a string" + assert isinstance(time["unit"], str), "time's unit must be a string" # Range Data validation @@ -141,7 +143,10 @@ def test_items(dir): 'catalog.json') and f.endswith('.json')] for item in items: - stac_item = pystac.Item.from_file(os.path.join(dir, item)) + item_path = os.path.join(dir, item) + + stac_item = pystac.Item.from_file(item_path) + validate_item(stac_item)