-
Added
gpkg()
alias forgeopackage()
-
Added
gpkg_create_geometry_columns()
,gpkg_geometry_columns()
andgpkg_add_geometry_columns()
-
Added
gpkg_sf()
convenience method for creating an sf object from tables. Defaults to a sf tbl_df, useas_tibble=FALSE
for data.frame. -
Now using new
gpkg_create_spatial_ref_sys()
function internally to ensure GeoPackages have the minimum required tables -
gpkg_collect()
andgpkg_table(collect=TRUE)
gain support for selecting a subset of columns of interest -
Deprecate
gpkg_create_dummy_features()
function name and replace withgpkg_create_empty_features()
-
Deprecate
gpkg_contents(template=)
argument, provide new arguments for each data element (SRS ID and bounding box)
-
Implemented GDAL driver detection for file paths via {vapour} for #15
-
Implemented functions for creating
gpkg_spatial_ref_sys
table and adding or removing spatial reference system records:gpkg_create_spatial_ref_sys()
,gpkg_add_spatial_ref_sys()
gpkg_delete_spatial_ref_sys()
,gpkg_list_srs()
-
Implemented basic
gpkg_validate()
routine (will be expanded)- Checks that
gpkg_contents
andgpkg_spatial_ref_sys
exist - Checks that at least one tile or vector dataset (with at least 0 rows) is in the database and
gpkg_contents
- Checks that
-
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) whentable_name
argument is -
gpkg_tables()
better handling forterra::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).
- Added
gpkg_bbox()
as an application ofgpkg_ogr_query()
-
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()
andgpkg_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_tables()
when multiple attribute tables were present. -
Added
gpkg_ogr_query()
(andogr
argument togpkg_query()
) to support querying OGR data sources using a 'terra' SpatVectorProxy back end. This allows for use of GeoPackage-specific SQL functions and the OGR/SQLite dialects: https://gdal.org/user/sql_sqlite_dialect.html and https://gdal.org/user/ogr_sql_dialect.html; requires latest 'terra' (1.7-33+) -
Added
gpkg_rast()
(analog ofgpkg_vect()
forterra::rast()
) for lazy manipulation of gridded data in a GeoPackage -
Added
gpkg_create_dummy_features()
which is a workaround for use ofgpkg_vect()
on a GeoPackage with only attribute data. This creates innocuous entries ingpkg_geometry_columns
and an empty table to "trick" GDAL into reading arbitrary data sources. -
Added
gpkg_list_contents()
andgpkg_ogr_contents()
; the former returns only table names registered ingpkg_contents
table, which are optionally intersected with tables defined ingpkg_ogr_contents
whenogr=TRUE
.
-
Fixed bug in
.gpkg_gdaloptions_add()
that could cause addition of options with no value set -
Added
gpkg_vect()
: aterra::vect()
-based analog ofgpkg_table()
for lazy manipulation of vector and attribute data in a GeoPackage -
gpkg_update_table()
defaults towherecol=NULL
which allows updating rows with no SQLWHERE
clause specified
-
Refactoring table accessor methods (#2)
-
Renamed
lazy.frame()
->gpkg_table_pragma()
-
Renamed
dplyr.frame()
->gpkg_table()
-
gpkg_table()
gainscollect
argument (toggles materializing data.frame v.s. 'dbplyr' approach).collect
requires only 'RSQLite' not 'dbplyr'. -
gpkg_tables()
gainspragma
argument to toggle use ofgpkg_table_pragma()
overgpkg_table()
. It also supportscollect
argument.
-
-
gpkg_update_table()
is now exported; this method is/was used internally for updating the NoData entry for existing layers viagpkg_tile_set_data_null()
-
Updated definitions of
lazy.frame()
anddplyr.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()
: Handlegpkgext_
andsqlite_sequence
as standard GPKG table prefixes- fixes error with updating contents of GPKG with extensions loaded
-
Added {dbplyr} backend option to return
tibble
object viageopackage
object internal SQLiteConnection -
Changed formatting of PRAGMA
table_info
child data.frame inlazy.frame()
result
- Initial draft of key features, R package structure, and naming of functions