Fiona transmite datos de entidades simples hacia y desde formatos GIS como GeoPackage y Shapefile.
Fiona puede leer y escribir datos del mundo real utilizando formatos GIS de múltiples capas, sistemas de archivos virtuales comprimidos y en memoria, desde archivos en su disco duro o en el almacenamiento en la nube. Este proyecto incluye módulos de Python y una interfaz de línea de comandos (CLI).
Fiona depende de GDAL pero es diferente de los enlaces propios de GDAL. Fiona está diseñada para ser altamente productiva y facilitar la escritura de código que sea fácil de leer.
Fiona tiene varios módulos de extensión que se vinculan con libgdal. Esto complica la instalación. Las distribuciones binarias (wheels) que contienen libgdal y sus propias dependencias están disponibles en el índice de paquetes de Python y se pueden instalar usando pip.
pip install fiona
Estas ruedas están destinadas principalmente a facilitar la instalación para aplicaciones sencillas, no tanto para producción. No se ha probado su compatibilidad con todas las demás ruedas binarias, paquetes conda o QGIS, y omiten muchos de los controladores de formato opcionales de GDAL. Si necesita, por ejemplo, compatibilidad con GML, deberá compilar e instalar Fiona desde una distribución fuente. Es posible instalar Fiona desde el código fuente usando pip (versión >= 22.3) y la opción --no-binary. Se puede seleccionar una instalación GDAL específica configurando la variable de entorno GDAL_CONFIG.
pip install -U pip
pip install --no-binary fiona fiona
Muchos usuarios consideran que Anaconda y conda-forge son una buena forma de instalar Fiona y obtener acceso a más controladores de formato opcionales (como GML).
Fiona 1.10 requiere Python 3.8 o superior y GDAL 3.4 o superior.
Las características se leen y escriben en objetos Collection
similares a archivos devueltos por la función fiona.open()
. Las características son clases de datos modeladas en el formato GeoJSON. No tienen ningún método espacial propio, por lo que si quieres transformarlos necesitarás Shapely o algo parecido. A continuación se muestra un ejemplo del uso de Fiona para leer algunas características de un archivo de datos, cambiar sus atributos de geometría usando Shapely y escribirlas en un nuevo archivo de datos.
import fiona
from fiona import Feature , Geometry
from shapely . geometry import mapping , shape
# Open a file for reading. We'll call this the source.
with fiona . open (
"zip+https://github.com/Toblerity/Fiona/files/11151652/coutwildrnp.zip"
) as src :
# The file we'll write to must be initialized with a coordinate
# system, a format driver name, and a record schema. We can get
# initial values from the open source's profile property and then
# modify them as we need.
profile = src . profile
profile [ "schema" ][ "geometry" ] = "Point"
profile [ "driver" ] = "GPKG"
# Open an output file, using the same format driver and coordinate
# reference system as the source. The profile mapping fills in the
# keyword parameters of fiona.open.
with fiona . open ( "centroids.gpkg" , "w" , ** profile ) as dst :
# Process only the feature records intersecting a box.
for feat in src . filter ( bbox = ( - 107.0 , 37.0 , - 105.0 , 39.0 )):
# Get the feature's centroid.
centroid_shp = shape ( feat . geometry ). centroid
new_geom = Geometry . from_dict ( centroid_shp )
# Write the feature out.
dst . write (
Feature ( geometry = new_geom , properties = f . properties )
)
# The destination's contents are flushed to disk and the file is
# closed when its with block ends. This effectively
# executes ``dst.flush(); dst.close()``.
La interfaz de línea de comandos de Fiona, denominada "fio", está documentada en docs/cli.rst. La CLI tiene varios comandos diferentes. Su comando fio cat
transmite características GeoJSON desde cualquier conjunto de datos.
$ fio cat --compact tests/data/coutwildrnp.shp | jq -c ' . '
{"geometry":{"coordinates":[[[-111.73527526855469,41.995094299316406],...]]}}
...
Para obtener más detalles sobre este proyecto, consulte: