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 لدعم الإدخال/الإخراج الأولي وgeopandas و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