hivevm/libgpkg2
SQLite loadable extension for GeoPackage file access. A fork of luciad/libgpkg, revived with a specification, conformance notes and ADRs.
- C++
- GeoPackage
- SQLite
- Specs + ADRs
- Language
- C++
- License
- Apache-2.0
- Commits
- 367 commits
- Last update
- Aug 2026
01 / Overview
GeoPackage is a self-describing file format for geodata based on SQLite. libgpkg is a SQLite 3 extension that provides a minimal OGC GeoPackage implementation.
This repository is a fork of luciad/libgpkg. The original was started by Luciad and had not been developed for years. The fork revives it and adds a written specification, conformance notes and Architecture Decision Records, so that the work can proceed spec-first.
It connects my GIS background (WebGIS, mobile GIS) with the spec-driven way of working.
02 / Architecture
How it fits together
HOST
SQLite 3
load_extension
EXTENSION
libgpkg2
GeoPackage functions
DATA
GeoPackage file
OGC, self-describing geodata
Loadable extension
Adds GeoPackage functions to SQLite 3. Load it with the sqlite3_load_extension C function or the load_extension SQL function.
Bundled shell
A modified SQLite 3 command-line shell named geopackage that autoloads the extension.
Dependencies
CMake 3.21+, SQLite 3.51.0+, Boost 1.90+. Optional ICU for international collation.
03 / Decisions
Specifications and decisions
Written specifications and architecture decision records live next to the code, so the reasoning behind the design stays reviewable.
- docs/SPECIFICATION.mdSpecification
- docs/CONFORMANCE.mdOGC GeoPackage conformance
- docs/adr/Architecture Decision Records
- AGENTS.mdRules for coding agents
04 / Getting started
Try it
Build outputs: build/shell/geopackage (standalone shell) and build/gpkg/shared/libgpkg.so (gpkg.dll on Windows), the loadable extension.
$ git clone https://github.com/hivevm/libgpkg2
$ cd libgpkg2
$ cmake -S . -B build && cmake --build build
$ ./build/shell/geopackage