Class Structure

Class Structure

The dbSpatial package is designed to work with spatial geometries in a DuckDB table. The package builds on the DuckDB spatial extension.

dbSpatial objects adopt the S4 class system and represent spatial geometries in a DuckDB table. The {dbSpatial} package consists of methods for constructing dbSpatial objects from various data sources, as well as various spatial operations for working with these data.

dbSpatial provides methods for reading/writing dbSpatial objects from/to data.frames, S3 and S4 spatial-related objects (e.g. objects from {sf} or {terra}), and several other spatial files that are supported by the DuckDB spatial extension.

The runnable example below is evaluated only when the duckdb package is available and NOT_CRAN is "true", so it is skipped on CRAN.

Minimal example

library(dbSpatial)

con <- DBI::dbConnect(duckdb::duckdb(), ":memory:")
DBI::dbExecute(con, "SET threads = 1")
#> [1] 0
coords <- data.frame(id = 1:3, x = c(0, 1, 2), y = c(0, 1, 2))

pts <- dbSpatial(
  conn = con,
  name = "class_structure_points",
  value = coords,
  x_colName = "x",
  y_colName = "y",
  overwrite = TRUE
)

class(pts)
#> [1] "dbSpatial"
#> attr(,"package")
#> [1] "dbSpatial"
pts
#> # Class:    dbSpatial 
#> # Source:   SQL [?? x 4]
#> # Database: DuckDB 1.5.2 [unknown@Linux 6.6.87.2-microsoft-standard-WSL2:R 4.6.0/:memory:]
#>      id     x     y geom       
#>   <int> <dbl> <dbl> <chr>      
#> 1     1     0     0 POINT (0 0)
#> 2     2     1     1 POINT (1 1)
#> 3     3     2     2 POINT (2 2)

DBI::dbDisconnect(con, shutdown = TRUE)

’’