NAME CHANGE:
This crate was originally published under the name geoarrow2 because someone
else had reserved the crate name
geoarrow. That person did not plan
to work on geoarrow and transferred ownership of that name to me, so future
releases will be under the geoarrow crate name.
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:
= { = "geoarrow2", = "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.