MoveTK is a library for computational movement analysis written in C++. The library has been developed as part of a collaboration between HERE Technologies , Eindhoven University of Technology and Utrecht University under the Commit2Data program.
MoveTK is a reusable, well tested, high performant, feature-rich library that incorporates state of the art algorithms for understanding movement. The library is designed to be extensible such that it can be adapted to various movement analysis tasks. It's design is inspired by the designs of CGAL and GUDHI.
You can use this library to:
- Develop applications for processing (geo) spatial movement data at scale
- Create high performance applications for analysis of movement data, using the algorithms available in the library
Some examples are shown below:
The following table lists some of the algorithms available in MoveTK
Feature | Algorithm |
---|---|
Trajectory Segmentation | Monotone Segmentation [Buchin et al. 2011, Alewijnse et al. 2014] |
Model Based Segmentation [Alewijnse et al. 2018] | |
Trajectory Simplification | Douglas-Peucker Simplification [Hershberger et al. 1992,1998] |
Imai-Iri Simplification [Chan et al. 1996] | |
Agarwal Simplification [Agarwal et al. 2005] | |
Trajectory Similarity | Longest Common Subsequence [Vlachos et al. 2002] |
Hausdorff & Fréchet Metric [Eiter et al. 1994, Alt et al. 1995] | |
Trajectory Outlier Detection | Optimal Speed Bounded [Custers et al. 2019] |
Greedy / Smart Greedy / Local Greedy [Custers et al. 2019] | |
Trajectory Clustering | Sub-trajectory Clustering [Buchin et al. 2008] |
Trajectory Interpolation | Kinematic Interpolation [Long 2016] |
Random Trajectory Generator [Technitis et al. 2015] |
-
Install Docker on your machine see the installation instructions for instance, for Windows, Mac or Ubuntu Linux.
-
Run the container
docker run -p 6013:8888 -p 80:80 -it aniketmitra001/movetk
-
Follow instructions in the output of step 2 to open Jupyter Notebook in a web browser. Replace port number 8888 with 6013 (or another port depending on your configuration)
-
Once JupyterLab can be accessed from your browser, in-order to access the notebooks please navigate to
/tutorials/cpp
for the C++ notebooks and/tutorials/py
for the python notebooks
Notes :
- On Mac it is important to start Docker from Docker Desktop , so that
localhost
of the container gets mapped to thelocalhost
of the host machine. This will allow the documentation to be rendered in Jupyter notebooks. - If you are running a
docker build
yourself, it it important to ensure that at least 4GB of memory has been allocated to the docker container
A push event to the master branch of MoveTK triggers a set of continuous integration (CI) workflows. If the worflows are sucessful, this results in the following artifacts to be generated
- A Docker image. Do
docker pull aniketmitra001/movetk:latest
to get the image - A RPM & DEB package. If the latest run of the CI workflow for MoveTK-CI-Ubuntu is successful, select the last run. The packages can be found on the Artifacts section.
- Clone the repository.
git clone https://github.com/heremaps/movetk.git
Please refer to this example for a template on how to use MoveTK in your app
MoveTK utilizes some open source components including:
- Modified version of GsTL (see include/third_party/GsTL-1.3)
- TNT (Template Numerical Toolkit) (see [include/third_party/GsTL-1.3] folder)
- Selection of headers of Boost version 1.70.0 (see [src/include/third_party/boost_future])
- Miniball (see [src/include/third_party/miniball])
- rapidjson (see include/third_party/rapidjson)
This project includes GsTL which is software developed by Stanford University and its contributors.
Copyright (C) 2017-2020 HERE Europe B.V.
Unless otherwise noted in LICENSE
files for specific files or directories, the LICENSE in the root applies to all content in this repository.