Crate rusqlite_gpkg

Crate rusqlite_gpkg 

Source
Expand description

GeoPackage reader/writer built on top of rusqlite.

§Overview

  • Gpkg represents the GeoPackage connection.
  • GpkgLayer represents a single layer (feature table).
  • GpkgFeature represents a single feature (row).
  • Value represents 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§

params

Structs§

ArrowGpkgReader
Iterator that yields Arrow RecordBatches of features from a GeoPackage layer.
ColumnSpec
Column definition used when creating or describing layer properties.
Gpkg
GeoPackage connection wrapper for reading (and later writing) layers.
GpkgFeature
A single feature with geometry bytes and owned properties.
GpkgFeatureBatchIterator
Iterator that yields batches of features from a layer.
GpkgLayer
A GeoPackage layer with geometry metadata and column specs.
GpkgLayerMetadata
Layer-wide metadata and property column definitions.

Enums§

ColumnType
Logical column types used by GeoPackage layers and DDL helpers.
Dimension
Supported WKB dimensions
GeometryType
The geometry type of the WKB object.
GpkgError
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.

Type Aliases§

Result