Expand description
GeoPackage reader/writer built on top of rusqlite.
§Overview
Gpkgrepresents the GeoPackage connection.GpkgLayerrepresents a single layer (feature table).GpkgFeaturerepresents a single feature (row).Valuerepresents a single property value.
Apache Arrow support is available behind the arrow feature flag.
Gpkg is the entry point and supports several open modes:
Gpkg::open_read_only(path), Gpkg::open(path), and Gpkg::open_in_memory().
GpkgLayer::features() loads all features into memory. For large datasets,
use features_batch(batch_size) to stream in chunks.
GpkgLayer::insert and GpkgLayer::update accept any geometry that implements
geo_traits::GeometryTrait<T = f64> (for example geo_types::Point).
§Browser usage (to_bytes / from_bytes)
In browser environments, file access is often unavailable. Use to_bytes() to
serialize an in-memory GeoPackage and from_bytes() to restore it later.
use rusqlite_gpkg::Gpkg;
let gpkg = Gpkg::open_in_memory()?;
let bytes = gpkg.to_bytes()?;
let _restored = Gpkg::from_bytes(&bytes)?;§Gpkg
Gpkg represents the GeoPackage connection and is the entry point for
opening databases, listing layers, and creating new layers.
use rusqlite_gpkg::Gpkg;
let gpkg = Gpkg::open_read_only("data/example.gpkg")?;
let layer = gpkg.get_layer("points")?;§GpkgLayer
GpkgLayer models a single feature table. It exposes schema information
(geometry column, property columns) and provides read/write operations.
use geo_types::Point;
use rusqlite_gpkg::{Gpkg, params};
let layer = Gpkg::open("data.gpkg")?.get_layer("points")?;
layer.insert(Point::new(1.0, 2.0), params!["alpha", 7_i64])?;§GpkgFeature
GpkgFeature represents one row. You can read the primary key, geometry, and
property values from it.
use rusqlite_gpkg::Gpkg;
let features = Gpkg::open_read_only("data.gpkg")?
.get_layer("points")?
.features()?;
let feature = features.first().expect("feature");
let _geom = feature.geometry()?;§Value
Value is the crate’s owned dynamic value for feature properties, mirroring
SQLite’s dynamic typing. Convert with try_into() or match directly.
use rusqlite_gpkg::Gpkg;
let features = Gpkg::open_read_only("data.gpkg")?
.get_layer("points")?
.features()?;
let feature = features.first().expect("feature");
let name: String = feature.property("name").ok_or("missing name")?.try_into()?;§Arrow (feature = “arrow”)
The Arrow reader yields RecordBatches for a layer. It borrows the Gpkg
because it holds a prepared statement internally.
use rusqlite_gpkg::{ArrowGpkgReader, Gpkg};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let gpkg = Gpkg::open_read_only("data/example.gpkg")?;
let mut reader = ArrowGpkgReader::new(&gpkg, "points", 256)?;
let _batch = reader.next().transpose()?;
Ok(())
}
fn main() {}Macros§
Structs§
- Arrow
Gpkg Reader - Iterator that yields Arrow
RecordBatches of features from a GeoPackage layer. - Column
Spec - Column definition used when creating or describing layer properties.
- Gpkg
- GeoPackage connection wrapper for reading (and later writing) layers.
- Gpkg
Feature - A single feature with geometry bytes and owned properties.
- Gpkg
Feature Batch Iterator - Iterator that yields batches of features from a layer.
- Gpkg
Layer - A GeoPackage layer with geometry metadata and column specs.
- Gpkg
Layer Metadata - Layer-wide metadata and property column definitions.
Enums§
- Column
Type - Logical column types used by GeoPackage layers and DDL helpers.
- Dimension
- Supported WKB dimensions
- Geometry
Type - The geometry type of the WKB object.
- Gpkg
Error - Crate error type for GeoPackage operations.
- Value
- Owned dynamic value used for feature properties.
Functions§
- register_
spatial_ functions - Register all spatial SQL helper functions in the provided connection.