Fiona i Pyogrio to biblioteki używane do odczytu i zapisu formatów przestrzennych danych wektorowych. Chociaż mają pewne podobieństwa, istnieją kluczowe różnice w ich podejściach i możliwościach:
1. Podejście
- Fiona: Fiona to w pełni funkcjonalna biblioteka Pythona do pracy ze źródłami danych wektorowych OGR. Wykorzystuje podejście stanowe, w którym dane są odczytywane lub zapisywane w serii przebiegów, co pozwala na większą elastyczność i kontrolę nad przetwarzaniem danych. Dzięki temu nadaje się do szerokiego zakresu zadań, w tym złożonych transformacji danych i przyrostowego zapisu lub dołączania[1].- Pyogrio: Pyogrio to podejście eksperymentalne, które wykorzystuje wektoryzację (zorientowaną na tablicę) do odczytu i zapisu przestrzennych formatów plików wektorowych. Wewnętrznie wykorzystuje podejście zorientowane na numpy w Cythonie do odczytywania informacji o źródłach danych i rekordach z warstw danych przestrzennych. Takie podejście umożliwia szybsze operacje we/wy, ale może być mniej elastyczne niż Fiona ze względu na jego bezstanowy charakter, gdzie wszystkie dane są odczytywane lub zapisywane w jednym przebiegu[1].
2. Obsługa formatów plików
- Fiona: Fiona obsługuje szeroką gamę formatów plików, w tym ESRI Shapefile, GeoPackage, GeoJSON i wiele innych. Jest to biblioteka we/wy ogólnego przeznaczenia w formacie przestrzennym, używana w wielu projektach w ekosystemie Pythona[1].- Pyogrio: Pyogrio jest specjalnie ukierunkowany na GeoPandas jako próbę zmniejszenia liczby transformacji danych wymaganych do odczytu/zapisu danych pomiędzy GeoPandas GeoDataFrames a formatami plików przestrzennych przy użyciu Fiony. Obsługuje formaty GeoJSON, GeoPackage i Shapefile, ale jego głównym celem są operacje we/wy zorientowane na GeoPandas[1] [5].
3. Wydajność
- Fiona: Fiona jest znana ze swojej elastyczności i solidności, ale może nie być zoptymalizowana pod kątem wydajności. Został zaprojektowany do obsługi złożonych transformacji danych i obsługuje przyrostowe zapisy lub dołączenia.- Pyogrio: Pyogrio zaprojektowano z myślą o szybszych operacjach we/wy, wykorzystując podejście wektorowe. Może to skutkować znaczną poprawą wydajności w porównaniu z Fioną, szczególnie w przypadku dużych zbiorów danych[1].
4. Instalacja i kompatybilność
- Fiona: Fiona jest powszechnie dostępna i obsługuje szerszą gamę platform, w tym Windows. Jest domyślnie zawarty w GeoPandas i może być używany jako silnik do odczytu i zapisu plików.- Pyogrio: Pyogrio jest dostępne na Conda-forge dla Linuksa i MacOS, ale jeszcze nie na PyPi ze względu na złożoność pakowania zależności binarnych dla Windows. Wymaga kompatybilnych wersji GDAL i numpy z Conda-forge do obsługi surowych operacji we/wy oraz geopand, pygeos i ich zależności do obsługi operacji we/wy GeoDataFrame[1].
5. Domyślny silnik w GeoPandas
- Fiona: Fiona jest obecnie domyślnym silnikiem używanym przez GeoPandas do odczytu i zapisu plików. Jednak GeoPandas 1.0 przełączy się na Pyogrio jako domyślny silnik ze względu na jego potencjał znacznego przyspieszenia [4].Podsumowując, Fiona oferuje większą elastyczność i kontrolę nad przetwarzaniem danych, podczas gdy Pyogrio jest zoptymalizowany pod kątem szybszych operacji we/wy. Fiona obsługuje szerszą gamę formatów plików i jest szerzej dostępna, ale Pyogrio został zaprojektowany specjalnie dla operacji we/wy zorientowanych na GeoPandas i może zapewnić poprawę wydajności.
Cytaty:[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