diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bc2a52c9..c569e9df 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: @@ -20,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 diff --git a/CoverageEncoding/rangeType.md b/CoverageEncoding/rangeType.md index f0f2f987..5e5ef06b 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. @@ -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 -``` +``` + diff --git a/README.md b/README.md index c40dba0f..6d8460e9 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) @@ -15,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 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..0a3b0c7b 100644 --- a/stac/stac-generator/test/validator.py +++ b/stac/stac-generator/test/validator.py @@ -1,23 +1,137 @@ import pystac import pytest import os +import json + from typing import Any 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 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 step in the x dimension" + assert isinstance(float(y["step"]), float), "y step must be float" + + # Units of Measurement + 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" + 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() or "time" 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"], str), "time's unit 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( @@ -29,31 +143,14 @@ 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) -# 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 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. > 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. < 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