Fiona och Pyogrio är båda bibliotek som används för att läsa och skriva rumsliga vektordataformat. Även om de delar vissa likheter, finns det viktiga skillnader i deras tillvägagångssätt och förmågor:
1. Tillvägagångssätt
- Fiona: Fiona är ett fullfjädrat Python-bibliotek för att arbeta med OGR-vektordatakällor. Den använder ett tillståndsfullt tillvägagångssätt, där data läses eller skrivs i en serie omgångar, vilket möjliggör mer flexibilitet och kontroll över databehandlingen. Detta gör den lämplig för ett brett utbud av uppgifter, inklusive komplexa datatransformationer och inkrementella skrivningar eller tillägg[1].- Pyogrio: Pyogrio är ett experimentellt tillvägagångssätt som använder ett vektoriserat (array-orienterat) tillvägagångssätt för att läsa och skriva rumsliga vektorfilformat. Den använder internt ett numpy-orienterat tillvägagångssätt i Cython för att läsa information om datakällor och poster från rumsliga datalager. Detta tillvägagångssätt möjliggör snabbare I/O-operationer men kan vara mindre flexibel än Fiona på grund av dess tillståndslösa karaktär, där all data läses eller skrivs i ett enda pass[1].
2. Stöd för filformat
- Fiona: Fiona stöder ett brett utbud av filformat, inklusive ESRI Shapefile, GeoPackage, GeoJSON och många andra. Det är ett allmänt ändamål I/O-bibliotek i rumsligt format som används inom många projekt i Python-ekosystemet[1].- Pyogrio: Pyogrio riktar sig specifikt till GeoPandas som ett försök att minska antalet datatransformationer som krävs för att läsa/skriva data mellan GeoPandas GeoDataFrames och rumsliga filformat med Fiona. Det stöder formaten GeoJSON, GeoPackage och Shapefile, men dess primära fokus ligger på GeoPandas-orienterade I/O-operationer[1][5].
3. Prestanda
- Fiona: Fiona är känt för sin flexibilitet och robusthet men kanske inte är optimerad för prestanda. Den är utformad för att hantera komplexa datatransformationer och stöder inkrementella skrivningar eller tillägg.- Pyogrio: Pyogrio är designad för snabbare I/O-operationer, med ett vektoriserat tillvägagångssätt. Detta kan resultera i betydande prestandaförbättringar jämfört med Fiona, särskilt för stora datamängder[1].
4. Installation och kompatibilitet
- Fiona: Fiona är allmänt tillgänglig och stöder ett bredare utbud av plattformar, inklusive Windows. Den ingår som standard i GeoPandas och kan användas som motor för att läsa och skriva filer.- Pyogrio: Pyogrio är tillgänglig på Conda-forge för Linux och MacOS men ännu inte på PyPi på grund av komplexiteten i att paketera binära beroenden för Windows. Det kräver kompatibla versioner av GDAL och numpy från Conda-forge för obearbetat I/O-stöd och geopandas, pygeos och deras beroenden för GeoDataFrame I/O-stöd[1].
5. Standardmotor i GeoPandas
- Fiona: Fiona är för närvarande standardmotorn som används av GeoPandas för att läsa och skriva filer. GeoPandas 1.0 kommer dock att byta till att använda Pyogrio som standardmotor på grund av dess potential för betydande hastigheter[4].Sammanfattningsvis erbjuder Fiona mer flexibilitet och kontroll över databehandling, medan Pyogrio är optimerat för snabbare I/O-operationer. Fiona stöder ett bredare utbud av filformat och är mer allmänt tillgängligt, men Pyogrio är designat specifikt för GeoPandas-orienterade I/O-operationer och kan ge prestandaförbättringar.
Citat:[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