← All repositories

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
View on GitHub

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

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.

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