I just published a pre-release (snapshot) of hmm-lib 1.0.0.
Using this new version in Graphhopper map-matching would bring several improvements:
The API was redesigned to allow calling the Viterbi algorithm iteratively. This allows using single-source multi-target routing, which should result in a speed-up. Moreover, if an HMM break occurs, the GPS trace can be split at the break and both sub traces can be matched separately.
The paths between matched positions (the entire matched route) can now be retrieved after computing the most likely sequence using transition descriptors. Hence, there is no need anymore to store all paths between subsequent candidates.
Memory footprint is reduced from O(t*n²) to O(t) for typical GPS traces, where t is the number of time steps and n is the number of candidates per time step.
The project offline-map-matching, branch-1.0.0 is now also using the hmm-lib 1.0.0-SNAPSHOT. In there, OfflineMapMatcherTest.java provides an example how to use the new hmm-lib API, which can be used as a template for Graphhopper map-matching.
I just published a pre-release (snapshot) of hmm-lib 1.0.0.
Using this new version in Graphhopper map-matching would bring several improvements:
The project offline-map-matching, branch-1.0.0 is now also using the hmm-lib 1.0.0-SNAPSHOT. In there, OfflineMapMatcherTest.java provides an example how to use the new hmm-lib API, which can be used as a template for Graphhopper map-matching.
Feedback is welcome!