diff --git a/workshop/content/docs/assets/images/edr-plugin3.png b/workshop/content/docs/assets/images/edr-plugin3.png deleted file mode 100644 index 6ca53e52..00000000 Binary files a/workshop/content/docs/assets/images/edr-plugin3.png and /dev/null differ diff --git a/workshop/content/docs/assets/images/edr-plugin4.png b/workshop/content/docs/assets/images/edr-plugin4.png deleted file mode 100644 index 736ee5b1..00000000 Binary files a/workshop/content/docs/assets/images/edr-plugin4.png and /dev/null differ diff --git a/workshop/content/docs/assets/images/edr-plugin5.png b/workshop/content/docs/assets/images/edr-plugin5.png deleted file mode 100644 index 0afd6578..00000000 Binary files a/workshop/content/docs/assets/images/edr-plugin5.png and /dev/null differ diff --git a/workshop/content/docs/assets/images/edr-plugin6.png b/workshop/content/docs/assets/images/edr-plugin6.png deleted file mode 100644 index aefe830d..00000000 Binary files a/workshop/content/docs/assets/images/edr-plugin6.png and /dev/null differ diff --git a/workshop/content/docs/assets/images/edr-position-query-html.png b/workshop/content/docs/assets/images/edr-position-query-html.png new file mode 100644 index 00000000..e60490ba Binary files /dev/null and b/workshop/content/docs/assets/images/edr-position-query-html.png differ diff --git a/workshop/content/docs/publishing/ogcapi-edr.md b/workshop/content/docs/publishing/ogcapi-edr.md index 06fe33db..1c2f6f1b 100644 --- a/workshop/content/docs/publishing/ogcapi-edr.md +++ b/workshop/content/docs/publishing/ogcapi-edr.md @@ -25,7 +25,7 @@ and coverage provider plugins. ## Publish environmental data in pygeoapi -Let's try publishing some ICOADS data via the EDR xarray plugin. The sample ICOADS data can be found in `workshop/exercises/data/coads_sst.nc`: +Let's try publishing sample [weather forecast model data](https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast) from NOAA via the EDR xarray plugin. The sample data can be found in `workshop/exercises/data/gfs_tmp2m.zarr`: !!! question "Update the pygeoapi configuration" @@ -33,42 +33,46 @@ Let's try publishing some ICOADS data via the EDR xarray plugin. The sample ICOA Open the pygeoapi configuration file in a text editor. Add a new dataset section as follows: ``` {.yaml linenums="1"} - icoads-sst: + noaa-gfs: type: collection - title: International Comprehensive Ocean-Atmosphere Data Set (ICOADS) - description: International Comprehensive Ocean-Atmosphere Data Set (ICOADS) + title: Global Forecast System (GFS), 2 metre air temperature + description: Global Forecast System (GFS), 2 metre air temperature keywords: - - icoads - - sst + - gfs + - forecast - air temperature extents: spatial: - bbox: [-180,-90,180,90] + bbox: [-128,23,-65,50] crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 temporal: - begin: 2000-01-16T06:00:00Z - end: 2000-12-16T06:00:00Z + begin: 2023-09-27T18:00:00Z + end: 2023-09-28T06:00:00Z links: - type: text/html rel: canonical title: information - href: https://psl.noaa.gov/data/gridded/data.coads.1deg.html + href: https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast hreflang: en-US providers: - type: edr name: xarray-edr - data: /data/coads_sst.nc + data: /data/gfs_tmp2m.zarr + x_field: lon + y_field: lat + time_field: time format: - name: NetCDF - mimetype: application/x-netcdf + name: zarr + mimetype: application/zip ``` Save the configuration and restart Docker Compose. Navigate to to evaluate whether the new dataset has been published. -At first glance, the `icoads-sst` collection appears as a normal OGC API - Coverages collection. Look a bit closer at the collection description, and notice -that there is a `parameter_names` key that describes EDR parameter names for the collection queries. +At first glance, the Global Forecast System (GFS), 2 metre air temperature (`noaa-gfs`) collection appears as a normal OGC API collection. Look a bit closer at the collection description (), and notice the "Data Queries" and "Parameters" sections (add `f=json` to the collection description URL to inspect the additional EDR specific elements such as `data_queries` and `parameter_names` various JSON elements). The "Parameters" section describes the environmental parameters associated with the collection which can be used as part of a collection query. -Try visualizing the following EDR position query in a web browser: +Try visualizing the following EDR position query (focused on Fort Lauderdale, USA) in a web browser: . Note the interactive graph displaying the time series of 2 metre temperature data. + +![](../assets/images/edr-position-query-html.png){ width=100% } ## Client access @@ -82,26 +86,6 @@ You can access the plugin through an entry on the plugin menu. ![](../assets/images/edr-plugin2.png){ width=100% } -The first thing to setup is the server url. Use the url of the Landing Page here: `http://localhost:5000/` - -!!! tip "You should also start by defining the folder where you would like the data fetched by the plugin to be downloaded" - -![](../assets/images/edr-plugin3.png){ width=100% } - -The combo box will be populated with all the collections available on that server. Select the EDR collection: `International Comprehensive Ocean-Atmosphere Data Set (ICOADS)`. - -!!! tip "You may safely ignore the warnings displayed here" - -![](../assets/images/edr-plugin4.png){ width=100% } - -The data query combo box will be populated with the data query types available for this collection; in this case: position and cube. You may select the cube query and then click the button to set the spatial extent of that query. A new dialog will open, displaying multiple options to define the spatial extent. You may choose the `Draw on canvas`, to draw a rectangle in the map view extent. - -![](../assets/images/edr-plugin5.png){ width=100% } - -You can close this dialog and run the query. The plugin will fetch all the data available that fits into this query and display it as a layer group. - -![](../assets/images/edr-plugin6.png){ width=100% } - ### OWSLib - Advanced [OWSLib](https://owslib.readthedocs.io) is a Python library to interact with OGC Web Services and supports a number of OGC APIs including OGC API - Environmental Data Retrieval. @@ -135,10 +119,10 @@ You can close this dialog and run the query. The plugin will fetch all the data >>> collections = w.collections() >>> len(collections['collections']) 13 - >>> icoads_sst = w.collection('icoads-sst') - >>> icoads_sst['parameter_names'].keys() - dict_keys(['SST', 'AIRT', 'UWND', 'VWND']) - >>> data = w.query_data('icoads-sst', 'position', coords='POINT(174.7645 -36.8509)', parameter_names=['SST', 'AIRT']) + >>> noaa_gfs = w.collection('noaa-gfs') + >>> noaa_gfs['parameter_names'].keys() + dict_keys(['t2m']) + >>> data = w.query_data('noaa-gfs', 'position', coords='POINT(-80.1373 26.1224)', parameter_names=['t2m']) >>> data # CoverageJSON data ``` @@ -153,10 +137,10 @@ You can close this dialog and run the query. The plugin will fetch all the data >>> collections = w.collections() >>> len(collections['collections']) 13 - >>> icoads_sst = w.collection('icoads-sst') - >>> icoads_sst['parameter_names'].keys() - dict_keys(['SST', 'AIRT', 'UWND', 'VWND']) - >>> data = w.query_data('icoads-sst', 'position', coords='POINT(174.7645 -36.8509)', parameter_names=['SST', 'AIRT']) + >>> noaa_gfs= w.collection('noaa-gfs') + >>> noaa_gfs['parameter_names'].keys() + dict_keys(['t2m']) + >>> data = w.query_data('noaa-gfs', 'position', coords='POINT(-80.1373 26.1224)', parameter_names=['t2m']) >>> data # CoverageJSON data ``` diff --git a/workshop/exercises/data/README.md b/workshop/exercises/data/README.md index f8c2ace2..0c6b52a3 100644 --- a/workshop/exercises/data/README.md +++ b/workshop/exercises/data/README.md @@ -26,59 +26,59 @@ This directory provides sample data to demonstrate functionality. - copyright: Comune di Firenze - license: CC BY 4.0 -### ICOADS -- title: [coads_sst.nc](coads_sst.nc) -- description: The International Comprehensive Ocean-Atmosphere Data Set (ICOADS) offers surface marine data spanning the past three centuries, and simple gridded monthly summary products for 2° latitude x 2° longitude boxes back to 1800 (and 1x1 boxes since 1960)° these data and products are freely distributed worldwide. As it contains observations from many different observing systems encompassing the evolution of measurement technology over hundreds of years, ICOADS is probably the most complete and heterogeneous collection of surface marine data in existence. -- copyright: NOAA Physical Sciences Library -- license: ICOADS data provided by the NOAA/OAR/ESRL PSL, Boulder, Colorado, USA, from their Web site at https://psl.noaa.gov. - +### NOAA GFS +- title: [gfs_tmp2m.zarr](./gfs_tmp2m.zarr) +- description: The Global Forecast System (GFS) is a National Centers for Environmental Prediction (NCEP) weather forecast model that generates data for dozens of atmospheric and land-soil variables, including temperatures, winds, precipitation, soil moisture, and atmospheric ozone concentration. The system couples four separate models (atmosphere, ocean model, land/soil model, and sea ice) that work together to accurately depict weather conditions. +- url: https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast +- copyright: National Oceanic and Atmospheric Administration +- license: GFS data provided by the NOAA/NCEI, https://www.ncei.noaa.gov ## Metadata/Records ### Free Wifi Hotspots in Florence -- title: [./firenze/metadata/xml/free-wifi-florence.xml](./firenze/metadata/xml/free-wifi-florence.xml) +- title: [firenze/metadata/xml/free-wifi-florence.xml](./firenze/metadata/xml/free-wifi-florence.xml) - url: https://opendata.comune.fi.it/?q=metarepo/datasetinfo&id=fb5b7bac-bcb0-4326-9388-7e3f3d671d71 - description: The dataset shows the location of the places in the Municipality of Florence where a free wireless internet connection service (Wifi) is available. - copyright: Comune di Firenze - license: CC BY 4.0 ### Carsharing spots in Florence -- title: [./firenze/metadata/xml/carsharing-florence.xml](./firenze/metadata/xml/carsharing-florence.xml) +- title: [firenze/metadata/xml/carsharing-florence.xml](./firenze/metadata/xml/carsharing-florence.xml) - url: http://dati.cittametropolitana.fi.it/geonetwork/srv/ita/catalog.search#/metadata/cmfi:9c92966b-ae6b-42d4-9729-592b016e4b82 - description: Punctual positioning of the car-sharing activities of the Metropolitan City of Florence. - copyright: Comune di Firenze - license: CC BY 4.0 ### German Soil Types -- title: [./bodenart.en.csv](./bodenart.en.csv) +- title: [bodenart.en.csv](./bodenart.en.csv) - url: https://registry.gdi-de.org/codelist/de.bund.thuenen/bodenart/bodenart.en.csv - description: Bodenarten auf Basis der Bodenkundlichen Kartieranleitung 5. Auflage (KA5) - copyright: Johann Heinrich von Thünen-Institut - license: CC BY 4.0 ### Estonia Dams -- title: [./tartu/metadata/xml/estonia-dams.xml](./tartu/metadata/xml/estonia-dams.xml) +- title: [tartu/metadata/xml/estonia-dams.xml](./tartu/metadata/xml/estonia-dams.xml) - url: https://metadata.geoportaal.ee/geonetwork/srv/eng/catalog.search#/metadata/937c4456-fd9f-40cf-89ba-30be47146858 - description: Eesti paisude ruumiandmekogum koondab andmeid paisude asukohtade, tehniliste parameetrite ja seisundi kohta. Andmeid hallatakse Eesti Looduse Infosüsteemis (EELIS). - copyright: Keskkonnaagentuur - license: CC BY-SA 3.0 ### Estonia Landcover -- title: [./tartu/metadata/xml/estonia-landcover.xml](./tartu/metadata/xml/estonia-landcover.xml) +- title: [tartu/metadata/xml/estonia-landcover.xml](./tartu/metadata/xml/estonia-landcover.xml) - url: https://metadata.geoportaal.ee/geonetwork/srv/eng/catalog.search#/metadata/2cde09a2-ea86-4a73-9768-6c7ba78bc0e6 - description: Eesti maakatte andmebaas. Koostatud ühtse üle-euroopalise Corine Land Cover metoodika alusel. Minimaalne kaardistusühik 25 ha, hierarhiline nomenklatuur IV taset. - copyright: Keskkonnaagentuur - license: CC BY-SA 3.0 ### Estonia Transport -- title: [./tartu/metadata/xml/estonia-transport.xml](./tartu/metadata/xml/estonia-transport.xml) +- title: [tartu/metadata/xml/estonia-transport.xml](./tartu/metadata/xml/estonia-transport.xml) - url: https://metadata.geoportaal.ee/geonetwork/srv/eng/catalog.search#/metadata/bf38a8fc-96f1-4d34-9130-18160e489514 - description: Ruumiandmekogum "Eesti topograafia andmekogu - transport" hõlmab Eesti topograafia andmekogu (ETAK) reaalsusmudeli transpordi gruppi koondatud reaalse maailma nähtuseid, mis on klassifitseeritud nähtusklassideks - copyright: Keskkonnaagentuur - license: CC BY-SA 3.0 ### NASA Blue Marble Night Lights Data sample over Estonia -- title: [./tartu/estonia_light.tif](./tartu/estonia_light.tif) +- title: [tartu/estonia_light.tif](./tartu/estonia_light.tif) - url: https://blackmarble.gsfc.nasa.gov/ - description: At night, satellite images of Earth capture a uniquely human signal--artificial lighting. Remotely-sensed lights at night provide a new data source for improving our understanding of interactions between human systems and the environment. NASA has developed the Black Marble, a daily calibrated, corrected, and validated product suite, so nightlight data can be used effectively for scientific observations. Black Marble is playing a vital role in research on light pollution, illegal fishing, fires, disaster impacts and recovery, and human settlements and associated energy infrastructures. - copyright: NASA diff --git a/workshop/exercises/data/coads_sst.nc b/workshop/exercises/data/coads_sst.nc deleted file mode 100644 index 94434632..00000000 Binary files a/workshop/exercises/data/coads_sst.nc and /dev/null differ diff --git a/workshop/exercises/data/gfs_tmp2m.zarr/.zattrs b/workshop/exercises/data/gfs_tmp2m.zarr/.zattrs new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/workshop/exercises/data/gfs_tmp2m.zarr/.zattrs @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/workshop/exercises/data/gfs_tmp2m.zarr/.zgroup b/workshop/exercises/data/gfs_tmp2m.zarr/.zgroup new file mode 100644 index 00000000..cab13da6 --- /dev/null +++ b/workshop/exercises/data/gfs_tmp2m.zarr/.zgroup @@ -0,0 +1,3 @@ +{ + "zarr_format": 2 +} \ No newline at end of file diff --git a/workshop/exercises/data/gfs_tmp2m.zarr/.zmetadata b/workshop/exercises/data/gfs_tmp2m.zarr/.zmetadata new file mode 100644 index 00000000..3910bb2d --- /dev/null +++ b/workshop/exercises/data/gfs_tmp2m.zarr/.zmetadata @@ -0,0 +1 @@ +{"metadata": {".zgroup": {"zarr_format": 2}, ".zattrs": {}, "heightAboveGround/.zattrs": {"long_name": "height above the surface", "units": "m", "positive": "up", "standard_name": "height", "_ARRAY_DIMENSIONS": []}, "heightAboveGround/.zarray": {"shape": [], "chunks": [], "dtype": "