hilbert-geometry

Crates.iohilbert-geometry
lib.rshilbert-geometry
version0.1.8
created_at2025-05-26 04:09:50.896593+00
updated_at2025-05-28 09:57:00.968242+00
descriptionHilbert-encoded geometries. Currently only supports lon/lat coordinates.
homepage
repositoryhttps://github.com/alamminsalo/hilbert-geometry
max_upload_size
id1688922
size19,627
(alamminsalo)

documentation

README

Hilbert Geometry

Encodes geo-types geometries using hilbert encoding. Currently only supports lon/lat coordinates. Uses bincode for binary serialization.

Note: compression is lossy, translating to around 0.1 meter real-world loss of precision.

Usage:

use geo_types::{polygon, Geometry};
use hilbert_geometry::HilbertSerializer;

let serializer = HilbertSerializer::new();
let poly = Geometry::Polygon(polygon![
    (x: 0.0, y: 0.0),
    (x: 1.0, y: 0.0),
    (x: 1.0, y: 1.0),
    (x: 0.0, y: 1.0),
    (x: 0.0, y: 0.0)
]);
let encoded: Vec<u8> = serializer.encode(&poly).unwrap();
let decoded: Geometry = serializer.decode(&encoded).unwrap();

Compression examples

Geometry Hilbert Geometry WKB
Point 9 bytes 21 bytes
Linestring 18 bytes 41 bytes
Polygon 43 bytes 93 bytes
Commit count: 27

cargo fmt