Skip to contents

Returns all cells at the target resolution that intersect the given geometry. Uses hierarchical flood-fill: starting from the 12 resolution-0 root cells, the algorithm repeatedly expands and prunes by spatial intersection until the target resolution is reached.

Usage

a5_grid(x, resolution)

Arguments

x

An area specification. One of:

resolution

Integer scalar target resolution (0–30).

Value

An a5_cell vector of cells at resolution that intersect x.

Details

Grid generation runs entirely in Rust via hierarchical flood-fill with bounding-box pruning. For non-bbox geometry inputs, an exact intersection filter removes cells that fall outside the target shape. No cell count limit is imposed — high resolutions over large areas can consume significant memory.

Input geometries must use WGS 84 coordinates; projected geometries are not reprojected and will produce incorrect results. Multiple geometries are collected into a GEOMETRYCOLLECTION automatically. Antimeridian-crossing bounding boxes are supported: when xmin > xmax (e.g. c(170, -50, -170, -30)), the bbox is split at the antimeridian.

Limitation: spatial filtering uses planar geometry on lon/lat coordinates, which can produce incomplete results very close to the poles (above ~88° latitude) or the antimeridian. Use a larger target geometry to ensure complete coverage in these areas.

See also

a5_cell_to_boundary() to convert result cells to geometries.

Examples

# Grid from a bounding box
cells <- a5_grid(c(-3.3, 55.9, -3.1, 56.0), resolution = 5)
cells
#> <a5_cell[1]>
#> [1] 633e000000000000

# Grid from a WKT polygon
poly <- wk::wkt("POLYGON ((-3.3 55.9, -3.1 55.9, -3.1 56, -3.3 56, -3.3 55.9))")
cells <- a5_grid(poly, resolution = 5)