--- title: "Class Structure" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Class Structure} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) has_duckdb <- requireNamespace("duckdb", quietly = TRUE) knitr::opts_chunk$set(eval = has_duckdb) ``` # Class Structure The `dbSpatial` package is designed to work with spatial geometries in a DuckDB table. The package builds on the [DuckDB spatial extension](https://duckdb.org/docs/extensions/spatial.html). `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](https://duckdb.org/docs/extensions/spatial.html#st_read--read-spatial-data-from-files) that are supported by the DuckDB spatial extension. The runnable example below is evaluated only when the `duckdb` package is available in the check environment. ## Minimal example ```{r} library(dbSpatial) con <- DBI::dbConnect(duckdb::duckdb(), ":memory:") DBI::dbExecute(con, "SET threads = 1") 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) pts DBI::dbDisconnect(con, shutdown = TRUE) ``` [![''](https://mermaid.ink/img/pako:eNp9U-9r2zAQ_VeEPu2Hq0WzYreiDAqFfRqMpmwwDOFsyYlaWQqSPJaZ_O-TnTSN1jb6cr73jnfHu_OAGysk5rjR4P2tgpWDrjKVMdBJv4FGotub-xs0jBiKb6pDkQkK9LJVWvphz4zvIyJ-vUnylbQP3poEI2Sf7lJVtzjI2vpBNiEVDtI54Hzs_COS1r1B3oGP2Sn5VdkQLOerKX63ygR_jtfblTVJhW-jdvvqzMpcdLKzbpsMKyAAad3o4Qs4QK2f4Elsl_ot6icbtKrRcNrsSCXNGmsMR6JvHkW9HJNoj0od_w26l3xa5Sk8NuWRdM0aTiy7QIv75Yd371Hbm0nqedoxHCZObgBdE_LleT6O7iSITz-dCrIy_-_1bPHR0LNVOMOddB0oEW93cqPCYS07WWEeP4VsodehwnHWWAp9sIutaTBvQXuZ4X4TVyEP535EN2B-WRvz4Pp9ivmA_2BO53NCP5c5ZSUr2JzRywxvIzyjJC-KGWOsmFNWFMUuw38nhRkp6RWlRcnKvLzKZ3mGpVDxar8dfrcx7P4BMZQVSg?type=png)](https://mermaid.live/edit#pako:eNp9U-9r2zAQ_VeEPu2Hq0WzYreiDAqFfRqMpmwwDOFsyYlaWQqSPJaZ_O-TnTSN1jb6cr73jnfHu_OAGysk5rjR4P2tgpWDrjKVMdBJv4FGotub-xs0jBiKb6pDkQkK9LJVWvphz4zvIyJ-vUnylbQP3poEI2Sf7lJVtzjI2vpBNiEVDtI54Hzs_COS1r1B3oGP2Sn5VdkQLOerKX63ygR_jtfblTVJhW-jdvvqzMpcdLKzbpsMKyAAad3o4Qs4QK2f4Elsl_ot6icbtKrRcNrsSCXNGmsMR6JvHkW9HJNoj0od_w26l3xa5Sk8NuWRdM0aTiy7QIv75Yd371Hbm0nqedoxHCZObgBdE_LleT6O7iSITz-dCrIy_-_1bPHR0LNVOMOddB0oEW93cqPCYS07WWEeP4VsodehwnHWWAp9sIutaTBvQXuZ4X4TVyEP535EN2B-WRvz4Pp9ivmA_2BO53NCP5c5ZSUr2JzRywxvIzyjJC-KGWOsmFNWFMUuw38nhRkp6RWlRcnKvLzKZ3mGpVDxar8dfrcx7P4BMZQVSg)