Fiona ve Pyogrio, mekansal vektör veri formatlarını okumak ve yazmak için kullanılan kitaplıklardır. Bazı benzerlikleri paylaşsalar da yaklaşımları ve yetenekleri arasında temel farklılıklar vardır:
1. Yaklaşım
- Fiona: Fiona, OGR vektör veri kaynaklarıyla çalışmaya yönelik tam özellikli bir Python kitaplığıdır. Verilerin bir dizi geçişte okunduğu veya yazıldığı, veri işleme üzerinde daha fazla esneklik ve kontrol sağlayan durum bilgisi olan bir yaklaşım kullanır. Bu, onu karmaşık veri dönüştürmeleri ve artımlı yazma veya eklemeler[1] dahil olmak üzere çok çeşitli görevlere uygun hale getirir.- Pyogrio: Pyogrio, uzamsal vektör dosya formatlarını okumak ve yazmak için vektörleştirilmiş (dizi odaklı) bir yaklaşım kullanan deneysel bir yaklaşımdır. Uzamsal veri katmanlarından veri kaynakları ve kayıtlar hakkındaki bilgileri okumak için Cython'da dahili olarak numpy odaklı bir yaklaşım kullanır. Bu yaklaşım, daha hızlı G/Ç işlemlerine olanak tanır ancak tüm verilerin tek geçişte okunduğu veya yazıldığı durum bilgisi olmayan yapısı nedeniyle Fiona'dan daha az esnek olabilir[1].
2. Dosya Formatı Desteği
- Fiona: Fiona, ESRI Shapefile, GeoPackage, GeoJSON ve diğerleri dahil çok çeşitli dosya formatlarını destekler. Python ekosistemindeki[1] birçok projede kullanılan genel amaçlı bir uzamsal format I/O kütüphanesidir.- Pyogrio: Pyogrio, Fiona'yı kullanarak GeoPandas GeoDataFrames ve uzamsal dosya formatları arasında veri okumak/yazmak için gereken veri dönüşümlerinin sayısını azaltmak amacıyla özellikle GeoPandas'ı hedefler. GeoJSON, GeoPackage ve Shapefile formatlarını destekler, ancak asıl odak noktası GeoPandas odaklı G/Ç işlemleridir[1][5].
3. Performans
- Fiona: Fiona, esnekliği ve sağlamlığıyla bilinir ancak performans açısından optimize edilmemiş olabilir. Karmaşık veri dönüşümlerini gerçekleştirmek için tasarlanmıştır ve artımlı yazma veya ekleme işlemlerini destekler.- Pyogrio: Pyogrio, vektörleştirilmiş bir yaklaşımdan yararlanarak daha hızlı G/Ç işlemleri için tasarlanmıştır. Bu, özellikle büyük veri kümeleri için Fiona'ya kıyasla önemli performans iyileştirmeleri sağlayabilir[1].
4. Kurulum ve Uyumluluk
- Fiona: Fiona yaygın olarak mevcuttur ve Windows dahil daha geniş bir platform yelpazesini destekler. Varsayılan olarak GeoPandas'a dahil edilmiştir ve dosyaları okumak ve yazmak için motor olarak kullanılabilir.- Pyogrio: Pyogrio, Linux ve MacOS için Conda-forge'da mevcuttur ancak Windows için ikili bağımlılıkların paketlenmesinin karmaşıklığı nedeniyle henüz PyPi'de mevcut değildir. Ham I/O desteği için Conda-forge'dan GDAL ve numpy'nin uyumlu sürümlerini ve GeoDataFrame I/O desteği için geopandalar, pygeo'lar ve bunların bağımlılıklarını gerektirir[1].
5. GeoPandas'ta Varsayılan Motor
- Fiona: Fiona şu anda GeoPandas tarafından dosyaları okumak ve yazmak için kullanılan varsayılan motordur. Ancak GeoPandas 1.0, önemli hızlanma potansiyeli nedeniyle Pyogrio'yu varsayılan motor olarak kullanmaya geçecek[4].Özetle, Fiona veri işleme üzerinde daha fazla esneklik ve kontrol sunarken, Pyogrio daha hızlı I/O işlemleri için optimize edilmiştir. Fiona daha geniş bir dosya formatı yelpazesini destekler ve daha yaygın olarak bulunur, ancak Pyogrio özellikle GeoPandas odaklı G/Ç işlemleri için tasarlanmıştır ve performans iyileştirmeleri sağlayabilir.
Alıntılar:[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