Skip to main content

The Pydantic models for CoverageJSON

Project description

CoverageJSON Pydantic

Test Coverage Package version Downloads License

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 you can install directly 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 installation 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

  • edr-pydantic - Pydantic data models for the Environmental Data Retrieval (EDR) API
  • geojson-pydantic - Pydantic data models for the GeoJSON spec

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 CovJSON spec:

  • The polygon based domain types are not supported.
  • The Trajectory and Section domain type are not supported.
  • The NdArray only supports float data.
  • Not all requirements in the spec relating different fields are implemented.

License

Apache License, Version 2.0

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

covjson_pydantic-0.4.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

covjson_pydantic-0.4.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file covjson_pydantic-0.4.0.tar.gz.

File metadata

  • Download URL: covjson_pydantic-0.4.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for covjson_pydantic-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b7927e37d5bd8626070fd36ca914286a69429d4a16f4810215aa5907233834f6
MD5 eb9836bceb84b0e95a786f430550f712
BLAKE2b-256 5c2668b0f3a7ce3b51c43973c478dccf6e1d2ba48673a69bf75e1447da616f5e

See more details on using hashes here.

File details

Details for the file covjson_pydantic-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for covjson_pydantic-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dd98388697bf2f225f29acf3a29c55546d81d974e13dd9203d38725ef203177d
MD5 e8f66c869a79fb19c29e474ff37f7437
BLAKE2b-256 34d94bdf0035c1d5079184f5e31ebad0131786ec051c0c3d52918f427e5b11d8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page