skillfed

pyogrio

Vectorized spatial vector file format I/O using GDAL/OGR

pyogrio v0.13.0 17.2M downloads/30d#1,127 on PyPI332
Permissive license MIT License Copyright (c) 2020-2024 Brendan C. Ward and pyogrio contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation… (full text in the JSON record) Active released

What it is and what it does

Pyogrio is a Python interface to GDAL/OGR that reads and writes vector spatial data in bulk rather than row-by-row. It supports common formats like Shapefile, GeoPackage, GeoJSON, and FlatGeobuf, and integrates naturally with GeoPandas GeoDataFrames. The bulk approach avoids repeated Python type conversions, making I/O performance primarily limited by the underlying driver speed in GDAL/OGR itself.

The package is designed for workflows where you need to load or save geographic vector data efficiently—points, lines, polygons, and their associated attributes. It also handles non-spatial data (DBF, CSV attribute tables) when geometry is not needed. Installation requires GDAL >= 3.6 on your system and Python >= 3.10; pre-built wheels are available for Linux, macOS, and Windows.

Use it for:

  • Load a Shapefile or GeoPackage into a GeoPandas GeoDataFrame for spatial analysis and manipulation.
  • Export processed geographic data from GeoPandas back to Shapefile, GeoPackage, or GeoJSON format.
  • Bulk read or write large vector datasets where row-by-row I/O would be prohibitively slow.
  • Read non-spatial tabular data from DBF or CSV files stored in GeoPackage or other GDAL-supported sources.
  • Integrate GDAL/OGR vector I/O into Python geospatial pipelines without managing low-level C bindings.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Pyogrio provides fast, bulk-oriented read and write access to vector spatial data formats (Shapefile, GeoPackage, GeoJSON, etc.) via GDAL/OGR bindings, typically for use with GeoPandas GeoDataFrames.

Yes. Pyogrio is production-stable, actively maintained, and offers significant performance gains for vector spatial I/O. The MIT license is permissive. Medium install friction (compiled wheels, GDAL system dependency) is standard for geospatial tools. Install if you work with vector geographic data and need faster bulk read/write than row-by-row approaches.

Install

pyogrio on PyPI

pip

pip install pyogrio

uv

uv add pyogrio

poetry

poetry add pyogrio

Installing pyogrio

Before you install

Medium install friction due to compiled wheels and GDAL dependency. Active maintenance (last commit 2026-08-10, release 49 days ago) with stable production status. Supports modern Python versions (3.10+) across Linux, macOS, and Windows with pre-built wheels.

License in practice

MIT License (permissive) allows unrestricted use, modification, and distribution with minimal restrictions—suitable for commercial and private projects.

Quickstart

pip install pyogrio

import pyogrio

# Read a shapefile
data = pyogrio.read_dataframe('file.shp')

# Write to GeoPackage
pyogrio.write_dataframe(data, 'output.gpkg')

Requires GDAL >= 3.6 installed on the system; Python >= 3.10 required. Reading to GeoDataFrames requires geopandas >= 0.12 and shapely >= 2.

Verify before relying

  • Exact performance improvements (description claims >5-100x speedups reading, >5-20x writing) compared to row-per-row approaches—magnitude and test conditions not detailed.
  • Whether pyarrow integration for use_arrow=True parameter is automatically available or requires separate installation and configuration.

Package facts

License MIT License Copyright (c) 2020-2024 Brendan C. Ward and pyogrio contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation… (full text in the JSON record) (permissive)
Python support supports the current Python release (>=3.10)
Install friction medium — platform-specific wheel
Runtime dependencies 3 — certifi, numpy, packaging
Maintenance actively maintained — 49 days since the last release
Last repo commit
First released
Downloads 17,198,986/month — #1,127 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pyogrio-0.13.0-cp310-cp310-macosx_12_0_arm64.whl; pyogrio-0.13.0-cp310-cp310-macosx_12_0_x86_64.whl; pyogrio-0.13.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; pyogrio-0.13.0-cp310-cp310-manylinux_2_28_aarch64.whl; pyogrio-0.13.0-cp310-cp310-manylinux_2_28_x86_64.whl; pyogrio-0.13.0-cp310-cp310-win_amd64.whl; pyogrio-0.13.0-cp311-abi3-macosx_12_0_arm64.whl; pyogrio-0.13.0-cp311-abi3-macosx_12_0_x86_64.whl; pyogrio-0.13.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; pyogrio-0.13.0-cp311-abi3-manylinux_2_28_aarch64.whl; pyogrio-0.13.0-cp311-abi3-manylinux_2_28_x86_64.whl; pyogrio-0.13.0-cp311-abi3-win_amd64.whl; pyogrio-0.13.0-cp314-cp314t-macosx_12_0_arm64.whl; pyogrio-0.13.0-cp314-cp314t-macosx_12_0_x86_64.whl; pyogrio-0.13.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; pyogrio-0.13.0-cp314-cp314t-manylinux_2_28_aarch64.whl; pyogrio-0.13.0-cp314-cp314t-manylinux_2_28_x86_64.whl; pyogrio-0.13.0-cp314-cp314t-win_amd64.whl

Development Status :: 5 - Production/StableIntended Audience :: Science/ResearchLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: Free Threading :: 2 - BetaTopic :: Scientific/Engineering :: GIS

Tags

spatial vector file I/Oshapefile geopackage readerGDAL OGR Python bindingsgeospatial data bulk read writeGeoJSON GeoPackage import exportfast vector data accessgeographic data format conversion
geospatialgdal-ogrgeopandas-compatible

More GIS packages