Nothing
## -----------------------------------------------------------------------------
#| include: false
# Limit threads to avoid a CRAN NOTE
Sys.setenv(OMP_THREAD_LIMIT = 2)
## -----------------------------------------------------------------------------
#| label: setup
#| message: false
#| warning: false
library(duckdb)
library(duckspatial)
library(dplyr)
library(sf)
## -----------------------------------------------------------------------------
countries_ddbs <- ddbs_open_dataset(
system.file(
"spatial/countries.geojson",
package = "duckspatial"
)
)
print(countries_ddbs)
## -----------------------------------------------------------------------------
## read with sf as usual
countries_sf <- read_sf(
system.file(
"spatial/countries.geojson",
package = "duckspatial"
)
)
## push into DuckDB
countries_ddbs <- as_duckspatial_df(countries_sf)
class(countries_ddbs)
## -----------------------------------------------------------------------------
countries_ddbs |>
ddbs_is_valid() |>
filter(!is_valid)
## -----------------------------------------------------------------------------
world_ddbs <- countries_ddbs |>
ddbs_make_valid() |>
ddbs_union()
print(world_ddbs)
## -----------------------------------------------------------------------------
world_sf <- world_ddbs |>
ddbs_collect()
print(world_sf)
## -----------------------------------------------------------------------------
plot(world_sf)
## -----------------------------------------------------------------------------
conn <- ddbs_create_conn()
## -----------------------------------------------------------------------------
conn <- ddbs_create_conn(
threads = 2,
memory_limit_gb = 8
)
## -----------------------------------------------------------------------------
ddbs_write_table(conn, countries_sf, name = "countries")
## -----------------------------------------------------------------------------
ddbs_list_tables(conn)
## -----------------------------------------------------------------------------
ddbs_is_valid("countries", conn = conn) |>
filter(!is_valid)
## -----------------------------------------------------------------------------
ddbs_make_valid("countries", conn = conn, name = "countries_valid")
ddbs_union("countries_valid", conn = conn, name = "world")
## -----------------------------------------------------------------------------
ddbs_read_table(conn, "world") |>
plot()
## -----------------------------------------------------------------------------
ddbs_stop_conn(conn)
## -----------------------------------------------------------------------------
#| eval: false
# conn <- ddbs_create_conn("my_database.duckdb")
## -----------------------------------------------------------------------------
#| eval: false
# ## open persistent connection
# conn <- ddbs_create_conn("my_database.duckdb")
#
# ## do all processing with duckspatial_df objects
# world_ddbs <- ddbs_open_dataset(
# system.file("spatial/countries.geojson", package = "duckspatial")
# ) |>
# ddbs_make_valid() |>
# ddbs_union()
#
# ## write only the final result to the persistent database
# ddbs_write_table(conn, world_ddbs, name = "world")
#
# ## close — "my_database.duckdb" will persist on disk
# ddbs_stop_conn(conn)
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.