// the find
geoarrow/geoarrow-rs
GeoArrow in Rust, Python, and JavaScript (WebAssembly) with vectorized geometry operations
geoarrow-rs implements the GeoArrow spec in Rust with bindings for Python and WebAssembly, letting you do vectorized geometry operations on Arrow-native memory. The core value is zero-copy interop: spatial data stays in Arrow columns as you move it between Rust, Python, and the browser. Aimed at geospatial data engineers who are tired of serializing geometries to WKB just to pass them between libraries.
The zero-copy WASM bridge is the real standout — geometry arrays move between JS and WASM without serialization, which is rare and genuinely useful for large datasets in the browser. The Python package split (core / compute / io) is clean; you don't drag in GDAL or Parquet deps if you only need in-memory ops. GeoParquet support is first-class with async readers, which matters for reading from cloud object storage without downloading full files. The GeoRust algorithm coverage is broad — area, centroid, convex hull, Fréchet distance, simplify, geodesic area — all vectorized over Arrow arrays.
Still pre-1.0 on the spec (GeoArrow 0.2.0), so the type system is in flux; adopting this in production means tracking breaking changes in the spec itself, not just the library. The Rust crate docs are largely commented out in the README — the docs site exists but the Rust API docs link is disabled, so you're reading source to understand the Rust interface. The `tests_old` directory sitting alongside `tests` is a yellow flag: there's clearly a migration in progress and it's not obvious which tests are authoritative. PROJ support is a separate optional crate with a nearly empty README, meaning CRS reprojection — a basic geospatial operation — is underspecified and possibly incomplete.