Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(warning = FALSE, message = FALSE)
## -----------------------------------------------------------------------------
rlang::check_installed("targets")
## ----load-package-------------------------------------------------------------
library(chopin)
library(sf)
library(spatstat.random)
sf::sf_use_s2(FALSE)
set.seed(202404)
## ----nc-gen-points------------------------------------------------------------
ncpoly <- system.file("shape/nc.shp", package = "sf")
ncsf <- sf::read_sf(ncpoly)
ncsf <- sf::st_transform(ncsf, "EPSG:5070")
plot(sf::st_geometry(ncsf))
ncpoints <-
sf::st_sample(
x = ncsf,
type = "Thomas",
mu = 20,
scale = 1e4,
kappa = 1.25e-9
)
ncpoints <- sf::st_as_sf(ncpoints)
ncpoints <- sf::st_set_crs(ncpoints, "EPSG:5070")
ncpoints$pid <- sprintf("PID-%05d", seq(1, nrow(ncpoints)))
plot(sf::st_geometry(ncpoints))
## -----------------------------------------------------------------------------
ncgrid_sf <-
par_pad_grid(
input = ncpoints,
mode = "grid",
nx = 6L,
ny = 3L,
padding = 1e4L,
return_wkt = FALSE
)
ncgrid_sf$original
ncgrid_sf$padded
## -----------------------------------------------------------------------------
ncgrid_wkt <-
par_pad_grid(
input = ncpoints,
mode = "grid",
nx = 6L,
ny = 3L,
padding = 1e4L,
return_wkt = TRUE
)
ncgrid_wkt$original
ncgrid_wkt$padded
## -----------------------------------------------------------------------------
calc_something <- function(x, y, unit_grid, pad_grid, ...) {
# 0. restore unit_grid and pad_grid to sf objects if they are in WKT format
# 1-1. make x subset using intersect logic between x and unit_grid
# 1-2. read y subset using intersect logic between y and pad_grid
# 2. make buffer of x
# 3. do actual calculation (use ... wisely to pass additional arguments)
# 4. return the result
}
## -----------------------------------------------------------------------------
calc_something <- function(x, y, unit_grid, pad_grid, ...) {
# 1-1. make x subset using intersect logic between x and unit_grid
x <- x[unit_grid, ]
# 1-2. read y subset using intersect logic between y and pad_grid
yext <- terra::ext(sf::st_bbox(pad_grid))
yras <- terra::rast(y, win = yext)
# 2. make buffer of x
xbuffer <- sf::st_buffer(x, units::set_units(10, "km"))
# 3. do actual calculation (use ... wisely to pass additional arguments)
xycalc <- exactextractr::exact_extract(
yras,
xbuffer,
force_df = TRUE,
fun = "mean",
append_cols = "pid", # assume that pid is a unique identifier
progress = FALSE
)
# 4. return the result
return(xycalc)
}
## -----------------------------------------------------------------------------
ncgrid_sflist <-
par_split_list(ncgrid_sf)
## -----------------------------------------------------------------------------
calc_something <- function(x, y, unit_grid, pad_grid, ...) {
# 0. restore unit_grid and pad_grid to sf objects if they are in WKT format
unit_grid <- sf::st_as_sf(wkt = unit_grid)
pad_grid <- sf::st_as_sf(wkt = pad_grid)
# 1-1. make x subset using intersect logic between x and unit_grid
x <- x[unit_grid, ]
# 1-2. read y subset using intersect logic between y and pad_grid
yext <- terra::ext(sf::st_bbox(pad_grid))
yras <- terra::rast(y, win = yext)
# 2. make buffer of x
xbuffer <- sf::st_buffer(x, units::set_units(10, "km"))
# 3. do actual calculation (use ... wisely to pass additional arguments)
xycalc <- exactextractr::exact_extract(
yras,
xbuffer,
fun = "mean",
force_df = TRUE,
append_cols = "pid", # assume that pid is a unique identifier
progress = FALSE
)
# 4. return the result
return(xycalc)
}
## -----------------------------------------------------------------------------
ncgrid_wktlist <-
par_split_list(ncgrid_wkt)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.