COOLJAPAN
← All posts

OxiGDAL 0.1.4 Released — Advanced Geometry Algorithms, SIMD Resampling, and a Pure Rust ML Runtime

OxiGDAL 0.1.4 lands Weiler-Atherton polygon clipping, Karney geodesic area, DE-9IM topology predicates, and marching-squares contours, plus AVX2/NEON SIMD resampling, a completed COPC point-cloud reader, R-tree STR bulk loading + kNN, and a migration from ort to oxionnx for fully Pure Rust ONNX inference. 76 crates, 12,064 passing tests.

release oxigdal gdal geospatial algorithms simd onnx point-cloud pure-rust

The Pure Rust GDAL gets serious about computational geometry — and drops its last ML C++ dependency.

Today we released OxiGDAL 0.1.4 — a substantial feature release that deepens the geometry algorithm layer, adds SIMD resampling kernels, completes the COPC point-cloud reader, and migrates ONNX inference from the C++-backed ort to the Pure Rust OxiONNX runtime.

No C. No C++. No Fortran. No PROJ/GEOS — and now, no C++ ONNX Runtime either. Everything still compiles to a single static binary or a sub-1 MB WASM bundle and runs everywhere.

Why OxiGDAL 0.1.4 is a game changer

Heavy geospatial geometry has long meant linking GEOS, and on-device ML inference has meant linking a C++ ONNX runtime. This release replaces both with Pure Rust. The workspace stands at 76 crates (~580K Rust SLoC) with 15 format drivers and 12,064 passing tests (45 skipped, 0 failures).

Two themes define 0.1.4:

Technical Deep Dive: the two waves of 0.1.4

  1. Wave 1 — algorithms depth (oxigdal-algorithms) Weiler–Atherton polygon clipping handles general polygon-polygon clipping with hole support. Karney’s geodesic area formula delivers sub-meter accuracy on the WGS84 ellipsoid. The DE-9IM (Dimensionally Extended 9-Intersection Model) brings the complete topological predicate matrix, and marching squares extracts raster isolines for contour generation.

  2. Wave 1 — Pure Rust ML migration (oxigdal-ml) All ONNX inference moves from ort to oxionnx, aligning the ML stack with the COOLJAPAN Pure Rust Policy. The error taxonomy and OnnxModel API were refined for the new runtime; cloud detection and super-resolution models load and run with no C++ dependency.

  3. Wave 2 — spatial indexing & SIMD (oxigdal-index, oxigdal-algorithms, oxigdal-noalloc) The R-tree gains node deletion with rebalancing, STR (Sort-Tile-Recursive) bulk loading for O(n log n) construction, k-nearest-neighbor search via a priority queue, and serialization/deserialization. New AVX2 and NEON intrinsics accelerate bilinear and bicubic resampling with runtime CPU-feature detection. Raster polygonization extracts vector polygons from labeled regions with hole detection, and topology-preserving simplification (Visvalingam–Whyatt and Douglas–Peucker variants) keeps shared boundaries intact across adjacent polygons. The oxigdal-noalloc crate adds zero-allocation, const-generic geometry types (FixedLineString<N>, FixedRing<N>, BBox3D, a Mercator helper, and geohash neighbour enumeration).

  4. Wave 2 — point clouds & tiles (oxigdal-copc, oxigdal-pmtiles, oxigdal-gpkg) A complete COPC (Cloud Optimized Point Cloud) reader traverses the EPT hierarchy with octree spatial queries and HTTP range support. The PMTiles reader pipeline is now end-to-end, with OxiARC decompression (gzip/brotli/zstd), FNV-1a content dedup on reads, and root + leaf directory navigation. GeoPackage adds a B-tree index for attribute queries plus Well-Known Binary 3D parsing (PointZ, LineStringZ, PolygonZ, …).

Getting Started

cargo add oxigdal

The unified opener now reaches point clouds and tile archives alongside rasters and vectors:

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(())
}

Enable the new drivers and algorithm depth as you need them — for example features = ["copc"] for point clouds or ["index"] for the enhanced R-tree.

What’s New in 0.1.4

Tips

This is the foundation

OxiGDAL is the geospatial layer of the COOLJAPAN Pure Rust ecosystem, and 0.1.4 tightens that integration: ML inference now rides on OxiONNX, compression and tile decoding go through OxiArc (oxiarc-zstd, oxiarc-brotli, …), binary serialization uses OxiCode, numerics build on SciRS2-Core, and S3-compatible storage flows through RS3GW. With the ort dependency gone, the default build is C/C++-free end to end — including the machine-learning path.

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

Star the repo if you want GEOS-grade geometry and on-device ML without a single C++ library.

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

KitaSan at COOLJAPAN OÜ April 19, 2026

↑ Back to all posts