geoarrow-rs
A Rust implementation of the GeoArrow specification and bindings to GeoRust algorithms for efficient spatial operations on GeoArrow memory.
This repository also includes JavaScript (WebAssembly) bindings, wrapping the GeoArrow memory layout and offering vectorized geometry operations.
Documentation
- Rust library https://docs.rs/geoarrow2/latest/geoarrow2/
- JavaScript library: https://kylebarron.dev/geoarrow-rs/js
- Rust wasm-bindgen library: https://docs.rs/geoarrow-wasm/latest/geoarrow_wasm/
Examples
Install
Add this to your Cargo.toml
:
geoarrow = { package = "geoarrow2", version = "0.1" }
This will let you reference the package name as geoarrow
in your code, even though the name on Crates.io is geoarrow2
. Sadly the name geoarrow
is squatted on by an empty package.
References
- Prototyping GeoRust + GeoArrow in WebAssembly gives an early preview of the JavaScript API.
- GeoArrow and GeoParquet in deck.gl gives an overview of what GeoArrow's memory layout looks like under the hood, even though it's focused on how to render the data on a map.
- Thoughts on GEOS in WebAssembly introduces why I think GeoRust + GeoArrow on the web has significant potential.
- Zero-copy Apache Arrow with WebAssembly explains how the JavaScript bindings are able to move memory between JavaScript and WebAssembly so efficiently.