An open source geospatial trajectory data management & analysis platform
MobilityDB is a database management system for moving object geospatial trajectories, such as GPS traces. It adds support for temporal and spatio-temporal objects to the PostgreSQL database and its spatial extension PostGIS.
MobilityDB is developed by the Computer & Decision Engineering Department of the Université libre de Bruxelles (ULB) under the direction of Prof. Esteban Zimányi. ULB is an OGC Associate Member and member of the OGC Moving Feature Standard Working Group (MF-SWG).
The MobilityDB project is managed by a steering committee.
More information about MobilityDB, including publications, presentations, etc., can be found in the MobilityDB website.
Compact geospatial trajectory data storage
Rich mobility analytics
Big data scale and performance
Easy to use full SQL interface
Compatible with the PostgreSQL ecosystem
Compliant with the Moving Features standards from the Open Geospatial Consortium (OGC)
Adopted by the Open Source Geospatial Foundation (OSGeo) as a community project
Database adapters to access MobilityDB from Python are also available
- MobilityDB-python supports both the psycopg2 and the asyncpg adapters for PostgreSQL and uses the postgis adapter for PostGIS. This package is developed by the MobilityDB Team.
- MobilityDB SQLAlchemy is another independent package that provides extensions to SQLAlchemy for interacting with MobilityDB
Data generator and benchmark tool based on the BerlinMOD benchmark. The data generator takes input data from Open Street Map and uses pgRouting to generate routes between pairs of source and target locations.
These projects push the boundaries of MobilityDB and connect it with the PostgreSQL/PostGIS ecosystem.
- MobilityDB-AWS: MobilityDB on Amazon Web Services
- MobilityDB-Azure: MobilityDB on Azure
- MobilityDB-Deck Integration of MobilityDB with the data visualization framework Deck.gl
- MobilityDB-QGIS: Integration of MobilityDB with QGIS
There are two mailing lists for MobilityDB hosted on OSGeo mailing list server:
- User mailing list: https://lists.osgeo.org/mailman/listinfo/mobilitydb-users
- Developer mailing list: https://lists.osgeo.org/mailman/listinfo/mobilitydb-dev
For general questions and topics about how to use MobilityDB, please write to the user mailing list.
masterbranch has the latest release
developbranch has the development of the next release. The complete list of releases is available here
The extension is under development. We are planning to release the first version in 2021.
- Linux (other UNIX-like systems may work, but remain untested)
- PostgreSQL >= 11
- CMake >= 3.7
- PostGIS >= 2.5
- GNU Scientific Library (GSL)
- Development files for PostgreSQL, PostGIS/liblwgeom, PROJ, JSON-C
For example, you can build the following command to install all MobilityDB build dependencies for Debian-based systems using PostgreSQL 13 and PostGIS 3:
apt install build-essential cmake postgresql-server-dev-13 libproj-dev libjson-c-dev
Notice that if you want to use PostGIS 2.5, this requires in addition to add the dependency
liblwgeom-dev to the above command.
Building & Installation
Here is the gist:
git clone https://github.com/MobilityDB/MobilityDB mkdir MobilityDB/build cd MobilityDB/build cmake .. make sudo make install
The above commands install the
master branch. If you want to install another branch, for example,
develop, you can replace the first command above as follows
git clone --branch develop https://github.com/MobilityDB/MobilityDB
You should also set the following in
postgresql.conf depending on the version of PostGIS you have installed (below we use PostGIS 3):
shared_preload_libraries = 'postgis-3' max_locks_per_transaction = 128
You can replace
postgis-2.5 above if you want to use PostGIS 2.5.
If you do not preload the PostGIS library you will not be able to load the MobilityDB library and will get an error message such as the following one
ERROR: could not load library "/usr/local/pgsql/lib/libMobilityDB-1.0.so": undefined symbol: ST_Distance
Notice that you can find the location of the
postgresql.conf file as given next:
$ which postgres /usr/local/pgsql/bin/postgres $ ls /usr/local/pgsql/data/postgresql.conf /usr/local/pgsql/data/postgresql.conf
As can be seen, the PostgreSQL binaries are in the
bin subdirectory while the
postgresql.conf file is in the
Once MobilityDB is installed, it needs to be enabled in each database you want to use it in. In the example below we use a database named
createdb mobility psql mobility -c "CREATE EXTENSION PostGIS" psql mobility -c "CREATE EXTENSION MobilityDB"
Docker containers with MobilityDB and all its dependencies are available here. These images are based on the official Postgres and Postgis docker images, please refer to them for more information.
If you have docker installed in your system you can run:
docker pull mobilitydb/mobilitydb docker volume create mobilitydb_data docker run --name "mobilitydb" -d -p 25432:5432 -v mobilitydb_data:/var/lib/postgresql mobilitydb/mobilitydb psql -h localhost -p 25432 -d mobilitydb -U docker
The first command is to download the latest most up-to-date image of MobilityDB. The second command creates a volume container on the host, that we will use to persist the PostgreSQL database files outside of the MobilityDB container. The third command executes this binary image of PostgreSQL, PostGIS, and MobilityDB with the TCP port 5432 in the container mapped to port 25432 on the Docker host (user = pw = docker, db = mobilitydb). The fourth command is to connect to the database using psql.
Please report any issues you may have.
You can generate the user's manual in HTML, PDF, and EPUB formats. The manual is generated in English and in other available languages (currently only Spanish). For this, it is necessary to specify appropriate options in the
cmake command as follows:
DOC_ALL: Generate in HTML, PDF, and EPUB formats
DOC_HTML: Generate in HTML format
DOC_PDF: Generate in PDF format
DOC_EPUB: Generate in EPUB format
LANG_ALL: Generate in all available languages
ES: Generate the Spanish documentation
For example, the following command generates the documentation in all formats and in all languages.
cmake -D DOC_ALL=true -D LANG_ALL=true .. make doc
As another example, the following command generates the English documentation in PDF.
cmake -D DOC_PDF=true .. make doc
The resulting documentation will be generated in the
doc directory of the build directory.
In addition, pregenerated versions of them are available.
The documentation is also avaible in Spanish.
You can generate the English developer's documentation in HTML format. For this, it is necessary to the option
DOC_DEV in the
cmake command as follows:
cmake -D DOC_DEV=true .. make doc_dev
The resulting HTML documentation will be generated in the
doxygen directory of the build directory.
In addition, a pregenerated version of the documentation is available.
- MobilityDB code is provided under the PostgreSQL License.
- MobilityDB documentation is provided under the Creative Commons Attribution-Share Alike 3.0 License 3.