Fiona en Pyogrio zijn beide bibliotheken die worden gebruikt voor het lezen en schrijven van ruimtelijke vectorgegevensformaten. Hoewel ze enkele overeenkomsten delen, zijn er belangrijke verschillen in hun aanpak en mogelijkheden:
1. Benadering
- Fiona: Fiona is een volledig uitgeruste Python-bibliotheek voor het werken met OGR-vectorgegevensbronnen. Het maakt gebruik van een stateful aanpak, waarbij gegevens in een reeks passages worden gelezen of geschreven, waardoor meer flexibiliteit en controle over de gegevensverwerking mogelijk is. Dit maakt het geschikt voor een breed scala aan taken, waaronder complexe datatransformaties en incrementeel schrijven of toevoegen[1].- Pyogrio: Pyogrio is een experimentele benadering die een gevectoriseerde (array-georiënteerde) benadering gebruikt voor het lezen en schrijven van ruimtelijke vectorbestandsformaten. Het maakt intern gebruik van een numpy-georiënteerde aanpak in Cython om informatie over gegevensbronnen en records uit ruimtelijke gegevenslagen te lezen. Deze aanpak maakt snellere I/O-bewerkingen mogelijk, maar is mogelijk minder flexibel dan Fiona vanwege het staatloze karakter, waarbij alle gegevens in één keer worden gelezen of geschreven[1].
2. Ondersteuning van bestandsformaten
- Fiona: Fiona ondersteunt een breed scala aan bestandsindelingen, waaronder ESRI Shapefile, GeoPackage, GeoJSON en vele andere. Het is een I/O-bibliotheek met ruimtelijk formaat voor algemeen gebruik die in veel projecten in het Python-ecosysteem wordt gebruikt[1].- Pyogrio: Pyogrio richt zich specifiek op GeoPandas als een poging om het aantal gegevenstransformaties te verminderen dat nodig is om gegevens te lezen/schrijven tussen GeoPandas GeoDataFrames en ruimtelijke bestandsformaten met behulp van Fiona. Het ondersteunt de formaten GeoJSON, GeoPackage en Shapefile, maar de primaire focus ligt op GeoPandas-georiënteerde I/O-bewerkingen[1][5].
3. Prestaties
- Fiona: Fiona staat bekend om zijn flexibiliteit en robuustheid, maar is mogelijk niet geoptimaliseerd voor prestaties. Het is ontworpen om complexe gegevenstransformaties aan te kunnen en ondersteunt incrementeel schrijven of toevoegen.- Pyogrio: Pyogrio is ontworpen voor snellere I/O-bewerkingen, waarbij gebruik wordt gemaakt van een gevectoriseerde aanpak. Dit kan resulteren in aanzienlijke prestatieverbeteringen vergeleken met Fiona, vooral voor grote datasets[1].
4. Installatie en compatibiliteit
- Fiona: Fiona is overal verkrijgbaar en ondersteunt een breder scala aan platforms, waaronder Windows. Het is standaard opgenomen in GeoPandas en kan worden gebruikt als engine voor het lezen en schrijven van bestanden.- Pyogrio: Pyogrio is beschikbaar op Conda-forge voor Linux en MacOS, maar nog niet op PyPi vanwege de complexiteit van het verpakken van binaire afhankelijkheden voor Windows. Het vereist compatibele versies van GDAL en numpy van Conda-forge voor ruwe I/O-ondersteuning en geopanda's, pygeos en hun afhankelijkheden voor GeoDataFrame I/O-ondersteuning[1].
5. Standaardengine in GeoPandas
- Fiona: Fiona is momenteel de standaardengine die door GeoPandas wordt gebruikt voor het lezen en schrijven van bestanden. GeoPandas 1.0 zal echter overschakelen naar het gebruik van Pyogrio als de standaardengine vanwege het potentieel voor aanzienlijke versnellingen[4].Samenvattend biedt Fiona meer flexibiliteit en controle over de gegevensverwerking, terwijl Pyogrio is geoptimaliseerd voor snellere I/O-bewerkingen. Fiona ondersteunt een breder scala aan bestandsformaten en is breder beschikbaar, maar Pyogrio is specifiek ontworpen voor GeoPandas-georiënteerde I/O-bewerkingen en kan prestatieverbeteringen bieden.
Citaties:[1] https://pypi.org/project/pyogrio/0.2.0/
[2] https://github.com/geopandas/geopandas/issues/2908
[3] https://discourse.pangeo.io/t/geopandas-bbox-and-mask-params-return-empty-dataframe-fiona-pyogrio-for-file-geodatabase/3011
[4] https://geopandas.org/en/stable/docs/reference/api/geopandas.read_file.html
[5] https://github.com/geopandas/pyogrio