This package provides extensions to SQLAlchemy for interacting with MobilityDB. The data retrieved from the database is directly mapped to time-indexed pandas DataFrame objects. TGeomPoint and TGeogPoint objects can be optionally mapped to movingpandas' Trajectory data structure.
A demo webapp built using this library is now available online:
Source Code: https://github.com/adonmo/mobilitydb-sqlalchemy-demo
The package is available on PyPI, for Python >= 3.7
pip install mobilitydb-sqlalchemy
from mobilitydb_sqlalchemy import TGeomPoint from sqlalchemy import Column, Integer from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class Trips(Base): __tablename__ = "test_table_trips_01" car_id = Column(Integer, primary_key=True) trip_id = Column(Integer, primary_key=True) trip = Column(TGeomPoint) trips = session.query(Trips).all() # Querying using MobilityDB functions, for example - valueAtTimestamp session.query( Trips.car_id, func.asText( func.valueAtTimestamp(Trips.trip, datetime.datetime(2012, 1, 1, 8, 10, 0)) ), ).all()
There is also a tutorial published on Anita Graser's blog.
Issues and pull requests are welcome.
- For proposing new features/improvements or reporting bugs, create an issue.
- Check open issues for viewing existing ideas, verify if it is already proposed/being worked upon.
- When implementing new features make sure to add relavant tests and documentation before sending pull requests.
First, make sure you have poetry installed Then, get the dependencies by running (in the project home directory):
Also make sure you setup git hooks locally, this will ensure code is formatted using black before committing any changes to the repository
Spin up a mobilitydb instance
docker volume create mobilitydb_data docker run --name "mobilitydb" -d -p 25432:5432 -v mobilitydb_data:/var/lib/postgresql codewit/mobilitydb
Run the tests
movingpandas is an optional dependency - but to run tests you would need it. So if this is your first time running tests, install it by running:
# Currently installing the optional dependency of movingpandas # using `poetry install -E movingpandas` doesn't work # To get movingpandas use pip instead of poetry, run the following (in exact order): poetry shell pip install cython pip install git+https://github.com/SciTools/cartopy.git --no-binary cartopy pip install movingpandas # This is because of movingpandas dependency cartopy not being PEP 518 compliant # Refer: https://github.com/SciTools/cartopy/issues/1112
Now, you can actually run the tests using:
poetry run pytest