This page points to servers and clients implementing the OGC API - Environmental Data Retrieval standard.
Modern web browsers can, of course, act as clients.
To help promote OGC API standards and their implementations, implementers of OGC API standards are encouraged to register their implementations on the Programmable Web API Directory (https://www.programmableweb.com/add/api), in addition to registering at the OGC Compliance Database (https://www.ogc.org/resource/products/registration).
These are the implementations that were used for the development of the standard:
- UK Met Office
Further details - US NWS
Further details - IBL
Further details - Wuhan University
Further details - ESRI Image Server facade
Further details - USGS, Monitoring Networks wiki page mockup
Further details
Further implementations are planned or have been proposed for 2021:
- Unidata OpenDAP/THREDDS enhancement
- NASA/JPL enhancement to Extensible Data Gateway Environment (EDGE)
Several other organisations, such as the European Centre for Medium-range Weather Forecasts (ECWMF), British Antarctic Survey (BAS) and the British Oceanographic Data Centre (BODC) and others, are currently waiting until the full formal standard is published before committing resources.
The pygeoapi project implements the current EDR candidate standard. pygeoapi is a free and open source OGC API server implementation written in Python, which supports a robust plugin mechanism, allowing for flexible integration of spatiotemporal data into the OGC API family of standards, including EDR.
Servers:
- Example Server developed by Mark Burgoyne.
Clients:
Server description: implemented using python supports point, radius, area, trajectory and location queries
Client description:
- position:
http://labs.metoffice.gov.uk/edr/collections/terrain_tiles/position?coords=POINT(101.896366 45.209662)¶meter-name=Height&crs=CRS84&f=CoverageJSON
- area: http://labs.metoffice.gov.uk/edr/collections/global_pop_density/area?coords=POLYGON((-3.652394 51.373721,-3.511786 50.264415,-1.973894 50.499557,-2.114501 51.73946,-3.652394 51.373721))¶meter-name=Pop_Density&crs=CRS84&f=CoverageJSON
- radius: http://labs.metoffice.gov.uk/edr/collections/global_pop_density/radius?coords=POINT(-0.104939 51.513418)&within=30&within-units=km¶meter-name=Pop_Density&crs=CRS84&f=CoverageJSON
- trajectory:
http://labs.metoffice.gov.uk/edr/collections/terrain_tiles/trajectory?coords=LINESTRING(-3.519 50.737,-3.511 50.745,-3.504 50.753,-3.496 50.762,-3.489 50.77,-3.481 50.778,-3.473 50.786,-3.466 50.795,-3.458 50.803,-3.451 50.811,-3.443 50.819,-3.435 50.828,-3.428 50.836,-3.42 50.844,-3.412 50.853,-3.403 50.857,-3.392 50.859,-3.381 50.861,-3.37 50.863,-3.359 50.865,-3.348 50.867,-3.336 50.869,-3.325 50.871,-3.314 50.873,-3.303 50.875,-3.292 50.877,-3.281 50.879,-3.27 50.881,-3.259 50.883,-3.248 50.885,-3.237 50.887,-3.226 50.889,-3.215 50.89,-3.204 50.892,-3.192 50.894,-3.181 50.896,-3.17 50.898,-3.159 50.9,-3.148 50.902,-3.137 50.904,-3.126 50.906,-3.115 50.908,-3.104 50.91,-3.093 50.912,-3.082 50.914,-3.071 50.916,-3.06 50.918,-3.049 50.92,-3.048 50.931,-3.046 50.943,-3.045 50.954,-3.043 50.965,-3.042 50.976,-3.041 50.987,-3.039 50.998,-3.038 51.009,-3.036 51.021,-3.035 51.032,-3.034 51.043,-3.032 51.054,-3.031 51.065,-3.029 51.076,-3.028 51.088,-3.027 51.099,-3.025 51.11,-3.024 51.121,-3.022 51.132,-3.021 51.143,-3.02 51.155,-3.018 51.165,-3.007 51.165,-2.995 51.165,-2.984 51.165,-2.973 51.165,-2.962 51.165,-2.95 51.164,-2.939 51.164,-2.928 51.164,-2.917 51.164,-2.906 51.164,-2.894 51.164,-2.883 51.163,-2.872 51.163,-2.861 51.163,-2.849 51.163,-2.838 51.163)¶meter-name=Height&crs=CRS84&f=CoverageJSON
- sample URLs
- command line invocations
- code snippets
Servers:
- Example Server developed by Shane Mill
Clients:
Server description: implemented using pygeoapi
to provide a visual interface client.
Supports position, area, cube and XY trajectory queries. Provides schema support for CoverageJSON, JSON,
text, XML (IWXXM), GRIB and netCDF. Implementation uses open source software such as Flask, Xarray,
Dask, and Zarr to name a few.
Client description: A series of simple clients demonstrating the feature extraction of a position time series with visualization of the data in the form of a plotly graph. Demonstrates the ability to extract data using structured EDR-API requests from a variety of data sources and systems.
- position query:
https://data-api.mdl.nws.noaa.gov/EDR-API/collections/automated_gfs_100_forecast_time0_lat_0_lon_0_Ground_or_water_surface/instance/00z/position?coords=POINT(-89.331642 41.803319)¶metername=TMP_P0_L1_GLL0&datetime=2021-01-14T00:00:00/2021-01-14T18:00:00&crs=EPSG:4326&interpolation=nearest_neighbor&f=CoverageJSON
- area query:
https://data-api.mdl.nws.noaa.gov/EDR-API/collections/automated_gfs_100_forecast_time0_lat_0_lon_0_Ground_or_water_surface/instance/00z/area?coords=POLYGON((-101.669985 54.012139,-116.184261 36.029225,-79.738717 25.623898,-62.986553 49.54781,-101.669985 54.012139))¶metername=TMP_P0_L1_GLL0&datetime=2021-01-14T00:00:00/2021-01-14T12:00:00&crs=EPSG:4326&interpolation-x=nearest_neighbor&interpolation-y=nearest_neighbor&f=CoverageJSON
- cube query:
https://data-api.mdl.nws.noaa.gov/EDR-API/collections/automated_gfs_100_forecast_time0_lat_0_lon_0_Ground_or_water_surface/instance/00z/cube?coords=POLYGON((-100.135432 26.033864,-100.135432 52.365371,-66.511224 52.365371,-66.511224 26.033864,-100.135432 26.033864))¶metername=TMP_P0_L1_GLL0&datetime=2021-01-14T00:00:00/2021-01-14T18:00:00&crs=EPSG:4326&interpolation-x=nearest_neighbor&interpolation-y=nearest_neighbor&f=CoverageJSON
- sample URLs
- command line invocations
- code snippets
Servers:
Server description:
- Serves live GFS model data and live SYNOP, TEMP and METAR reports
- Implements point, radius, area, cube and trajectory query
/edr/collections/GFS_isobaric/position?parameter-name=temperature&datetime=2021-01-19T09:00:00&coords=POINT(17.11 48.14)&z=850&f=CoverageJSON
GFS 850 hPa temperature in Bratislava at 2021-01-19 09:00:00 UTC:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/position?parameter-name=temperature&datetime=2021-01-19T09:00:00&coords=POINT(17.11 48.14)&z=850&f=CoverageJSON
GFS temperature in Bratislava at 2021-01-19 09:00 UTC, all available vertical levels:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/position?parameter-name=temperature&datetime=2021-01-19T09:00:00&coords=POINT(17.11 48.14)&z=../..&f=CoverageJSON
GFS 850 hPa temperature in Bratislava from 2021-01-19 00:00 UTC until 2021-01-20 00:00 UTC @ 1h step:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/position?parameter-name=temperature&datetime=R25/2021-01-19T00:00:00/PT1H&coords=POINT(17.11 48.14)&z=850&f=CoverageJSON
Air temperature, wind speed and wind direction from METARs within 100 km radius around Bratislava, 24h interval:
https://ogcie.iblsoft.com/edr/collections/metar/radius?parameter-name=station,validity,air-temperature,wind-speed,wind-direction&coords=POINT(17.21 48.18)&within=100&within-units=km&datetime=2021-01-19T00:00:00/2021-01-20T00:00:00&f=KernelTSV
GFS wind (U and V component) within Slovakia at 2020-01-19 06:00 UTC, 850 hPa:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric_3/area?parameter-name=u-component-of-wind,v-component-of-wind&datetime=2021-01-19T06:00:00&coords=POLYGON((17.98 49.08, 16.94 48.70, 16.95 48.01, 17.96 47.63, 18.99 47.80, 21.00 48.56, 22.25 48.39, 22.75 49.14, 21.31 49.51, 20.15 49.36, 20.10 49.19, 19.69 49.22, 19.48 49.63, 18.94 49.56))&z=850&f=GRIB2
The same as above but with higher spatial resolution:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric_3/area?parameter-name=u-component-of-wind,v-component-of-wind&datetime=2021-01-19T06:00:00&coords=POLYGON((17.98 49.08, 16.94 48.70, 16.95 48.01, 17.96 47.63, 18.99 47.80, 21.00 48.56, 22.25 48.39, 22.75 49.14, 21.31 49.51, 20.15 49.36, 20.10 49.19, 19.69 49.22, 19.48 49.63, 18.94 49.56))&resolution-x=100&resolution-y=50&z=850&f=GRIB2
Wind (U and V component) within Slovakia at 2021-01-19 06:00 UTC, all vertical layers up to 300 hPa:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric_3/area?parameter-name=u-component-of-wind,v-component-of-wind&datetime=2021-01-19T06:00:00&coords=POLYGON((17.98 49.08, 16.94 48.70, 16.95 48.01, 17.96 47.63, 18.99 47.80, 21.00 48.56, 22.25 48.39, 22.75 49.14, 21.31 49.51, 20.15 49.36, 20.10 49.19, 19.69 49.22, 19.48 49.63, 18.94 49.56))&z=../300&f=GRIB2
Wind (U and V component) within Slovakia, all available forecasts starting from 2021-01-19 06:00 UTC, 850 hPa:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric_3/area?parameter-name=u-component-of-wind,v-component-of-wind&datetime=2021-01-19T06:00:00/..&coords=POLYGON((17.98 49.08, 16.94 48.70, 16.95 48.01, 17.96 47.63, 18.99 47.80, 21.00 48.56, 22.25 48.39, 22.75 49.14, 21.31 49.51, 20.15 49.36, 20.10 49.19, 19.69 49.22, 19.48 49.63, 18.94 49.56))&z=850&f=GRIB2
- Model: GFS
- Parameter: Air Temperature
- Bounding Box: 16.82 - 22.57E; 47.73 - 49.62N
- Vertical Extent: 1000 hPa → 300 hPa
- Time Extent: 2021-01-19 06:00 UTC → 2021-01-20 06:00 UTC
- Output format: GRIB2
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/cube?parameter-name=temperature&bbox=16.82,47.73,22.57,49.62&z=1000/300&datetime=2021-01-19T06:00:00/2021-01-20T06:00:00&f=GRIB2
The same as above but with a denser sampling (in all dimensions):
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/cube?parameter-name=temperature&bbox=16.82,47.73,22.57,49.62&resolution-x=24&resolution-y=8&z=R14/1000/-50&&datetime=R25/2021-01-19T06:00:00/PT1H&f=GRIB2
- Parameters: Pressure, Geopotential Height, Air Temperature, Wind- Speed, Wind Direction
- Bounding Box: 16.82 - 22.57E; 47.73 - 49.62N
- Vertical Extent: 1000 hPa → 300 hPa
- Time Extent: 2021-01-18 06:00 UTC → 2021-01-20 06:00 UTC
https://ogcie.iblsoft.com/edr/collections/temp-pressure/cube?parameter-name=station,validity,pressure,geopotential,air-temperature,wind-speed,wind-direction&bbox=16.82,47.73,22.57,49.62&z=1000/300&datetime=2021-01-18T06:00:00/2021-01-20T06:00:00&f=KernelTSV
Fixed time and vertical coordinate, 100 samples along trajectory:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/trajectory?parameter-name=temperature&datetime=2021-01-19T06:00:00&coords=LINESTRING(14.74 43.44, 9.39 46.89, 14.42 48.05, 7.66 51.4, 7.1 55.9, 2.31 53.72)&resolution=100&z=850&f=CoverageJSON
Tip: Add vertical interval to form a "curtain": z=1000/300
Fixed time coordinate, 100 samples along trajectory:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/trajectory?parameter-name=temperature&datetime=2021-01-19T06:00:00&coords=LINESTRINGZ(14.74 43.44 1000, 9.39 46.89 800, 14.42 48.05 500, 7.66 51.4 500, 7.1 55.9 700, 2.31 53.72 1000)&resolution=100&f=CoverageJSON
Fixed vertical coordinate, 100 samples along trajectory:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/trajectory?parameter-name=temperature&coords=LINESTRINGM(14.74 43.44 1611036000, 9.39 46.89 1611039600, 14.42 48.05 1611043200, 7.66 51.4 1611046800, 7.1 55.9 1611050400, 2.31 53.72 1611054000)&resolution=100&z=850&f=CoverageJSON
Note: Before running this query, don't forget to update the time stamps in the trajectory specification to the present date. The server contains data only for the past two days.
4D trajectory, 100 samples along trajectory:
https://ogcie.iblsoft.com/edr/collections/GFS_isobaric/trajectory?parameter-name=temperature&coords=LINESTRINGZM(14.74 43.44 1000 1611036000, 9.39 46.89 800 1611039600, 14.42 48.05 500 1611043200, 7.66 51.4 500 1611046800, 7.1 55.9 700 1611050400, 2.31 53.72 1000 1611054000)&resolution=100&f=CoverageJSON
Note: Before running this query, don't forget to update the time stamps in the trajectory specification to the present date. The server contains data only for the past two days.
Servers:
- Example Server developed by 上官博屹 (Boyi Shangguan), 胡磊 (Lei Hu), 高凡 (Fan Gao) under 乐鹏 教授 (Prof. Peng Yue).
Clients:
- Example Client developed by 上官博屹 (Boyi Shangguan), 胡磊 (Lei Hu), 高凡 (Fan Gao) under 乐鹏 教授 (Prof. Peng Yue).
Server description: implemented using pygeoapi
to provide a visual interface client. Supports position, area, trajectory and corridor queries.
Client description: a web application for flood disaster decision support, implemented with EDR API to query related data such as population, schools and villages after obtaining a typhoon trajectory/corridor or flood inundation area.
- position query:
http://geos.whu.edu.cn/whu-edr-demo/collections/hainan_pop/position?coords=POINT(109.858046 19.230770)&datetime=2019-01-01T00:00:00¶meter-name=population&interpolation=nearest_neighbour&f=CoverageJSON
- area query:
http://geos.whu.edu.cn/whu-edr-demo/collections/hainan_pop/area?coords=POLYGON((109.795906 19.259092,109.885383 19.264480,109.879889 19.168519,109.795906 19.259092))&datetime=2019-01-01T00:00:00¶meter-name=population&interpolation=nearest_neighbour&f=CoverageJSON
- trajectory query:
http://geos.whu.edu.cn/whu-edr-demo/collections/hainan_pop/trajectory?coords=LINESTRING(109.298000 19.139979,109.589138 19.321511,109.891262 19.513198,110.198879 19.761534)&datetime=2019-01-01T00:00:00¶meter-name=population&interpolation=nearest_neighbour&f=CoverageJSON
- corridor query:
http://geos.whu.edu.cn/whu-edr-demo/collections/hainan_pop/corridor?coords=LINESTRING(109.243069 18.968637,109.429836 19.150357,109.726467 19.311143,110.138454 19.476950)&corridor-width=1000&datetime=2019-01-01T00:00:00¶meter-name=population&interpolation=nearest_neighbour&f=CoverageJSON
- sample URLs
- command line invocations
- code snippets
// Use Promise to send HTTP request, and analyse results together
Promise.all([
$.ajax({
url: `http://geos.whu.edu.cn/whu-edr-demo/collections/hainan_pop/area?coords=${rangeWkt}&datetime=2019-01-01T00:00:00¶meter-name=population&interpolation=nearest_neighbour&f=CoverageJSON`,
dataType: 'json'
}),
]).then(function (result) {
let sum = 0;
result.forEach(value => {
if (value.ranges !== undefined && value.ranges.population.values !== null) {
value.ranges.population.values.forEach(value => {
if (value !== null) {
sum += value;
}
})
}
});
}
Servers:
- Example Server currently not available. Proof-of-Concept developed by Pete Trevelyan and ESRI developers. Supports point and area queries. The server will be further developed to increase the supported EDR query patterns.
Clients:
- Example Client: There will be no specialist client created other than those already available. At the most basic level the server may be accessed using Swagger Hub that is invoked by the
home / address
.
Server description: The server in a simple proxy server that translates EDR queries into the native ESRI Rest API for Image Server.
Client description: Not Applicable
- The sample requests will be generated by using the Swagger Hub based on the YAML Swagger document that may be obtained using
/doc
- There is no need to support a semi-permanent server, as the proxy server will normally be set up by the user.
- Command Line Invocations If installed locally (The code will be available in GitHub) then a simple environment variable will hold the address of the ESRI Server. There is a README file that will give full instructions -
- Code Snippets The proxy is written using the Express - Node.js web application framework and may be invoked from the command line using the Node run command.
Servers:
- Example Server Mock-up to demonstrate usage and compatibility of EDR API and Features API
Clients:
- Example Client tbd
Server description: tbd
Client description: tbd
- tbd
- tbd
- sample URLs
- command line invocations
- code snippets