Not Logged In

Fiona 0.8

Fiona is OGR’s neater API – sleek on the outside, indomitable power on the
inside.

Fiona provides a minimal, uncomplicated Python interface to the open source GIS
community’s most trusted geodata access library and integrates readily with
other Python GIS packages such as pyproj, Rtree, and Shapely.

How minimal? Fiona can read feature records as mappings from shapefiles or
other GIS vector formats and write mappings as records to files using the same
formats. That’s all. There aren’t any feature or geometry classes. Records and
their geometries are just data.

Dependencies

Fiona requires Python 2.6+ and libgdal 1.3.2+. To build from a source
distribution or repository clone you will need a C compiler and GDAL and Python
development headers and libraries. There are no binary distributions or Windows
support at this time.

Installation

Assuming you’re using a virtualenv (if not, skip to the 4th command) and
GDAL/OGR libraries, headers, and gdal-config program are installed to well
known locations on your system (via your system’s package manager),
installation is this simple:

If gdal-config is not available or if GDAL/OGR headers and libs aren’t
installed to a well known location, you must set include dirs, library dirs,
and libraries options via the setup.cfg file or setup command line as shown
below (using git):

Usage

Collections are much like file objects. Records are mappings modeled on
the GeoJSON format and if you want to do anything fancy with them you will
probably need Shapely or something like it:

from fiona import collection
# Open a source of features
with collection("docs/data/test_uk.shp", "r") as source:
# Define a schema for the feature sink
schema = source.schema.copy()
schema['geometry'] = 'Point'
# Open a new sink for features, using the same format driver
# and coordinate reference system as the source.
with collection(
"test_write.shp", "w",
driver=source.driver, schema=schema, crs=source.crs
) as sink:
# Process only the features intersecting a box
for f in source.filter(bbox=(-5.0, 55.0, 0.0, 60.0)):
# Get point on the boundary of the feature
f['geometry'] = {
'type': 'Point',
'coordinates': f['geometry']['coordinates'][0][0] }
# Stage feature for writing
sink.write(f)
# The sink shapefile is written to disk when its ``with`` block ends

Development and testing

Building from the source requires Cython. Tests require Nose. If the GDAL/OGR
libraries, headers, and gdal-config program are installed to well known
locations on your system (via your system’s package manager), you can do this: