The algorithms in Tracktable fall into the following categories:
I/O
We provide flexible readers and writers to make it easy to work with point data in delimited text files. We offer the ability to save and restore trajectories using GeoJSON as well as text, binary, or XML serialization formats. We can load and save shapefiles. We can write KML from C++ (but not Python yet).
Trajectory Assembly
We provide a trajectory builder that takes a stream of points (coordinates plus timestamp and ID) as input and generates a stream of trajectories as output. This assembler can be stopped and restarted across separate batches of points.
Machine Learning
We take the approach of creating feature vectors that describe trajectories. Given those feature vectors, we provide machinery for clustering (DBSCAN), range queries, and k-nearest-neighbor queries to find similar items or groups of items. We also include machinery for distance geometry, which creates a fixed-length numeric signature for the shape of trajectories of arbitrary length and allows similarity computations on this shape.
Rendering
After your analysis has run, we support writing it out using the I/O routines above, as images (any decent format including PDF), as movies, as KML (sometimes), and within interactive Jupyter notebooks (soon).
Support for Multiple Languages
All of Tracktable’s capabilities are accessible from Python. This is how we normally use it. For speed and memory optimization, we have implemented most of the math, I/O and analysis routines in C++. You can use whichever one best suits your need.