duckspatial
R Interface to 'DuckDB' Database with Spatial Extension
duckspatial rebuilt itself around a lazy DuckDB class, then spent four releases filling in the geometry surface
◆Recent moves
- 1mo ago
Capture install and load output messages
A single-item patch capturing output messages from ddbs_install() and ddbs_load(). Housekeeping on the 1.2.0 feature wave.
View source ↗ - 1mo ago
Vector-tile output, geometry parsers and precision control
The largest feature release since the rewrite: ddbs_write_mbtiles() and ddbs_as_mvt_geom() give the package a tile-pyramid output path, and a full set of ddbs_geom_from_*() parsers close the round trip against the existing serializers. Extends the 1.0.0 direction of keeping geometry work in DuckDB rather than pulling it into R.
View source ↗ - 1mo ago
Shortest-line, azimuth, vertex and coordinate-extreme functions
Adds ddbs_shortest_line(), ddbs_azimuth(), ddbs_vertices(), ddbs_point() and the coordinate min/max family, plus a memory-efficient union option. Steady expansion of the geometry surface established by 1.0.0.
View source ↗ - 2mo ago
Native spatial storage becomes the default connection format
Defaults new connections to DuckDB v1.5.0 storage so CRS metadata survives in native GEOMETRY columns, with an escape hatch for older clients. dplyr methods now return lazy views instead of materializing temp tables, tightening the lazy contract 1.0.0 set.
View source ↗ - 2mo ago
duckspatial macros usable inside dplyr verbs
Macros let duckspatial functions be called inside mutate() and friends, so a geometry computation reads like ordinary dplyr while executing in DuckDB. Adds around fifteen geometry functions alongside it. This is the ergonomic payoff of the 1.0.0 class rewrite.
View source ↗ - 4mo ago
duckspatial_df replaces sf as the default class
⚡ SPARKThe release that set the package's current direction: duckspatial_df becomes the main class, data stays lazy in DuckDB until ddbs_collect() or st_as_sf() is called, and every function accepts and returns it by default. Function defaults change to pick the appropriate DuckDB implementation by CRS, and ddbs_union() splits into row-wise and aggregate forms.
View source ↗