Skip to content

geoarrow/geoarrow-rs

Repository files navigation

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 Python bindings and JavaScript (WebAssembly) bindings, wrapping the GeoArrow memory layout and offering vectorized geometry operations.

Documentation

Documentation Website

Project Status

May 7, 2025

The geoarrow-rs project is about 3 years old. Early prototyping started inside the geopolars repo before deciding I needed something more general (not tied to Polars) and creating first geopolars/geoarrow and then lastly geoarrow/geoarrow-rs.

However despite its age, the geoarrow crate suffers from a couple issues. For one, it took a while to figure out the right abstractions. And learning Rust at the same time didn't help. The geoarrow crate is also too monolithic. Some parts of geoarrow are production ready, but there's decidedly a lot of code in geoarrow that is not production ready. And it's very much not clear which parts of geoarrow are production ready or not.

But I think geoarrow-rs has potential to form part of the core geospatial data engineering stack in Rust. And as part of that, we need a better delineation of which parts of the code are stable or not. As such, the geoarrow-rs repo is currently ongoing a large refactor from a single crate to a monorepo of smaller crates, each with a more well-defined scope.

As of May 2025, avoid using the geoarrow crate and instead use the newer crates with a smaller scope, like geoarrow-array.

These smaller crates are designed to mimic the upstream arrow crates as much as possible.

Stability

  • geoarrow-schema: Pretty stable
  • geoarrow-array: Pretty stable
  • geoarrow-cast: Pretty stable
  • geoarrow-flatgeobuf: Somewhat stable.
  • geoparquet: Somewhat stable. A decently large refactor is expected in #1089.
  • Other Rust crates: unstable
  • Python bindings: unstable
  • JS bindings: unstable

References

About

GeoArrow in Rust, Python, and JavaScript (WebAssembly) with vectorized geometry operations

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE_APACHE
MIT
LICENSE_MIT

Stars

Watchers

Forks

Contributors 12