GeoJSON parsing and validation using Pydantic
Project description
geodantic
Lightweight, type-safe and spec-conforming GeoJSON parsing and validation using Pydantic.
Installation
pip install geodantic
Examples
Parse and validate GeoJSON features with custom properties:
import pydantic
from geodantic import Feature, Point
# Use your own properties Pydantic models
@pydantic.dataclasses.dataclass
class MyProperties:
foo: str
data = {
"type": "Feature",
"geometry": {"type": "Point", "coordinates": [1, 2]},
"properties": {"foo": "abc"},
}
# Parse and validate data into spec-conforming objects
parsed = Feature[Point, MyProperties](**data)
"""
Feature[Point, MyProperties](
type=<GeoJSONObjectType.FEATURE: 'Feature'>,
bbox=None,
geometry=Point(
type=<GeoJSONObjectType.POINT: 'Point'>,
bbox=None,
coordinates=(1.0, 2.0)
),
properties=MyProperties(foo='abc'),
id=None
)
"""
# Dump back into JSON using standard Pydantic methods
parsed.model_dump_json(exclude_unset=True, indent=2)
"""
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
1.0,
2.0
]
},
"properties": {
"foo": "abc"
}
}
"""
Parse objects of arbitrary types:
from geodantic import GeometryCollection
data = {
"type": "GeometryCollection",
"geometries": [
{
"type": "Polygon",
"coordinates": [[[1, 2], [3, 4], [5, 6], [1, 2]]],
"bbox": [1, 2, 3, 4],
},
{
"type": "GeometryCollection",
"geometries": [{"type": "Point", "coordinates": [1, 2]}],
},
],
}
# Parse any geometry type
parsed = GeometryCollection(**data)
"""
GeometryCollection(
type=<GeoJSONObjectType.GEOMETRY_COLLECTION: 'GeometryCollection'>,
bbox=None,
geometries=[
Polygon(
type=<GeoJSONObjectType.POLYGON: 'Polygon'>,
bbox=(1.0, 2.0, 3.0, 4.0),
coordinates=[[(1.0, 2.0), (3.0, 4.0), (5.0, 6.0), (1.0, 2.0)]]
),
GeometryCollection(
type=<GeoJSONObjectType.GEOMETRY_COLLECTION: 'GeometryCollection'>,
bbox=None,
geometries=[
Point(
type=<GeoJSONObjectType.POINT: 'Point'>,
bbox=None,
coordinates=(1.0, 2.0)
)
]
)
]
)
"""
Contributing
Set up the project using Poetry:
poetry install
Format the code:
make lint
Run tests:
make test
Check for typing and format issues:
make check
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
geodantic-0.4.0.tar.gz
(4.9 kB
view details)
Built Distribution
File details
Details for the file geodantic-0.4.0.tar.gz
.
File metadata
- Download URL: geodantic-0.4.0.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.12.1 Linux/6.2.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef53322467f610317994493a58b31ffa48336ff99b2ad1b20474e20c01d9d669 |
|
MD5 | ca4b24c0bbddb699c6b99d440e5e181b |
|
BLAKE2b-256 | 1625a0942657dc817dc2ba91dd3c1f90a6a7f735a3a8dae026ea7ecde06fb5c4 |
File details
Details for the file geodantic-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: geodantic-0.4.0-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.12.1 Linux/6.2.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fffc3f1430bbdb9c516a4df7cc03c30021e95d03e891b5ecf3308bade864f97 |
|
MD5 | 46a84f1027238445ee838ded04734038 |
|
BLAKE2b-256 | 78619fcb2c9c05320145d57ba8e287ae59009a33b7044518e42ea90a3cb9eef8 |