Tracktable 1.7.3 is released

Tracktable 1.7.3 Released

Tracktable 1.7.3 is now available on conda-forge and PyPI.  Never fear, you didn’t miss 1.7.2!   Late in the release process, we found bugs in 1.7.2 that needed to be fixed right away, so we went straight on to 1.7.3.  This announcement includes the information for both 1.7.2 and 1.7.3.

New Features

  • Folium proxy.  We use Folium for rendering interactive maps in Jupyter notebooks and Web applications.  Folium generates HTML that requires Javascript resources out on the open Internet.  This is awkward on air-gapped installations and other networks that can’t access the Internet.  There are alternatives such as Offline Folium (soon to be published) that embed these JavaScript resources locally.

By default, the Folium rendering back end will try to import offlinefolium first, then fall back to folium if that’s not available.  You can configure this behavior (including changing the package name and enabling/disabling it) with the functions in tracktable.render.backends.folium_proxy.

  • Looping animation. Passing anim_loop=True to render_trajectories() will cause trajectory animations to loop indefinitely instead of play once and then stop.

Bugs Fixed

  • Regression in Folium heat maps. Passing a color map to render_heatmap() when rendering with Folium would lead to an error caused by trying to call split() on values of type np.float64. We’ve worked around this issue for now. It will be fixed properly in an upcoming release of Folium.
  • Points were not appearing on heat maps rendered with Cartopy. The cause was a missing coordinate transform.
  • A call to a deprecated IPython function (to force Matplotlib figures to render inline) was causing an exception in notebooks that rendered static images.
  • Python documentation now builds after the extension modules have been compiled. Previously, trying to build documentation on a just-checked-out source tree would often error out because these modules were not in place yet.
  • Tutorial and demo notebooks now show up in our documentation on Read the Docs. The culprit: Git LFS is not installed in the build environment by default.
  • We’ve fixed an import statement that we overlooked in the Folium back end. It uses folium_proxy now and should pick up offlinefolium like everything else.

Other Changes

  • Cleanup: Several configure- and build-time warnings about CMake Boost macros have been resolved.
  • Cleanup: We now declare C++ tests with a macro instead of multiple lines of boilerplate.
  • Cleanup: Several warnings about deprecated C++ iterator usage squashed.
  • Cleanup: We have removed extra copies of the demo notebooks that had uninformative names.
  • We now require a C++20 or newer compiler to build Tracktable.
  • We now use the libboost-* packages from conda-forge instead of boost-*. The names changed after Boost 1.82 or so.
  • License specification for Python wheels has changed to use SPDF expressions. We have changed our wheel-building configuration to use this. Note: Tracktable’s license has not changed at all — just the way we encode that license in the metadata for the wheel file.
  • We’ve updated the ground truth for the trajectory rendering tests (both static and interactive), so those tests should pass again… until Cartopy and Folium release new versions. Thanks to Diana He for this contribution!
  • All source code is now under the src/ directory.
  • Lots of miscellaneous cleanup related to moving things around. See CHANGELOG.md for more information and ask us for details.

Coming Soon

Here are some things we’ve got in the works. We hope (but can’t promise) to release at least some of these by the end of Summer 2025.

  • GeoJSON reader/writer for trajectories.
  • New data structure for trajectories that will use about 3x less memory.
  • New trajectory assembler that can operate in streaming mode and fix minor issues with out-of-order points.
  • Point reader adapter to read points from a Pandas DataFrame.