The Pydantic models for CoverageJSON
Project description
CoverageJSON Pydantic
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.
Install
pip install covjson-pydantic
Or install from source:
pip install git+https://github.com/KNMI/covjson-pydantic.git
Usage
from 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 NdArray
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.now(tz=timezone.utc)])
)
),
ranges={
"temperature": NdArray(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": [
"2023-09-14T11:54:02.151493Z"
]
}
}
},
"ranges": {
"temperature": {
"type": "NdArray",
"dataType": "float",
"axisNames": [
"x",
"y",
"t"
],
"shape": [
1,
1,
1
],
"values": [
42.0
]
}
}
}
Contributing
Make an editable install from within the repository root
pip install -e '.[test]'
Running tests
pytest tests/
Real world usage
This library is used to build an Environmental Data Retrieval (EDR) API, serving automatic weather data station data from the KNMI. See the KNMI Data Platform.
TODOs
Help is wanted in the following areas to fully implement the CovJSON spec:
- The polygon based domain types are not supported.
- The
Trajectory
andSection
domain type are not supported. - The
NdArray
only supportsfloat
data. - Not all requirements in the spec relating different fields are implemented.
License
Apache License, Version 2.0
Authors
Members of the KNMI Data Platform team. Reachable at opendata@knmi.nl.
Copyright
Koninklijk Nederlands Meteorologisch Instituut (KNMI)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for covjson_pydantic-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0c931fa81556934c82b49d44372ce2354d40c14f53a5bd5fd278dc4c64f3219 |
|
MD5 | a76e83c9be70d02334d7a68b2307a5b5 |
|
BLAKE2b-256 | dfd0332e9427533c9812fb2feb0a07b4b68286dcda9f9618684bb2f5d80607d5 |