Skip to main content

No project description provided

Project description

GeoJSONchemy [Under Development] 🌍🧪

GeoJSONchemy is a Python library that provides support for GeoJSON spatial data types in SQLAlchemy and SQLModel. It allows you to easily work with GeoJSON data in your database models. It currently supports ONLY PostgreSQL-PostGIS.

Cover Image Gen via MS Copilot Pro, a globe with map creator tools

Installation 📦

You can install GeoJSONchemy using pip:

pip install geojsonchemy

Usage 🚀

SQLAlchemy In SQLAlchemy, you can use the GeomJSON and Geomdantic classes from GeoJSONchemy as types for your model fields. Both are subclasses from geoalchemy2.types.Geometry Here's an example:

from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Mapped, mapped_column
from geojsonchemy import GeomJSON, Geomdantic
from geojson_pydantic.geometries import Geometry, Point, MultiPlolygon

Base = declarative_base()

class FooModel(Base):
    __tablename__ = 'foo'

    id: Mapped[int] = Column(Integer, primary_key=True)
    geom: Mapped[dict] = mapped_column(GeomJSON(geometry_type="POINT", srid=4326), nullable=False, index=True)
    geom2: Mapped[Geometry] = mapped_column(Geomdantic(geometry_type="GEOMETRY", srid=4326), nullable=False, index=True)

SQLModel

In SQLModel, you can use the GeomJSON and Geomdantic classes in a similar way:

from sqlmodel import Field, SQLModel

class GeomTable(SQLModel, table=True):
    __tablename__ = "bar"

    id: int = Field(primary_key=True)
    name: str
    geom: dict = Field(
        sa_type=GeomJSON(geometry_type="GEOMETRY", srid=4326),
        nullable=False,
    )
    geom2: Point = Field(
        sa_type=Geomdantic(geometry_type="POINT", srid=4326),
        nullable=False,
    )

Note 📝

Please note that GeoJSONchemy currently only supports PostgreSQL. If you try to use it with a different database, it will raise a NotImplementedError.

Contributing 🤝

Contributions are welcome! Please feel free to submit a pull request.

TODO

  • Add support for MutableDict

License 📄

GeoJSONchemy is licensed under the MIT license. See the LICENSE file for more details.

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

geojsonchemy-0.1.3.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

geojsonchemy-0.1.3-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file geojsonchemy-0.1.3.tar.gz.

File metadata

  • Download URL: geojsonchemy-0.1.3.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.7 Linux/5.15.133.1-microsoft-standard-WSL2

File hashes

Hashes for geojsonchemy-0.1.3.tar.gz
Algorithm Hash digest
SHA256 8741cd29b545760909ddb79c1867efad4951bc2e1fc97844b5f0061924f37383
MD5 25dee8450255636f942c6694eac72340
BLAKE2b-256 46e94cf01813396a6cc9c07c675a8a9f0aea8641029320bbf7d315d5ed1fe8f1

See more details on using hashes here.

File details

Details for the file geojsonchemy-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: geojsonchemy-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.7 Linux/5.15.133.1-microsoft-standard-WSL2

File hashes

Hashes for geojsonchemy-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a950ccfe22b5c3220372229e8a93961da1030a06d572360785aeb8f4608faf7d
MD5 9a0e7b17131b25385c462a83d8591149
BLAKE2b-256 16eddc500f9d4e6c360b235d98228d17460d2b62fc07b44926547ec6b5fb2d7c

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