Skip to main content
Loading data…

Global, equal-area, millimeter-accurate geospatial index

Why A5?

A5 turns any location on Earth into a 64-bit cell ID, on a grid of equal-area pentagons that runs from continents down to 30mm². Join, aggregate and compare data anywhere, with fast libraries and integrations across your whole stack.

Key strengths
  • Strong ecosystem

    Robust base libraries in TypeScript, Python and Rust, with DuckDB, R, QGIS, deck.gl and more built on top. All interoperable via a cell index that is frozen from v1.0, so stored IDs stay valid.

  • Fast & rich API

    High-level functions make working with the grid easy. The native Rust core indexes over 2 million points per second on a laptop.

  • Equal area, single topology

    Every cell is an exactly equal-area pentagon — no exceptions, no kinks. Resolutions all the way down to 30mm² give a common way to represent point, line, polygon and raster data without statistical bias.

  • Built for big data

    Cell IDs follow a global space-filling curve that never crosses itself, so polygons and coverings are compact ID ranges. Fill, union and intersect billions of cells in seconds, and use A5 as a natural partitioning key.

  • Unmistakable on a map

    A5's pentagon mosaic is recognizable at a glance, and renders fast in a variety of geospatial libraries, such as deck.gl, MapLibre or QGIS.

Quickstart

A few lines to your first cell

INSTALL a5 FROM community;
INSTALL a5 FROM community;
LOAD a5;
SELECT a5_cell_to_boundary(
a5_cell_to_parent(a5_lonlat_to_cell(2.2945, 48.8584, 20), 10)
);
Integrations

Works where you do

Get started

Learn more or explore examples