/movetk

MoveTK is a library for computational movement analysis written in C++.

Primary LanguageC++Apache License 2.0Apache-2.0

MoveTK: the movement toolkit

MoveTK-CI-Ubuntu MoveTK-CI-macOS MoveTK-CI-Windows MoveTK-create-docker-image

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.

Overview

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:

movetk_algorithm_visualization

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]

Quick Start

  1. Install Docker on your machine see the installation instructions for instance, for Windows, Mac or Ubuntu Linux.

  2. Run the container

docker run -p 6013:8888 -p 80:80 -it aniketmitra001/movetk
  1. 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)

  2. 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 the localhost 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

Build Artifacts

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.

Installation with cmake

  1. Clone the repository.
git clone https://github.com/heremaps/movetk.git
  1. Replicate the steps in corresponding YAML files

    -Mac

    -Windows

    -Ubuntu

Using MoveTK in your App

Please refer to this example for a template on how to use MoveTK in your app

Third Party Libraries Included In MoveTK

MoveTK utilizes some open source components including:

  1. Modified version of GsTL (see include/third_party/GsTL-1.3)
  2. TNT (Template Numerical Toolkit) (see [include/third_party/GsTL-1.3] folder)
  3. Selection of headers of Boost version 1.70.0 (see [src/include/third_party/boost_future])
  4. Miniball (see [src/include/third_party/miniball])
  5. rapidjson (see include/third_party/rapidjson)

Acknowledgements

This project includes GsTL which is software developed by Stanford University and its contributors.

License

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.