Fiona e Pyogrio são bibliotecas usadas para leitura e gravação de formatos de dados vetoriais espaciais. Embora compartilhem algumas semelhanças, existem diferenças importantes em suas abordagens e capacidades:
1. Abordagem
- Fiona: Fiona é uma biblioteca Python completa para trabalhar com fontes de dados vetoriais OGR. Ele utiliza uma abordagem stateful, onde os dados são lidos ou gravados em uma série de passagens, permitindo maior flexibilidade e controle sobre o processamento dos dados. Isso o torna adequado para uma ampla variedade de tarefas, incluindo transformações complexas de dados e gravações ou acréscimos incrementais[1].- Pyogrio: Pyogrio é uma abordagem experimental que usa uma abordagem vetorizada (orientada a array) para leitura e gravação de formatos de arquivos vetoriais espaciais. Ele usa internamente uma abordagem orientada a numpy no Cython para ler informações sobre fontes de dados e registros de camadas de dados espaciais. Esta abordagem permite operações de E/S mais rápidas, mas pode ser menos flexível que Fiona devido à sua natureza sem estado, onde todos os dados são lidos ou gravados em uma única passagem[1].
2. Suporte ao formato de arquivo
- Fiona: Fiona oferece suporte a uma ampla variedade de formatos de arquivo, incluindo ESRI Shapefile, GeoPackage, GeoJSON e muitos outros. É uma biblioteca de E/S de formato espacial de uso geral usada em muitos projetos no ecossistema Python[1].- Pyogrio: Pyogrio visa especificamente o GeoPandas como uma tentativa de reduzir o número de transformações de dados necessárias para ler/gravar dados entre GeoPandas GeoDataFrames e formatos de arquivos espaciais usando Fiona. Ele suporta os formatos GeoJSON, GeoPackage e Shapefile, mas seu foco principal está nas operações de E/S orientadas ao GeoPandas[1][5].
3. Desempenho
- Fiona: Fiona é conhecida por sua flexibilidade e robustez, mas pode não ser otimizada para desempenho. Ele foi projetado para lidar com transformações de dados complexas e oferece suporte a gravações ou acréscimos incrementais.- Pyogrio: Pyogrio foi projetado para operações de E/S mais rápidas, aproveitando uma abordagem vetorizada. Isso pode resultar em melhorias significativas de desempenho em comparação com Fiona, especialmente para grandes conjuntos de dados[1].
4. Instalação e compatibilidade
- Fiona: Fiona está amplamente disponível e oferece suporte a uma ampla variedade de plataformas, incluindo Windows. Ele está incluído no GeoPandas por padrão e pode ser usado como mecanismo de leitura e gravação de arquivos.- Pyogrio: Pyogrio está disponível no Conda-forge para Linux e MacOS, mas ainda não no PyPi devido à complexidade do empacotamento de dependências binárias para Windows. Requer versões compatíveis de GDAL e numpy do Conda-forge para suporte de E/S bruto e geopandas, pygeos e suas dependências para suporte de E/S GeoDataFrame [1].
5. Mecanismo padrão no GeoPandas
- Fiona: Fiona é atualmente o mecanismo padrão usado pelo GeoPandas para leitura e gravação de arquivos. No entanto, o GeoPandas 1.0 mudará para usar o Pyogrio como mecanismo padrão devido ao seu potencial para acelerações significativas[4].Em resumo, Fiona oferece mais flexibilidade e controle sobre o processamento de dados, enquanto Pyogrio é otimizado para operações de E/S mais rápidas. Fiona suporta uma gama mais ampla de formatos de arquivo e está mais amplamente disponível, mas Pyogrio foi projetado especificamente para operações de E/S orientadas a GeoPandas e pode fornecer melhorias de desempenho.
Citações:[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