Buffers point parquet files and writes per-tile outputs named:
Fixed radius:
<base>_r<radius>_<tileid>.parquet
Per-feature radii (
radius_field
):<base>_varradius_<tileid>.parquet
Where:
base = prefix of input filename before the first underscore (e.g., "pts100" from
pts100_sauzeme.parquet
)tileid = unique value of
split_field
(default "tks50km") inside the input file
The buffer_mode
determines how radii are assigned:
"dense": Buffers the best-matching
pts100*.parquet
(preferspts100_sauzeme.parquet
) for each tile byradii_dense
(default: 500, 1250, 3000, 10000 m)."sparse": Uses a file to radius mapping. Default mapping:
pts100_sauzeme.parquet
to c(500, 1250)pts300_sauzeme.parquet
to 3000pts1000_sauzeme.parquet
to 10000 You can override this viamapping_sparse
(named list or data.frame with columnsfile
,radius
).
"specified": You provide
points_path
and eitherbuffer_radius
(uniform, one or more fixed radii) orradius_field
(numeric column with per-feature radii in meters). Outputs are still split bysplit_field
.
Usage
tiled_buffers(
in_dir = "./Templates/TemplateGridPoints",
out_dir = "./Templates/TemplateGridPoints/lapas",
buffer_mode = "dense",
radii_dense = c(500, 1250, 3000, 10000),
mapping_sparse = list(pts100_sauzeme.parquet = c(500, 1250), pts300_sauzeme.parquet =
3000, pts1000_sauzeme.parquet = 10000),
points_path = NULL,
buffer_radius = NULL,
radius_field = NULL,
split_field = "tks50km",
n_workers = max(1L, parallel::detectCores()),
os_type = NULL,
future_max_mem_gb = 4,
overwrite = FALSE,
quiet = FALSE
)
Arguments
- in_dir
Character. Directory containing input points parquet files (default "./Templates/TemplateGridPoints"). Used in "dense" and "sparse" modes.
- out_dir
Character. Output directory for buffered tiles (default "./Templates/TemplateGridPoints/lapas").
- buffer_mode
Character. One of "dense", "sparse", "specified". Default "dense".
- radii_dense
Numeric vector of radii (m) used when
buffer_mode = "dense"
. Default c(500, 1250, 3000, 10000).- mapping_sparse
Named list or data.frame describing file to radii for
buffer_mode = "sparse"
. Default:list("pts100_sauzeme.parquet" = c(500, 1250), "pts300_sauzeme.parquet" = 3000, "pts1000_sauzeme.parquet" = 10000)
. If a data.frame is supplied, it must have columnsfile
andradius
.- points_path
Character. Path to a single parquet file for
buffer_mode = "specified"
.- buffer_radius
Numeric vector. Used in "specified" when you want fixed radii. Ignored if
radius_field
is provided.- radius_field
Character or NULL. Column name in
points_path
that provides per-feature radii (meters) for "specified". If given,buffer_radius
is ignored.- split_field
Character. Field in the point data that defines tiles. Default "tks50km".
- n_workers
Integer. Parallel workers. Default
max(1L, parallel::detectCores())
.- os_type
Optional character to force backend plan: "windows", "mac", "darwin", "linux", "slurm". Default NULL becomes auto-detect.
- future_max_mem_gb
Numeric. Max size of exported globals per worker (GiB). Sets
options(future.globals.maxSize = future_max_mem_gb * 1024^3)
. Default 4.- overwrite
Logical. Overwrite existing outputs? Default FALSE.
- quiet
Logical. Suppress messages? Default FALSE.
Value
Invisibly returns a data.frame with columns:
input
, tileid
, mode
, radius_m
(NA if radius_field
is used),
radius_field
, out_file
, wrote
.
Details
Uses sfarrow for parquet I/O and sf for buffering.
Jobs are created per tile (unique
split_field
value) and (when applicable) per radius.Workers open data from file paths (keeps RAM low).
Files are written atomically (temp file then move).
Safety: jobs are de-duplicated by content and by predicted output path, so concurrent workers never write to the same file.