Fiona og Pyogrio er begge biblioteker, der bruges til at læse og skrive rumlige vektordataformater. Selvom de deler nogle ligheder, er der vigtige forskelle i deres tilgange og muligheder:
1. Tilgang
- Fiona: Fiona er et fuldt udstyret Python-bibliotek til at arbejde med OGR-vektordatakilder. Den bruger en tilstandsfuld tilgang, hvor data læses eller skrives i en række gange, hvilket giver mulighed for mere fleksibilitet og kontrol over databehandlingen. Dette gør den velegnet til en lang række opgaver, herunder komplekse datatransformationer og trinvise skrivninger eller tilføjelser[1].- Pyogrio: Pyogrio er en eksperimentel tilgang, der bruger en vektoriseret (array-orienteret) tilgang til at læse og skrive rumlige vektorfilformater. Det bruger internt en numpy-orienteret tilgang i Cython til at læse information om datakilder og registreringer fra rumlige datalag. Denne tilgang muliggør hurtigere I/O-operationer, men kan være mindre fleksibel end Fiona på grund af dens tilstandsløse natur, hvor alle data læses eller skrives i et enkelt gennemløb[1].
2. Understøttelse af filformat
- Fiona: Fiona understøtter en lang række filformater, inklusive ESRI Shapefile, GeoPackage, GeoJSON og mange andre. Det er et rumligt I/O-bibliotek til generelle formål, der bruges i mange projekter i Python-økosystemet[1].- Pyogrio: Pyogrio retter sig specifikt mod GeoPandas som et forsøg på at reducere antallet af datatransformationer, der kræves for at læse/skrive data mellem GeoPandas GeoDataFrames og rumlige filformater ved hjælp af Fiona. Det understøtter formaterne GeoJSON, GeoPackage og Shapefile, men dets primære fokus er på GeoPandas-orienterede I/O-operationer[1][5].
3. Ydeevne
- Fiona: Fiona er kendt for sin fleksibilitet og robusthed, men er muligvis ikke optimeret til ydeevne. Det er designet til at håndtere komplekse datatransformationer og understøtter trinvise skrivninger eller tilføjelser.- Pyogrio: Pyogrio er designet til hurtigere I/O-operationer ved at udnytte en vektoriseret tilgang. Dette kan resultere i betydelige præstationsforbedringer sammenlignet med Fiona, især for store datasæt[1].
4. Installation og kompatibilitet
- Fiona: Fiona er bredt tilgængelig og understøtter en bredere vifte af platforme, inklusive Windows. Den er inkluderet i GeoPandas som standard og kan bruges som motor til at læse og skrive filer.- Pyogrio: Pyogrio er tilgængelig på Conda-forge til Linux og MacOS, men endnu ikke på PyPi på grund af kompleksiteten af at pakke binære afhængigheder til Windows. Det kræver kompatible versioner af GDAL og numpy fra Conda-forge til rå I/O-understøttelse og geopandas, pygeos og deres afhængigheder for GeoDataFrame I/O-understøttelse[1].
5. Standardmotor i GeoPandas
- Fiona: Fiona er i øjeblikket standardmotoren, der bruges af GeoPandas til at læse og skrive filer. GeoPandas 1.0 vil dog skifte til at bruge Pyogrio som standardmotor på grund af dets potentiale for betydelige speedups[4].Sammenfattende tilbyder Fiona mere fleksibilitet og kontrol over databehandling, mens Pyogrio er optimeret til hurtigere I/O-operationer. Fiona understøtter et bredere udvalg af filformater og er mere tilgængeligt, men Pyogrio er designet specifikt til GeoPandas-orienterede I/O-operationer og kan give ydeevneforbedringer.
Citater:[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