Skip to main content

Tests Status Codacy Badge MIT License

MEOS Logo

MEOS (Mobility Engine, Open Source) is a C++ library which makes it easy to work with temporal and spatio-temporal data. It is based on MobilityDB's data types and functions. MEOS's code is heavily inspired from a similar library called GEOS - hence the name. This repository also includes PyMEOS - python bindings to MEOS using pybind11.

Design goals and tenets

  • Extensibility
  • Ease of use and getting started
  • Interoperability
  • Functionality over performance (for now)

Projects built using MEOS

MEOS aims to the base on which more libraries can be built. The following projects are built on top of (or experimenting with) MEOS/PyMEOS:

Usage

Python

Installation

pip install pymeos

Note: libgeos-dev might need to be installed on your system.

Code sample

import datetime
from pymeos import GeomPoint
from pymeos.temporal import TGeomPointInst, TGeomPointSeq


def datetime_utc(year, month, day, hour=0, minute=0, second=0):
    return datetime.datetime(year, month, day, hour, minute, second, tzinfo=datetime.timezone.utc)


# Example creation of trajectory (temporal sequence of geometries)
trajectory = TGeomPointSeq({
    TGeomPointInst(GeomPoint(0, 0), datetime_utc(2012, 1, 1, 8, 0)),
    TGeomPointInst(GeomPoint(2, 0), datetime_utc(2012, 1, 1, 8, 10)),
    TGeomPointInst(GeomPoint(2, 1), datetime_utc(2012, 1, 1, 8, 15)),
})

print(trajectory)
[POINT (0 0)@2012-01-01T08:00:00+0000, POINT (2 0)@2012-01-01T08:10:00+0000, POINT (2 1)@2012-01-01T08:15:00+0000)

Some more operations over this data:

# Work with individual
>>> trajectory.instants
{POINT (2 0)@2012-01-01T08:10:00+0000, POINT (2 1)@2012-01-01T08:15:00+0000, POINT (0 0)@2012-01-01T08:00:00+0000}

>>> trajectory.startValue
POINT (0 0)

>>> trajectory.endValue
POINT (2 1)

# Extract just the temporal aspect
>>> trajectory.timestamps
{datetime.datetime(2012, 1, 1, 8, 15, tzinfo=datetime.timezone.utc), datetime.datetime(2012, 1, 1, 8, 10, tzinfo=datetime.timezone.utc), datetime.datetime(2012, 1, 1, 8, 0, tzinfo=datetime.timezone.utc)}

Documentation

Docs and API Reference: https://pymeos.readthedocs.io/en/latest/

More detailed usage guide/quickstart: https://pymeos.readthedocs.io/en/latest/quickstart.html

C++

#include <iostream>
#include <meos/types/temporal/TSequence.hpp>
#include "time_utils.cpp"
using namespace std;


int main() {
    set<TInstant<int>> instants = {
        TInstant<int>(2, unix_time_point(2012, 1, 1)),
        TInstant<int>(1, unix_time_point(2012, 1, 2)),
        TInstant<int>(4, unix_time_point(2012, 1, 3)),
        TInstant<int>(3, unix_time_point(2012, 1, 4)),
    };
    TSequence<int> tseq(instants);
    cout << tseq << endl;
    return 0;
}
[2@2012-01-01T00:00:00+0000, 1@2012-01-02T00:00:00+0000, 4@2012-01-03T00:00:00+0000, 3@2012-01-04T00:00:00+0000)

Example

Minimalistic C++ app example: https://github.com/adonmo/meos-cpp-example

Documentation

C++ API Reference: https://adonmo.github.io/meos/

Contributing

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.
  • Instruction on how to build, test and generate documentation can be found in DEVELOPMENT.md
  • When implementing new features make sure to add relevant tests and documentation before sending pull requests.

Metadata

Release files for pymeos 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pymeos 0.1
File
pymeos-0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl PyPy 3.6 PyPy 3.6 7.3 Linux glibc 2.12+ x86-64 Details
pymeos-0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl PyPy 3.6 PyPy 3.6 7.3 macOS 10.9+ x86-64 Details
pymeos-0.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
pymeos-0.1-cp38-cp38-manylinux2010_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.12+ x86-64 Details
pymeos-0.1-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details
pymeos-0.1-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
pymeos-0.1-cp37-cp37m-manylinux2010_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 Details
pymeos-0.1-cp37-cp37m-macosx_10_9_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64 Details
pymeos-0.1-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
pymeos-0.1-cp36-cp36m-manylinux2010_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 Details
pymeos-0.1-cp36-cp36m-macosx_10_9_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.9+ x86-64 Details
pymeos-0.1-cp35-cp35m-win_amd64.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-64 Details
pymeos-0.1-cp35-cp35m-manylinux2010_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.12+ x86-64 Details
pymeos-0.1-cp35-cp35m-macosx_10_9_x86_64.whl CPython 3.5 CPython 3.5 pymalloc macOS 10.9+ x86-64 Details

Total release size: 12.8 MB

Release files / pymeos-0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl

Download URL pymeos-0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl
Size 1.6 MB
Tags Linux glibc 2.12+ x86-64 PyPy 3.6 PyPy 3.6 7.3
SHA-256 checksum
How to use checksums
a267bc8305c4984d9a3cb7dee752a1a2ecd5becbafc9a2b3c4ad27b5740663e2
BLAKE2b-256 checksum
How to use checksums
af0fc01be0e13b24f37be34bfd3637a7eeedca17275582b6cd457d8e1bc38a66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl

