The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Map a longitude/latitude coordinate to a cell at a given resolution (0–30). Higher resolutions produce smaller cells.
cell <- a5_lonlat_to_cell(-3.19, 55.95, resolution = 10)
cell
#> <a5_cell[1]>
#> [1] 6344be8000000000Convert back to the cell centre point:
Get the boundary polygon for one or more cells:
boundary <- a5_cell_to_boundary(cell)
boundary
#> <wk_wkb[1] with CRS=OGC:CRS84>
#> [1] <POLYGON ((-3.175718 55.93546, -3.145905 55.97569, -3.151641 56.01921, -3.219413 56.00818, -3.226037 55.96443, -3.175718 55.93546...>
plot(boundary, col = "#206ead20", border = "#206ead", asp = 1)Boundaries are returned as wk_wkb vectors by default
(set format = "wkt" for WKT). Both integrate directly with
sf, terra, and other spatial tooling via the wk package.
A5 is a hierarchical grid: every cell has a parent at a coarser resolution and 4 children at the next finer resolution.
parent <- a5_cell_to_parent(cell)
parent
#> <a5_cell[1]>
#> [1] 6344be0000000000
children <- a5_cell_to_children(cell)
children
#> <a5_cell[4]>
#> [1] 6344be2000000000 6344be6000000000 6344bea000000000 6344bee000000000We can visualise the relationship - the parent (dark outline) contains our cell (blue fill), which in turn contains its 4 children (orange):
plot(NULL, xlim = c(-3.23, -3), ylim = c(55.98, 55.99),
xlab = "", ylab = "", asp = 1
)
plot(a5_cell_to_boundary(a5_cell_to_children(cell)),
col = "#ad6e2020", border = "#ad6e20", add = TRUE)
plot(a5_cell_to_boundary(cell), col = "#206ead40", border = "#206ead",
lwd = 2, add = TRUE)
plot(a5_cell_to_boundary(parent), border = "#333333", lwd = 2, add = TRUE)Cell area decreases geometrically — each level is roughly 4x smaller:
a5_cell_area(0:5)
#> Units: [m^2]
#> [1] 4.250547e+13 8.501094e+12 2.125273e+12 5.313184e+11 1.328296e+11
#> [6] 3.320740e+10When a complete set of siblings is present, a5_compact()
merges them back into their shared parent. This is the inverse of
a5_cell_to_children() and is useful for reducing the size
of large cell sets without losing coverage.
children
#> <a5_cell[4]>
#> [1] 6344be2000000000 6344be6000000000 6344bea000000000 6344bee000000000
a5_compact(children)
#> <a5_cell[1]>
#> [1] 6344be8000000000
# round-trips back to the original
a5_uncompact(a5_compact(children), resolution = 11)
#> <a5_cell[4]>
#> [1] 6344be2000000000 6344be6000000000 6344bea000000000 6344bee000000000Many a5R functions return compacted output automatically. For
example, a5_grid_disk() and a5_spherical_cap()
compact their results — use a5_uncompact() when you need a
uniform-resolution grid (see Traversal
below).
Find neighbouring cells by hop count with
a5_grid_disk(), or by great-circle distance with
a5_spherical_cap():
disk <- a5_grid_disk(cell, k = 10)
cap <- a5_spherical_cap(cell, radius = 50000)
plot(a5_cell_to_boundary(cap), col = "#6ead2020", border = "#6ead20", asp = 1)Both functions return a compacted cell vector —
sibling groups are merged into coarser parent cells to save space. To
recover a uniform grid at the original resolution, pass the result
through a5_uncompact():
disk_grid <- a5_uncompact(disk, resolution = a5_get_resolution(cell))
plot(a5_cell_to_boundary(disk_grid), col = "#206ead20", border = "#206ead", asp = 1)a5_grid() is a convenience function provided by a5R (not
part of the underlying a5 Rust crate) that returns all cells at a target
resolution covering a given area — handy for binning, zonal statistics,
and other spatial analysis workflows common in R.
Pass a bounding box as a numeric vector:
cells <- a5_grid(c(-3.3, 55.9, -3.1, 56.0), resolution = 12)
length(cells)
#> [1] 90
plot(a5_cell_to_boundary(cells), col = "#206ead20", border = "#206ead", asp = 1)Any geometry that wk can handle works too — polygons, sf objects, or
even a5_cell vectors:
library(sf)
#> Linking to GEOS 3.12.2, GDAL 3.12.1, PROJ 9.4.1; sf_use_s2() is TRUE
demo(nc, ask = FALSE, echo = FALSE)
nca5 <- a5_grid(nc, resolution = 9)
plot(a5_cell_to_boundary(nca5), col = "#6d20ad20", border = "#6d20adff", asp = 1)These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.