a5-js
v1.0.0
Published
A5 - Global Pentagonal Geospatial Index
Readme
A5 is a geospatial index that partitions the world into pentagonal cells. The cells are available at 31 resolution levels, from a handful covering the whole world down to less than 30mm², and every cell at a given resolution has exactly the same area. Each cell is identified by a 64-bit integer, which is frozen from v1.0: an A5 cell ID stored today will refer to the same place in the future.
Once data is in cells, very different datasets can be joined, aggregated and compared directly: points can be counted per cell, as with the density of holiday rentals across a city, and regions such as countries or parcels of land become coverings, sets of cells which support union, intersection and difference.
Key strengths
- Equal area, single topology: every cell is an exactly equal-area pentagon with 5 neighbors, so aggregates are free of bias from unequal cell sizes. See A5 vs H3.
- Built for big data: cell IDs follow a space-filling curve that never crosses itself, so polygons and coverings are compact ID ranges. Billions of cells can be filled, combined and counted in seconds.
- Fast & rich API: high-level functions for indexing, hierarchy, traversal and coverings, with a native Rust core.
- Strong ecosystem: official libraries for TypeScript, Python and Rust, with DuckDB, PostgreSQL, R, QGIS and deck.gl integrations. See the Ecosystem.
Where to start
- Quickstart: index your first cell in your language of choice
- DuckDB playground: use DuckDB to experiment with A5
- Examples: interactive examples showcasing the system
- API Reference: every function, with snippets in each language
- What's new: the changes in v1.0
A5 is open source and licensed under the Apache 2.0 License.
Links
- Website: a5geo.org
- Bugs or feature requests: GitHub Issues
- Questions and discussion: join the community on Slack
