This repository contains the coveragejson-pydantic Python package. It provides Pydantic models for CoverageJSON. This can, for example, be used to develop an API using FastAPI serving or receiving CoverageJSON.
pip install covjson-pydanticOr you can install directly from source:
pip install git+https://github.com/KNMI/covjson-pydantic.gitfrom datetime import datetime, timezone
from pydantic import AwareDatetime
from covjson_pydantic.coverage import Coverage
from covjson_pydantic.domain import Domain, Axes, ValuesAxis, DomainType
from covjson_pydantic.ndarray import NdArrayFloat
c = Coverage(
domain=Domain(
domainType=DomainType.point_series,
axes=Axes(
x=ValuesAxis[float](values=[1.23]),
y=ValuesAxis[float](values=[4.56]),
t=ValuesAxis[AwareDatetime](values=[datetime(2024, 8, 1, tzinfo=timezone.utc)]),
),
),
ranges={
"temperature": NdArrayFloat(axisNames=["x", "y", "t"], shape=[1, 1, 1], values=[42.0])
}
)
print(c.model_dump_json(exclude_none=True, indent=4))Will print
{
"type": "Coverage",
"domain": {
"type": "Domain",
"domainType": "PointSeries",
"axes": {
"x": {
"values": [
1.23
]
},
"y": {
"values": [
4.56
]
},
"t": {
"values": [
"2024-08-01T00:00:00Z"
]
}
}
},
"ranges": {
"temperature": {
"type": "NdArray",
"dataType": "float",
"axisNames": [
"x",
"y",
"t"
],
"shape": [
1,
1,
1
],
"values": [
42.0
]
}
}
}Make an editable installation from within the repository root
pip install -e '.[test]'pytest tests/Linting and typing (mypy) is done using pre-commit hooks.
pip install pre-commit
pre-commit install
pre-commit run- edr-pydantic - Pydantic data models for the Environmental Data Retrieval (EDR) API
- geojson-pydantic - Pydantic data models for the GeoJSON spec
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.
Help is wanted in the following areas to fully implement the CovJSON spec:
- The
Polygon,MultiPolygonandMultiPolygonSeriesdomain types are not supported. - The
Sectiondomain type is not supported. - Not all requirements in the spec relating different fields are implemented.
Apache License, Version 2.0