You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.