• Added gpkg_create_spatial_view() for creating spatial views, which are dynamic layers accessible as if they were typical static geometry layers (for #6).

  • gpkg_write() now properly writing attributes from a data.frame source (which is not nested in a list) when table_name argument is

  • gpkg_tables() better handling for terra::vect() failures with non-spatial table function fallback.

    • Found a regression in {terra} behavior that was reported and fixed, so the likelihood of error in the future is lower.
  • gpkg_write() now can handle SpatVectorProxy input by querying it. Note this will not work for data that will not fit in memory. May try to implement an ogr2ogr-like interface for this in the future (#15).

  • geopackage() internal connection object has been moved to an internal environment (<geopackage>$env$con rather than <geopackage>$con)

  • gpkg_connect() allows for in-place modification of an existing object for the purposes of creating an internal SQLiteConnection

  • Improvement to gpkg_add_contents() and gpkg_update_contents(): more intelligent choice of data type when heterogeneous (non-attribute) data are in database but not registered. Fix for broken tests on Windows/GDAL 3.5.2.

  • Fixed bug in .gpkg_gdaloptions_add() that could cause addition of options with no value set

  • Added gpkg_vect(): a terra::vect()-based analog of gpkg_table() for lazy manipulation of vector and attribute data in a GeoPackage

  • gpkg_update_table() defaults to wherecol=NULL which allows updating rows with no SQL WHERE clause specified

  • Updated definitions of lazy.frame() and dplyr.frame() and related docs

  • Updated gpkg_write() for raster, vector, and attribute data

    • General cleanup and refactored approach for splitting input data sources between attributes, vector, and tiled grid coverage.

    • New approach still contains hard-coded logic related to the allowed object types and file data sources (that will be generalized in the future)

    • RASTER_TABLE name is now properly injected into GDAL options from named list input (when not otherwise specified)

  • Bug fix in geopackage(<list>) related to appending v.s. overwriting raster data

  • gpkg_update_contents(): Handle gpkgext_ and sqlite_sequence as standard GPKG table prefixes

    • fixes error with updating contents of GPKG with extensions loaded
  • Added {dbplyr} backend option to return tibble object via geopackage object internal SQLiteConnection

  • Changed formatting of PRAGMA table_info child data.frame in lazy.frame() result

  • Initial draft of key features, R package structure, and naming of functions