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.3.0.tar.gz
(4.9 kB
view hashes)
Built Distribution
Close
Hashes for geodantic-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1d8a8e68e229adb515a5bd82d4c716ae2f5a5111dc2a1d4f8e131458135d45b |
|
MD5 | 40aa0cbe4483c7088675598713b28de3 |
|
BLAKE2b-256 | 32726e821314d7282614d3e884a9ed9d0ed636ecc82ba1a9f67c4d22e98d7c93 |