Skip to main content

What's New

v1.0​

v1 is the first stable release of A5. If you are upgrading from 0.x, see the Upgrade Guide.

Cell IDs​

  • New teohedral space-filling curve which does not self-intersect, greatly improving performance
  • As a consequence, while cell geometry is unchanged, cell IDs change. Cell IDs are now frozen and will not change in future versions
  • Resolution 1 cells are now also pentagons, so the system has a single cell topology throughout

Coverings​

  • Coverings: compacted sets of cells that record their resolution with a compaction marker, providing an efficient way to represent regions of cells
  • Coverings have a suite of new operators which work with the compacted data directly, unlocking previously impossible workflows:

See Coverings example for demo

Spatial hierarchy functions​

See Hierarchy example for demo

Performance​

Large performance gains across all APIs, in part thanks to the new teohedral curve, in part due to many targeted optimizations. Selected benchmarks are shown below; note in particular the performance of polygonToCells for high resolutions.

APIBenchmarkv0.10v1.0Speedup
polygonToCellsBrazil res 62.66 ms1.55 ms1.72×
polygonToCellsBrazil res 814.29 ms4.86 ms2.94×
polygonToCellsBrazil res 10131.26 ms15.00 ms8.75×
polygonToCellsBrazil res 121.96 s49.84 ms39.40×
lineStringToCellsLondon–Paris res 9590.70 µs47.00 µs12.57×
lineStringToCellsround-the-world res 65.11 ms472.90 µs10.81×
compactUK res 10320.32 µs29.37 µs10.91×
gridDiskk=11.55 µs1.16 µs1.34×
gridDiskk=571.22 µs19.83 µs3.59×
gridDiskk=201.64 ms397.75 µs4.12×
gridDiskVertexk=5143.27 µs35.79 µs4.00×
sphericalCapres 12, 5 km201.07 µs54.09 µs3.72×
lonLatToCellres 51.87 µs848.5 ns2.20×
lonLatToCellres 152.37 µs966.1 ns2.46×
lonLatToCellres 305.50 µs1.15 µs4.77×
cellToLonLatres 5290.8 ns228.2 ns1.27×
cellToLonLatres 15348.5 ns283.8 ns1.23×
cellToLonLatres 30524.0 ns337.1 ns1.55×

Website​

  • New landing page
  • All documentation reviewed and rewritten
  • Code examples now render in 5 languages (DuckDB, Python, R, JavaScript & Rust)
  • Visual examples refreshed