GeoArrow is an Apache Arrow-based columnar format for geospatial data. Ideal for big data analytics, ML pipelines, and visualization. Works with DuckDB, Pandas, Polars, and other Arrow-compatible tools.
Key Features

About GeoArrow Format
Apache Arrow is the standard for representing tables in memory: columns lie contiguously, the schema is described explicitly, and different programs read the very same bytes without copying or re-encoding. GeoArrow is the agreement on how to store geometry inside that structure so that GeoPandas, DuckDB, Polars, deck.gl and GDAL understand it.
The format is taken when data is not displayed but computed: spatial joins over millions of features, feature preparation for a model, a dashboard on top of a columnar engine. At those volumes, parsing text GeoJSON eats more time than the analysis itself.
The output is a single .arrow file (Apache Arrow IPC, also known as Feather v2). All the layers are merged into one table, and every row has a layer column with the name of its source layer. Geometry is stored as a binary column in WKB format, and the WGS84 (EPSG:4326) coordinate system is described in the schema metadata per the GeoArrow 1.0.0 convention.
By default the file is compressed with the zstd codec; you can choose lz4 or no compression at all. There is a safety limit of 10 million features per export, so as not to eat up the server's memory.
What Program Opens GeoArrow Files
The following programs and applications can open, edit, and work with GeoArrow (Apache Arrow) (.arrow) files exported from OSM2CDR:
Format specifications
- Open standard
- 3D coordinates supported
- Lossless (no quality loss)
- Stores feature attributes
- Output: 1 file
- GeoArrow .arrow (Apache Arrow extension). In-memory columnar geometry, zero-copy interop with pandas, R, Julia.
Who Uses GeoArrow Maps
How to Export GeoArrow
How to Open After Export
- Python — pyarrow.ipc.open_file("map.arrow").read_all() gives you the table; the geometry is restored from the WKB column with shapely.from_wkb or geopandas.
- DuckDB — INSTALL spatial; LOAD spatial; then SELECT * FROM 'map.arrow' and ST_GeomFromWKB on the geometry column.
- Polars and pandas — pl.read_ipc("map.arrow") or reading through pyarrow: the attribute part works like an ordinary table, with no geo wrapping.
- R and Julia — the arrow packages read the same file: it is one format across all languages, no conversion needed.
- Visualization and GIS — lonboard and deck.gl draw Arrow tables directly; for QGIS it is easier to convert to GeoPackage with ogr2ogr (GDAL 3.8 and newer).
Popular maps in GeoArrow
Get GeoArrow (Apache Arrow) map exports
Download professional GeoArrow maps from OpenStreetMap. Instant generation, any area.
Frequently Asked Questions
Related Formats
Frequently Exported Together
Related Articles
GeoArrow format: zero-copy columnar geo — OSM export for Polars/DuckDB
GeoArrow from Apache Arrow geo-WG (Kyle Barron, 2022): IPC zero-copy, interleaved coords, GeoParquet 1.1 backend.
guideGeoParquet: The Format for Fast Geospatial Analytics
What is GeoParquet, why it outperforms Shapefile for analytics, and how to use it with DuckDB, Python, and QGIS. A compl