hilbert provides utilities for quick indexing/encoding of coordinates to a Hilbert Curve.
You can install hilbert via either
remotes
or pak
:
# pak
::pkg_install("program--/hilbert")
pak
# remotes
::install_github("program--/hilbert") remotes
<- -77.85641
x <- 34.35935
y <- 24 # n > 15 requires `bit64`
n <- c(xmax = 180, xmin = -180, ymax = 90, ymin = -90) e
<- hilbert::coords_to_position(x, y, n = n, extent = e)
pos
pos#> x y
#> 1 4760236 11591131
<- hilbert::index(pos, coords = c("x", "y"), n = n, attach = TRUE)
index
index#> x y h
#> 1 4760236 11591131 129470580596149
<- hilbert::position(index, idx = "h", n = n, attach = FALSE)
new_pos
new_pos#> x y
#> 1 4760236 11591131
<- hilbert::position_to_coords(new_pos, coords = c("x", "y"), extent = e, n = n, attach = TRUE)
new_xy
new_xy#> x y
#> 1 -77.85641 34.35935