Releases: iisys-hof/map-matching-2
v1.0.4
This release fixes an issue with the edge tags missing in the final tags binary as well as removes the libosmium indices in favor of an own solution.
- There was an issue fixed where edge tags were not correctly copied from the adjacency list tags file into the final compressed sparse row tags file. The previous version was a little bit faster because it omitted that processing, which was wrong.
- We used the libosmium indices during importing of OpenStreetMap data. These created an additional temporary file on the OS disk even when the remaining temporary files were created on another disk. Moreover, the indices managed data that was in fact duplicate. The new solution works without the additional temporary file, so less memory and disk are used. Also, the network import should be a little bit faster now.
Full Changelog: v1.0.3...v1.0.4
v1.0.3
This version increases the prepare step speed significantly. We changed the way tags are processed. As such, much less unnecessary data is created, less RAM and disk space are needed, and the overall import is faster.
- Tags are now saved completely in the tags.bin file and queried by id of the node or edge (which is currently not done in the matching or comparison phase, only for the export of the nodes and edges into csv files). This means, tags are no longer directly stored at the nodes and edges, which reduces a lot of space, because previously, even empty tag containers needed space. This also means that when the "--simplify all" mode is used (default), opposed to the "--simplified osm-aware", the tags do not correctly match the node and edge IDs, because they are aggregated beyond the ID they were originally assigned to. Use "osm-aware" if you need the original OSM tags and IDs unchanged, for example when you export the "edge_ids" column in the results.
- The empty tag is now a single instance and reused, which again saves space and time.
- Node and edge IDs are now unsigned, should not make an issue with OSM because negative IDs are deprecated or used only for certain polygons, which we don't process. So OSM IDs should still be the same as before. For the matching without special needs, it is currently not relevant.
- We fixed a bug that crashed MSVC builds under Windows in comparison mode.
Full Changelog: v1.0.2...v1.0.3
As usual, the prepare step needs to be redone. Good that it is faster now!
v1.0.2
This version introduces a new parameter "--max-time" that now works for all models and algorithms.
- Previously, only Q-Learning supported a max-time (and it needed an additional parameter fixed-time, that was removed in favor of setting max-time to zero or omitting it).
Now all models support max-time, which means that they abort a match if the time-limit has been reached.
The time is specified in seconds, so "--max-time 30" means abort a matching after 30 seconds if no solution has been found yet. You can also use fractions, i.e., "--max-time 7.5" for 7.5 seconds, or long times, i.e., "--max-time 3600" for one hour.
The measurement is per track, so the case when the program "hangs" on the last track "like forever" can be solved with this setting. If a track is aborted, and there are more to match, the now free worker immediately continues with the next track. - A new column "abort" in the output csv file has been added so that you know which tracks were aborted. Also in the CLI output in verbose mode, you see which tracks were aborted. This is useful for eventual filtering of the results so that tracks that could not be matched within the time with the given settings can be selected and tried again with less complex settings, for example, without candidate adoption.
- We changed the way the matching result is outputted so that it does less unnecessary calculations when export-edges is off or the "edges_list" column is not set in the output csv. This should improve the overall speed in the default case where both options are off.
- The dependencies were updated to their latest versions, date from 3.0.1 to 3.0.2 and protobuf from 28.1 to 28.2.
- Previously prepared network data needs to be re-prepared, as already explained in the earlier release 1.0.1. This is to make sure no memory-layout changes due to recompilation and source-code changes lead to crashes or memory-access errors with the memory-mapped files. It should be safe not to be this restrictive, but due to the novelty of this feature, let's be extra safe, just in case, for now.
- The README now contains more prominently the nice results from the data sets that were introduced more hidden in the last release.
Full Changelog: v1.0.1...v1.0.2
As usual, prebuilt binaries for Linux (AppImage) and Windows (portable ZIP file) are given.
Thank you for your support!
v1.0.1
This version has some small improvements over the last release:
- The preparation step is a little bit faster now due to an improved in-place construction of some graph data and tags data in the memory mapped files.
- The new
edge_ids
match export column is disabled by default now, because on OSM networks, it only works correctly when these were prepared with the--simplify osm-aware
setting. In the default settings, edges with different ids might be merged and only one of the ids remains, which is no issue when the original edge_ids are not of interest. So it doesn't make any difference for the match results but this advanced export setting needs the original edge_ids preserved and this is not guaranteed by the default simplification setting. - Prepared memory mapped networks are compiler dependent, because the memory layout is different depending on the compiler (or the standard library used). They are now also version dependent of the program version, so they need to be re-prepared when using a different program version. This is to make sure that no memory access crashes happen when the memory layout changed due to a software update.
- Benchmarks were re-made with the new version and for every data set in the
data
directory, benchmarks and accuracy metrics are now also provided so that you can verify if the results on your system are similar. - Some tests with Clang 19 were done, but unfortunately, there is currently a bug in Boost that prevents compilation: boostorg/thread#402. We need to wait for the next Boost release that should contain this fix.
- Updated the README with new information on how to build on Windows without an IDE correctly. It is important to note that this software only works correctly on 64-bit operating systems and with 64-bit compilers. A 32-bit compiled application usually has a memory limit of 2 GB and this tool needs more than that memory already in some of our example benchmarks that we provide here. Additionally, some more small corrections and details were added.
Full Changelog: v1.0.0...v1.0.1
The reception since the 1.0 release has been great so far!
Thank you all for your support!
v1.0.0
This is the first release of the new version 1.0 of Map Matching 2.
The new version supports memory mapping, is faster and more flexible.
We now also support native portable Windows binary (zip file) and Linux AppImage.
This is the sum of about one year of additional work. There is no changelog due to the sheer amount of changes.
Please note that since this is a huge step forward, there might still be bugs, as always with a 1.0 release.
Feel free to create a bug report here on GitHub or write me via mail.
Thanks for your support!