COOLJAPAN
← All posts

OxiGDAL 0.1.2 Released — PMTiles v3 Writer, Geometry Operations, and a Unified Conversion API

OxiGDAL 0.1.2 adds a PMTiles v3 writer with Hilbert tile IDs and content dedup, a full geometry validation/operations module (centroid, area, point-in-polygon, simplify, convex hull), and a unified umbrella crate with 12-format conversion planning. Now 76 Pure Rust workspace crates, 15 format drivers, 10,935 passing tests — zero C dependencies in default features.

release oxigdal gdal geospatial pmtiles geometry vector-tiles pure-rust cloud-native

The Pure Rust GDAL gains a vector-tile writer and a proper geometry toolkit.

Today we released OxiGDAL 0.1.2 — a feature release that adds PMTiles v3 writing, a complete geometry validation-and-operations module, and a unified conversion API on the umbrella crate.

No C. No C++. No Fortran. No PROJ/GEOS system libraries. No build hell, no 1 GB Docker images — just memory-safe geospatial processing that compiles to a single static binary or a sub-1 MB WASM bundle and runs everywhere.

Why OxiGDAL 0.1.2 is a meaningful step

GDAL has historically pushed vector-tile generation and geometry predicates out to a constellation of separate tools (tippecanoe, GEOS, shapely). OxiGDAL pulls them in-tree, in Pure Rust. With this release the workspace has grown to 76 crates (~540K Rust SLoC) and ships 15 format drivers — adding COPC/LAS, GeoPackage, MBTiles, and PMTiles to the original eleven — with 10,935 passing tests (45 skipped, 0 failures) backing it.

The headline additions:

Technical Deep Dive: what changed under the hood

  1. PMTiles v3 writer (oxigdal-pmtiles) PmTilesBuilder provides a simple add_tile / build flow. Internally it encodes tile IDs along a Hilbert curve (hilbert.rs), serializes directories with LEB128 varints (varint.rs), and deduplicates identical tiles by FNV-1a hash before writing the PMTiles v3 header and directory structure. The result is a single, range-request-friendly archive that drops straight onto S3 or any static host.

  2. Geometry validation & operations (oxigdal-index) A new validation.rs surfaces seven ValidationIssue variants — unclosed ring, self-intersection, wrong hole orientation, and more — while operations.rs adds centroid, Shoelace area, perimeter, ray-casting point-in-polygon, Douglas–Peucker simplification, Graham-scan convex hull, is_convex, distance, and bounding-box helpers. It is the geometry toolkit that vector pipelines need, without a GEOS link.

  3. Umbrella crate integration (oxigdal) The top-level crate adds seven feature-gated re-exports (gpkg, pmtiles, mbtiles, copc, index, noalloc, services) and a new convert.rs with DatasetFormat detection across 12 formats, a ConversionPlan, and can_convert / supported_conversions queries — so one dependency exposes the whole stack.

  4. Refactoring for maintainability Two large modules were split to honor the 2,000-line ceiling with zero breaking changes: the 1,981-line ogc_features.rs in oxigdal-services became seven focused modules, and the 1,873-line epsg.rs in oxigdal-proj became five.

Getting Started

cargo add oxigdal

Open any supported dataset through the unified entry point:

use oxigdal::Dataset;

fn main() -> oxigdal::Result<()> {
    let dataset = Dataset::open("world.tif")?;
    println!("Format : {}", dataset.format());
    println!("Size   : {}x{}", dataset.width(), dataset.height());
    println!("CRS    : {}", dataset.crs().name());
    Ok(())
}

Or drive format conversion straight from the CLI:

oxigdal convert input.shp output.fgb

What’s New in 0.1.2

Tips

This is the foundation

OxiGDAL is the geospatial layer of the COOLJAPAN Pure Rust ecosystem, and 0.1.2 keeps every byte of it C-free. PMTiles archives are written through OxiArc compression, binary serialization uses OxiCode, numerical building blocks come from SciRS2-Core, and S3-compatible storage is reached via the RS3GW gateway — no zip, no flate2, no bincode anywhere in the default closure.

Repository: https://github.com/cool-japan/oxigdal

Star the repo if you want vector tiles and geometry operations without the C++ toolchain.

Pure Rust cloud-native geospatial is here — fast, safe, and sovereign.

KitaSan at COOLJAPAN OÜ March 17, 2026

↑ Back to all posts