// the find
georust/geozero
Zero-Copy reading and writing of geospatial data.
GeoZero is a Rust library for converting between geospatial formats without materializing an intermediate geometry representation. You implement the `GeomProcessor` trait and GeoZero streams coordinates directly to your handler — no allocation per vertex. It's for anyone building geospatial pipelines in Rust who wants to avoid the shapefile→geo-types→WKB round-trip.
The trait-based streaming API is genuinely clever: you can count vertices, build spatial indexes, or render directly to a canvas without touching an intermediate heap-allocated geometry. PostGIS integration covers rust-postgres, SQLx, and Diesel with proper SRID-aware WKB encoding, which is the thing that breaks most people. Format coverage is wider than you'd expect for a 469-star project — MVT, GeoPackage, Shapefile, GPX, plus GeoArrow/GeoParquet via companion crates. The benchmarks are committed to the repo with violin plots, which means perf regressions are at least visible.
Write support is missing for half the formats — GPX, Shapefile, and FlatGeobuf are read-only, which will surprise anyone assuming symmetry. The bench results in the repo are from June 2020 and haven't been updated since; whether the numbers still reflect current performance is unknown. Coordinate reference system handling is absent from the core API — SRID shows up only in the PostGIS WKB path, so anything requiring reprojection requires reaching for GDAL or a separate crate. The `GeomProcessor` trait has a lot of methods with default no-op implementations, making it easy to silently miss a callback (e.g. forgetting `polygon_begin` when you only implement `xy`).