edr-pydantic 0.5.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

edrpydantic 0.5.0

OGC Environmental Data Retrieval (EDR) API Pydantic

















This repository contains the edr-pydantic Python package. It provides Pydantic models
for the OGC Environmental Data Retrieval (EDR) API.
This can, for example, be used to help develop an EDR API using FastAPI.
Install
pip install edr-pydantic

Or to install from source:
pip install git+https://github.com/KNMI/edr-pydantic.git

Usage
from edr_pydantic.collections import Collection
from edr_pydantic.data_queries import EDRQuery, EDRQueryLink, DataQueries
from edr_pydantic.extent import Extent, Spatial
from edr_pydantic.link import Link
from edr_pydantic.observed_property import ObservedProperty
from edr_pydantic.parameter import Parameters, Parameter
from edr_pydantic.unit import Unit
from edr_pydantic.variables import Variables

c = Collection(
id="hrly_obs",
title="Hourly Site Specific observations",
description="Observation data for UK observing sites",
extent=Extent(
spatial=Spatial(
bbox=[
[-15.0, 48.0, 5.0, 62.0]
],
crs="WGS84"
)
),
links=[
Link(
href="https://example.org/uk-hourly-site-specific-observations",
rel="service-doc"
)
],
data_queries=DataQueries(
position=EDRQuery(
link=EDRQueryLink(
href="https://example.org/edr/collections/hrly_obs/position?coords={coords}",
rel="data",
variables=Variables(
query_type="position",
output_formats=[
"CoverageJSON"
]
)
)
)
),
parameter_names=Parameters({
"Wind Direction": Parameter(
unit=Unit(
label="degree true"
),
observedProperty=ObservedProperty(
id="https://codes.wmo.int/common/quantity-kind/_windDirection",
label="Wind Direction"
)
)
})
)

print(c.model_dump_json(indent=2, exclude_none=True))

Will print
{
"id": "hrly_obs",
"title": "Hourly Site Specific observations",
"description": "Observation data for UK observing sites",
"links": [
{
"href": "https://example.org/uk-hourly-site-specific-observations",
"rel": "service-doc"
}
],
"extent": {
"spatial": {
"bbox": [
[
-15.0,
48.0,
5.0,
62.0
]
],
"crs": "WGS84"
}
},
"data_queries": {
"position": {
"link": {
"href": "https://example.org/edr/collections/hrly_obs/position?coords={coords}",
"rel": "data",
"variables": {
"query_type": "position",
"output_formats": [
"CoverageJSON"
]
}
}
}
},
"parameter_names": {
"Wind Direction": {
"type": "Parameter",
"unit": {
"label": "degree true"
},
"observedProperty": {
"id": "https://codes.wmo.int/common/quantity-kind/_windDirection",
"label": "Wind Direction"
}
}
}
}

Contributing
Make an editable install from within the repository root
pip install -e '.[test]'

Running tests
pytest tests/

Linting and typing
Linting and typing (mypy) is done using pre-commit hooks.
pip install pre-commit
pre-commit install
pre-commit run

Related packages

CoverageJSON Pydantic
geojson-pydantic

Real world usage
This library is used to build an OGC Environmental Data Retrieval (EDR) API, serving automatic weather data station data from The Royal Netherlands Meteorological Institute (KNMI). See the KNMI Data Platform EDR API.
TODOs
Help is wanted in the following areas to fully implement the EDR spec:

See TODOs in code listing various small inconsistencies in the spec
In various places there could be more validation on content

License
Apache License, Version 2.0

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.