FionaとPyogrioはどちらも空間ベクトルデータ形式の読み書きに使用されるPythonライブラリですが、ファイル形式のサポート、基礎となる設計、特定の機能が大きく異なります。
Fionaは、OGR Vectorデータソースを操作するための、確立されたフル機能のPythonライブラリです。 Geopackage、ShapeFileなどのさまざまなGIS形式との間で、シンプルな機能データをストリーミングするように設計されています。 Fionaは、多層GIS形式をサポートし、ジップおよびインメモリの仮想ファイルシステムをサポートし、ローカルとクラウドの両方でファイルを処理できます。これは、GDALライブラリとリンクしており、非常に幅広い空間データ形式のサポートを提供します。 FionaはGDALに依存しているため、ファイル形式のサポートは広範であり、ShapeFiles(SHP)、Geojson、Geopackage(GPKG)、KML、GML、MapINFOファイル(タブ)、および多くのXMLベースのベクトル形式など、ほぼすべてのOGRがサポートするベクター形式を処理できます。 Fionaは、Geojsonの仕様に従って3Dジオメトリタイプもサポートしています。ただし、特定のGDALバージョンへの依存関係と、特にGMLなどのオプションの形式ドライバーの互換性のあるバイナリドライバーの必要性により、ユーザーはインストールの複雑さに遭遇する場合があります。必要に応じて、ソースからのインストールでは、事前コンパイルされたバイナリに含まれていない追加の形式のサポートを提供できます。 Fionaは、フォーマットドライバーのエンコード検出に失敗した場合、明示的にエンコードの設定をサポートしています。
対照的に、Pyogrioは、GeodataFramesでのGeopandasのバルクデータ操作のユースケースによく適合するように特別に設計された、空間ベクターデータ形式の迅速な読み取りと書き込みのために最適化された、より新しい、軽量ライブラリです。効率的なデータI/Oのために、Cythonに実装されたバルク指向のNumpyベースのアプローチを使用し、Geometriesをよく知られたバイナリ(WKB)として抽出し、属性をnumpyアレイに抽出します。 Pyogrioは、すべてのデータを一度に読み取りまたは書き込みますが、既存のファイルへのインクリメンタルな書き込みやアプリをサポートすることはありません。これにより、多くのシナリオでのパフォーマンスが大幅に高速になりますが(フィオナよりも5〜20倍高速)、ピオグリオはフィオナと比較してフォーマットサポートの点でより限られた範囲を持っています。通常、ジオパンダのワークフロー、顕著なジオパッケージ、シェイプファイルに関連する最も一般的に使用され、パフォーマンスのあるベクター形式をサポートしますが、OGR形式の全範囲を公開しません。 Pyogrioは、ファイルを作成するためのスキーマパラメーターの指定をサポートしていません。つまり、ユーザーは保存時に属性データ型を明示的に定義できません。また、ジオメトリに関しては特徴的な動作があります。たとえば、空のジオメトリは空の(ポリゴンなど)と書き込みますが、Fionaはこれらを書くときにこれらを非ジオメトリに変換します。
フォーマット処理の実際的な違いには、Multi-Layered Data SourceとZipped Filesを使用するFionaの能力が含まれますが、Pyogrioは簡単な単一層のバルクの読み取り/書き込みにより焦点を合わせています。 Fionaは、スキーマの調整を介して読み取り属性のみのテーブル(ジオメトリなし)をサポートしますが、PyogrioはPandas DataFramesを直接書き込み、スキーマ制御なしでこれを処理できます。 FionaのGDALへの依存は、広範なフォーマットサポートを継承することを意味しますが、インストールの複雑さも継承しますが、Pyogrioは焦点を絞ってステートレスであり、依存関係が少なく、より単純なインストールがありますが、フォーマットの汎用性が低くなります。
したがって、Fionaは、より幅広いファイル形式のサポート、あまり一般的ではない形式や多層データを含むさまざまなGISデータソースの豊富な機能、およびデータスキーマとエンコーディングに対する明示的な制御を提供します。一方、Pyogrioは、一般的なバルクGIS操作のためにGeopandasとの速度と統合を優先し、GeopackageやShapeFileなどの主要なベクトルファイルタイプをサポートしますが、Fionaの幅の形式と機能カバレッジがありません。
この区別には使用法の選択が通知されます。フィオナは、広範な形式の互換性と詳細な制御を必要とする多様で複雑なGISワークフローに最適です。一方、Pyogrioは、ジオパンダ中心のPythonデータ分析Pipelines内の広く使用されている空間ベクトル形式の高性能バッチ処理に最適です。