geoarrow-pyarrow
What it is and what it does
geoarrow-pyarrow bridges geographic data and Apache Arrow by registering PyArrow extension types that preserve coordinate reference system (CRS) and geometry type metadata when reading and writing Arrow-native formats like Parquet and Arrow IPC. It integrates with geopandas for bidirectional conversion and provides direct I/O to GeoParquet files and vector data via pyogrio, enabling memory-efficient workflows for large spatial datasets.
The package includes compute functions for coordinate transformations between WKT (well-known text), WKB (well-known binary), and native GeoArrow encodings, plus utilities to construct geometry arrays from coordinate buffers. It also exposes the geoarrow-types module for managing the large space of geometry type permutations (X, Y, Z, M dimensions and serialization formats), making it useful both for end users working with geographic data and for developers building geospatial tools on Arrow.
Use it for:
- Read and write geographic data in Parquet format while preserving CRS and geometry type information.
- Convert between geopandas GeoDataFrames and Arrow tables for memory-efficient processing of large point clouds or polygon datasets.
- Load vector data directly from GeoParquet or OGR sources into PyArrow without intermediate geopandas materialization.
- Transform coordinate encodings between WKT, WKB, and GeoArrow native formats for interoperability.
- Build geospatial data pipelines that work natively with Arrow columnar storage and compute engines.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides Python bindings for the GeoArrow specification, enabling efficient storage and interchange of geographic data via PyArrow with support for Parquet, Arrow Stream, and Arrow File formats.
Yes, if you work with geographic data in Arrow-native formats or need efficient interop between geopandas and columnar storage. The low install friction and permissive license are favorable, but the aging maintenance status (444 days since last release) warrants checking whether active development meets your stability needs. No known security vulnerabilities.
Install
geoarrow-pyarrow on PyPI
pip
pip install geoarrow-pyarrowuv
uv add geoarrow-pyarrowpoetry
poetry add geoarrow-pyarrowInstalling geoarrow-pyarrow
Before you install
Low install friction with a pure-wheel distribution. Maintenance status is aging—last release was 444 days ago—but the repository remains active with recent commits and no archived status.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects.
Quickstart
pip install geoarrow-pyarrow
import geoarrow.pyarrow as ga
import pyarrow as pa
# Register extension types and read Arrow IPC files
with pa.ipc.open_stream(source) as reader:
tab = reader.read_all()
# Convert to geopandas
df = ga.to_geopandas(tab)
Requires Python >=3.8; pyarrow, geoarrow-types, and geoarrow-c must be installed.
Verify before relying
- Performance characteristics when handling large geographic datasets relative to memory overhead.
- Compatibility scope with specific versions of geopandas, pyogrio, and GeoParquet specifications.
- Whether coordinate shuffling between WKT, WKB, and GeoArrow encodings preserves precision for all geometry types.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — pyarrow, geoarrow-types, geoarrow-c |
| Maintenance | aging — 444 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 280,593/month — #8,109 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: geoarrow_pyarrow-0.2.0-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
geoarrow-cgeoarrow-c provides low-level Python bindings…
permissive · top 15,000 on PyPI
geoarrow-pandasIntegrates GeoArrow geometry data with pandas…
permissive · top 15,000 on PyPI
geoarrow-typesProvides pure Python utilities to manage,…
permissive · top 15,000 on PyPI
pyarrowpyarrow provides Python bindings to Apache…
permissive · top 100 on PyPI
pyarrow-hotfixDisables the CVE-2023-47248 security…
permissive · top 1,000 on PyPI
geopandasGeoPandas extends pandas DataFrames to handle…
permissive · top 1,000 on PyPI
pydantic-to-pyarrowConverts pydantic model definitions to pyarrow…
permissive · top 15,000 on PyPI
feather-formatFeather-format provides a Python interface to…
permissive · top 15,000 on PyPI
pyarrowfs-adlgen2Provides a PyArrow filesystem interface for…
permissive · top 15,000 on PyPI
overturemapsDownload and convert Overture Maps geospatial…
permissive · top 15,000 on PyPI