Download URL pymeos-0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl
Size 653.8 kB
Tags PyPy 3.6 PyPy 3.6 7.3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
94b079c3a0ab187cc38990d5fe9a9cb4c00ea56901a91f47cdf691578030ce80
BLAKE2b-256 checksum
How to use checksums
4bb0a3fcd6e529b75fe6af6b9d971a7f62d68d70f55a3b31372cb4b7676b0140
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp38-cp38-win_amd64.whl

Download URL pymeos-0.1-cp38-cp38-win_amd64.whl
Size 401.9 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
e2a696ffe7b6cd47ac450b7dfb6810e576a353a6be3ac1705acd53623b874406
BLAKE2b-256 checksum
How to use checksums
dff3a4966643211e10924eb686db6109119a972f675f86ba166b60803640a25d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp38-cp38-manylinux2010_x86_64.whl

Download URL pymeos-0.1-cp38-cp38-manylinux2010_x86_64.whl
Size 1.6 MB
Tags CPython 3.8 Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
8730406c2e722978b4da7d81c6f55a0354cf6810f8db9e004f4d67e06bfb0fb2
BLAKE2b-256 checksum
How to use checksums
0df248e07f2799e6df0f621b8add3390c1e4d9cd279aa669510e0767f6f41148
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp38-cp38-macosx_10_9_x86_64.whl

Download URL pymeos-0.1-cp38-cp38-macosx_10_9_x86_64.whl
Size 661.5 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
9ac88f61d5b4f48020f9bd507d9afd7a7bde612652226d84b4d83b5aafe7e085
BLAKE2b-256 checksum
How to use checksums
6b67d5bb9453330cb650b88d0fb04926c618b1340d9e4905d0db1beff7a72151
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp37-cp37m-win_amd64.whl

Download URL pymeos-0.1-cp37-cp37m-win_amd64.whl
Size 388.1 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
97e8586fbf43a3b4da3b9ef4d6d71a5a27f96b435cfbc6b9f128b7f214311d83
BLAKE2b-256 checksum
How to use checksums
4b66255a83c25d6737603e2bfda0b86387b58baaea7b65b70d4fd19639875b3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp37-cp37m-manylinux2010_x86_64.whl

Download URL pymeos-0.1-cp37-cp37m-manylinux2010_x86_64.whl
Size 1.6 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
06a618b110172d82cc700535897e5e8545ae083f7e2f824ff54c34780616a269
BLAKE2b-256 checksum
How to use checksums
373672df9c2c205e870ca868a9d2df39f31a8509e678482818afd86ea22f8a02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp37-cp37m-macosx_10_9_x86_64.whl

Download URL pymeos-0.1-cp37-cp37m-macosx_10_9_x86_64.whl
Size 631.6 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
2d72d9f79c222b9eae454493bc7c5e6c156d914b8a6cdbaa91d7b1daf0a768ea
BLAKE2b-256 checksum
How to use checksums
68d63c76b2661b8ef02caf22dd6c08550bf7f3a638b8168f23eb175da40a8aa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp36-cp36m-win_amd64.whl

Download URL pymeos-0.1-cp36-cp36m-win_amd64.whl
Size 388.1 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
052886562bb21027a2c75b480a359cb47121cac9dbc8379d70fbdc540e61e2b6
BLAKE2b-256 checksum
How to use checksums
e72c0e894ca943b49b8cbd4500c94d5dc9c15efc3037589088570fac94c939ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp36-cp36m-manylinux2010_x86_64.whl

Download URL pymeos-0.1-cp36-cp36m-manylinux2010_x86_64.whl
Size 1.6 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
c642ec7da8da22c308d21d0f23025cb775aab78968b0d993ff2b0a74e2a1f98a
BLAKE2b-256 checksum
How to use checksums
507cbcdda9fc645d1cb14d8225a69e46fa9f5ee7e56e2a1a93772417eec0659d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp36-cp36m-macosx_10_9_x86_64.whl

Download URL pymeos-0.1-cp36-cp36m-macosx_10_9_x86_64.whl
Size 631.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
439d09a2d65a3a45dd7fb856fcfe661260ba8f49267efe09b97c8cbfc1052cfa
BLAKE2b-256 checksum
How to use checksums
def7183209f41a644a92e390d46dace306e6231866dd4ce6a49d9a7cccaab4b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp35-cp35m-win_amd64.whl

Download URL pymeos-0.1-cp35-cp35m-win_amd64.whl
Size 388.1 kB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
d0ca7d5bb8798d80af5e8839efdf66eaf5b862f63089e24bd16808521e74c808
BLAKE2b-256 checksum
How to use checksums
7daaee4cd11ceb3aaaa1a0f616cda20c3b789cf315819d75ef9ec94f2a0b864d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp35-cp35m-manylinux2010_x86_64.whl

Download URL pymeos-0.1-cp35-cp35m-manylinux2010_x86_64.whl
Size 1.6 MB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
c8872b0d3788c3664f8df8777aec1c81aba4d5ad7f7ddd27d662207dbd9c29f7
BLAKE2b-256 checksum
How to use checksums
df668bf85faf2b45f24d3bc851dccdf7a8d3a3923b1056cc2a77c92d7de2d50a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release files / pymeos-0.1-cp35-cp35m-macosx_10_9_x86_64.whl

Download URL pymeos-0.1-cp35-cp35m-macosx_10_9_x86_64.whl
Size 631.7 kB
Tags CPython 3.5 CPython 3.5 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
298fa89559ab643c194b6c75bbafad936282f1fbbc535009badd28b78a6dcadc
BLAKE2b-256 checksum
How to use checksums
01d44d2e91617670e8e79260bf8c75daf83e15843b17cb33695320265ce31836
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

Release history Release notifications | RSS feed

1.2.1

2 release files

1.2.0

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

This release

0.1 This release

14 release files

0.0.9

15 release files

0.0.8

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page