Fiona і Pyogrio є бібліотеками, які використовуються для читання та запису форматів просторових векторних даних. Хоча вони мають певну схожість, є ключові відмінності в їхніх підходах і можливостях:
1. Підхід
- Fiona: Fiona — це повнофункціональна бібліотека Python для роботи з джерелами векторних даних OGR. Він використовує підхід із збереженням стану, коли дані зчитуються або записуються за кілька проходів, що забезпечує більшу гнучкість і контроль над обробкою даних. Це робить його придатним для широкого кола завдань, включаючи складні перетворення даних і поступовий запис або додавання [1].- Pyogrio: Pyogrio — це експериментальний підхід, який використовує векторизований (орієнтований на масив) підхід для читання та запису просторових векторних форматів файлів. Він внутрішньо використовує орієнтований на numpy підхід у Cython для читання інформації про джерела даних і записи з шарів просторових даних. Цей підхід забезпечує швидші операції введення-виведення, але може бути менш гнучким, ніж Fiona, через його природу без збереження стану, де всі дані зчитуються або записуються за один прохід[1].
2. Підтримка форматів файлів
- Fiona: Fiona підтримує широкий спектр форматів файлів, включаючи ESRI Shapefile, GeoPackage, GeoJSON та багато інших. Це бібліотека введення-виведення просторового формату загального призначення, яка використовується в багатьох проектах екосистеми Python[1].- Pyogrio: Pyogrio спеціально націлений на GeoPandas як спробу зменшити кількість перетворень даних, необхідних для читання/запису даних між GeoPandas GeoDataFrames і форматами просторових файлів за допомогою Fiona. Він підтримує формати GeoJSON, GeoPackage і Shapefile, але в основному він зосереджений на операціях вводу/виводу, орієнтованих на GeoPandas[1][5].
3. Продуктивність
- Fiona: Fiona відома своєю гнучкістю та міцністю, але може бути не оптимізована для продуктивності. Він призначений для обробки складних перетворень даних і підтримує поступовий запис або додавання.- Pyogrio: Pyogrio розроблено для швидших операцій вводу-виводу, використовуючи векторизований підхід. Це може призвести до значного покращення продуктивності порівняно з Fiona, особливо для великих наборів даних[1].
4. Встановлення та сумісність
- Fiona: Fiona широко доступна та підтримує більш широкий спектр платформ, включаючи Windows. Він включений у GeoPandas за замовчуванням і може використовуватися як механізм для читання та запису файлів.- Pyogrio: Pyogrio доступний на Conda-forge для Linux і MacOS, але ще не доступний на PyPi через складність пакування бінарних залежностей для Windows. Для цього потрібні сумісні версії GDAL і numpy від Conda-forge для підтримки необробленого введення-виведення, а також геопанди, pygeos і їхні залежності для підтримки введення-виведення GeoDataFrame[1].
5. Двигун за замовчуванням у GeoPandas
- Fiona: наразі Fiona є механізмом за замовчуванням, який використовується GeoPandas для читання та запису файлів. Однак GeoPandas 1.0 перейде на використання Pyogrio як двигуна за замовчуванням через його потенціал для значного прискорення [4].Таким чином, Fiona пропонує більше гнучкості та контролю над обробкою даних, тоді як Pyogrio оптимізовано для швидших операцій введення-виведення. Fiona підтримує ширший діапазон форматів файлів і є більш доступним, але Pyogrio розроблено спеціально для операцій введення/виведення, орієнтованих на GeoPandas, і може забезпечити покращення продуктивності.
цитати:[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