fiona
Fiona reads and writes spatial data files
What it is and what it does
Fiona is a Python library that reads and writes vector geographic data in formats like Shapefile and GeoPackage. It wraps GDAL but is designed to be more productive and readable than GDAL's own Python bindings. Fiona models features as data classes following the GeoJSON structure, making it straightforward to read features from one file, transform them (often using Shapely for geometry operations), and write them to another format.
The package includes both a Python API via `fiona.open()` and a command-line tool (`fio`) for tasks like streaming GeoJSON or inspecting file metadata. Installation is straightforward via pip for simple applications, though production use or support for optional format drivers may require building from source or using conda. Fiona depends on GDAL 3.4+ and Python 3.8+.
Use it for:
- Convert between GIS formats (Shapefile to GeoPackage, etc.) with geometry or property transformations.
- Stream large vector datasets from files or cloud storage without loading everything into memory.
- Build command-line tools for GIS data processing and inspection using the fio CLI.
- Read geographic features and apply spatial operations (buffering, clipping) via Shapely integration.
- Extract and filter features from multi-layered GIS files based on bounding box or other criteria.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Fiona reads and writes vector GIS data (Shapefile, GeoPackage, etc.) via a Python API and command-line interface, wrapping GDAL with a focus on readable, productive code.
Yes, if you work with vector GIS data in Python and want a readable, productive API. Install via pip for simple use; for production or optional format support, use conda or build from source. No known vulnerabilities. Maintenance is aging (last release 697 days ago) but the repository remains active and the library is stable (Production/Stable status). Medium install friction is acceptable for most projects.
Install
fiona on PyPI
pip
pip install fionauv
uv add fionapoetry
poetry add fionaInstalling fiona
Before you install
Medium friction: prebuilt wheels available for common Python versions and platforms, but installation from source requires GDAL 3.4+ and system libraries. Wheels omit optional format drivers; production use may require conda or source builds. Last release 697 days ago; repository active but aging.
License in practice
BSD 3-Clause license is permissive; you may use, modify, and distribute Fiona in commercial and private projects with minimal restrictions, provided you include the license notice.
Quickstart
import fiona
from fiona import Feature, Geometry
with fiona.open('input.shp') as src:
profile = src.profile
with fiona.open('output.gpkg', 'w', **profile) as dst:
for feat in src:
dst.write(feat)
Requires GDAL 3.4 or higher and Python 3.8 or higher. System GDAL libraries must be installed; binary wheels include GDAL but may lack optional format drivers (e.g., GML).
Verify before relying
- Whether prebuilt wheels include all format drivers needed for your specific GIS formats beyond basic Shapefile and GeoPackage.
- Performance characteristics when streaming large datasets or working with cloud storage paths.
- Compatibility of bundled GDAL version with other geospatial packages in your environment.
Package facts
| License | BSD 3-Clause (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 6 — attrs, certifi, click, click-plugins, cligj, importlib-metadata |
| Maintenance | aging — 697 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 10,076,248/month — #1,485 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: fiona-1.10.1-cp310-cp310-macosx_10_15_x86_64.whl; fiona-1.10.1-cp310-cp310-macosx_11_0_arm64.whl; fiona-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; fiona-1.10.1-cp310-cp310-win_amd64.whl; fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl; fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl; fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; fiona-1.10.1-cp311-cp311-win_amd64.whl; fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl; fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl; fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; fiona-1.10.1-cp312-cp312-win_amd64.whl; fiona-1.10.1-cp313-cp313-macosx_10_15_x86_64.whl; fiona-1.10.1-cp313-cp313-macosx_11_0_arm64.whl; fiona-1.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; fiona-1.10.1-cp313-cp313-win_amd64.whl; fiona-1.10.1-cp38-cp38-macosx_10_15_x86_64.whl; fiona-1.10.1-cp38-cp38-macosx_11_0_arm64.whl; fiona-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; fiona-1.10.1-cp38-cp38-win_amd64.whl
Keywords: gis, vector, feature, data
Tags
More GIS packages
Shapely provides Python tools for creating,…
permissive · top 1,000 on PyPI
pyprojpyproj provides a Python interface to PROJ,…
permissive · top 1,000 on PyPI
geopandasGeoPandas extends pandas DataFrames to handle…
permissive · top 1,000 on PyPI
geopygeopy is a Python client for geocoding and…
permissive · top 5,000 on PyPI
pyogrioPyogrio provides fast, bulk-oriented read and…
permissive · top 5,000 on PyPI
h3h3 provides Python bindings to Uber's H3…
permissive · top 5,000 on PyPI
pyshpPyShp reads and writes ESRI Shapefiles in pure…
permissive · top 5,000 on PyPI
fudgeofudgeo creates and manages OGC…
permissive · top 15,000 on PyPI
rasterioRasterio reads and writes geospatial raster…
permissive · top 5,000 on PyPI
pygeoifPyGeoIf provides lightweight, pure-Python…
copyleft · top 15,000 on PyPI
geometConverts between GeoJSON, WKT/WKB, Extended…
permissive · top 5,000 on PyPI
geojsonEncodes, decodes, and represents GeoJSON…
permissive · top 5,000 on PyPI