OGC EDR Extractor avatar

OGC EDR Extractor

Pricing

from $0.35 / 1,000 record extracteds

Go to Apify Store
OGC EDR Extractor

OGC EDR Extractor

Point at ANY OGC API - EDR (Environmental Data Retrieval) service — Met Office, FMI, pygeoapi. List collections, then query environmental data by position, area, radius, trajectory, or cube. Flattens CoverageJSON / GeoJSON to rows (parameter, value, unit, lon/lat, time). Pay per record.

Pricing

from $0.35 / 1,000 record extracteds

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

A generic "point at any OGC API - EDR service" scraper. OGC API - EDR (Environmental Data Retrieval) is the OGC-blessed JSON standard for querying environmental data by geometry — ask a server for the value(s) at a position, within an area / radius / cube, along a trajectory / corridor, or at named locations, over a time window, for a set of parameters. It is spoken by the UK Met Office, national meteorological services (e.g. the Finnish Meteorological Institute, ECMWF feeds), and the pygeoapi / ldproxy server families.

Give this actor an EDR service root, discover its collections, then run a query — and it flattens the CoverageJSON or GeoJSON response into clean, flat dataset rows (parameter, value, unit, longitude/latitude, time) plus a lossless raw.

One actor, every OGC API - EDR service — no per-instance scraper needed. It is the EDR sibling of the companion OGC API Features Extractor and STAC Catalog Extractor.

What it does

  • Discover collections — leave the collection id empty (or turn on List collections only) and it reads {baseUrl}/collections and returns one row per EDR collection: id, title, description, the supported query types, parameter names, spatial + temporal + vertical extent, and CRS. Read this first to pick a real collection id and a query type it supports.
  • Query environmental data — set a collection id + a query type (position / area / radius / trajectory / corridor / cube / locations) + the query geometry (coords as WKT, or a bounding box for cube) + an optional date/time window and parameter filter, and it runs the EDR query and flattens the response:
    • CoverageJSON (the EDR-native format) — a Coverage or a CoverageCollection. The domain axes (x / y / z / t) are crossed against every parameter's data array to emit one row per (position × time × parameter) observation, each with its value + unit.
    • GeoJSONlocations / area queries often return a FeatureCollection; one row per feature with geometry, lon/lat and properties.
  • Normalized + raw — stable columns (parameter, value, unit, longitude, latitude, z, time) while the untouched response object is preserved in raw, so nothing is lost even though every service and collection exposes different parameters.

Example inputs

Discover what a service exposes (start here — no auth):

{ "baseUrl": "https://demo.pygeoapi.io/master", "listCollectionsOnly": true }

A position query — the full sea-surface-temperature time series at a point in the North Atlantic (pygeoapi ICOADS, no auth):

{ "baseUrl": "https://demo.pygeoapi.io/master", "collectionId": "icoads-sst", "queryType": "position", "coords": "POINT(-30 40)", "parameterNames": ["SST"] }

A cube query — a gridded box + time window:

{ "baseUrl": "https://demo.pygeoapi.io/master", "collectionId": "icoads-sst", "queryType": "cube", "bbox": [-35, 38, -25, 44], "parameterNames": ["SST"], "maxRecords": 200 }

A locations query on the UK Met Office EDR labs service (returns GeoJSON):

{ "baseUrl": "https://labs.metoffice.gov.uk/edr", "collectionId": "copernicus_dem", "queryType": "locations" }

Discover the 47 collections (incl. ECMWF) on the Finnish Meteorological Institute:

{ "baseUrl": "https://opendata.fmi.fi/edr", "listCollectionsOnly": true }

Input reference

  • baseUrl (required) — the EDR service root (not /collections).
  • collectionId — the collection to query; empty ⇒ discovery mode.
  • listCollectionsOnly — force discovery mode (list collections, query nothing).
  • queryTypeposition / area / radius / trajectory / corridor / cube / locations / items (only the types a collection advertises are valid — the actor validates and tells you what's supported).
  • coords — the query geometry as WKT in WGS84 lon/lat (POINT(...), POLYGON((...)), LINESTRING(...)).
  • bbox[west, south, east, north] for the cube query.
  • datetime — RFC 3339 instant or range; open ranges with ...
  • parameterNames — the parameter(s) to retrieve; empty ⇒ all.
  • z — vertical level for collections with a vertical dimension.
  • locationId — a specific named location for a locations query.
  • within / withinUnits — radius distance + units for a radius query.
  • maxRecords — total record cap (default 1000).
  • queryParams — arbitrary extra query params passthrough.
  • bearerToken / extraHeaders — optional auth for key-gated services.

Authentication

None required for the public services (pygeoapi, Met Office labs, FMI). For key-gated services supply a Bearer token and/or Extra request headers — both optional, never required, and the token is never logged.

Output

One dataset item per record:

  • Discovery mode (_mode: "collection") — collectionId, title, queryTypes, parameterNames, spatialExtent, temporalExtent, crs, …
  • Query mode — one observation per (position × time × parameter) for CoverageJSON (_mode: "observation": parameter, value, unit, longitude, latitude, z, time, domainType), or one feature per GeoJSON feature (_mode: "feature": geometryType, featureId, properties, lon/lat).
  • raw — the complete, untouched source object.

A query that returns no data (HTTP 204 / empty) returns 0 records, not an error. Pointed at a non-EDR host (a /collections with no data_queries) it fails fast with a clear message.

Pricing

Pay per record — you're charged one record event per row returned (one per collection in discovery mode, one per observation/feature in query mode). A query that returns nothing costs nothing.

Notes

  • Speaks OGC API - EDR: handles the data_queries discovery block, CoverageJSON (Coverage + CoverageCollection, both explicit-values and compact {start, stop, num} axes, row-major NdArray decode) and GeoJSON responses.
  • Not affiliated with or endorsed by the OGC or any target service. Respect each provider's terms and any per-dataset licensing.