File Geodatabase（FGDB）とは？

## はじめに
File Geodatabase（FGDB）は、Esri社が開発した地理空間データベースの形式です。拡張子.gdbで定義され、ArcGIS製品を中心に広く利用されています。高性能、スケーラブル、そして柔軟なデータ管理を可能にし、GISプロフェッショナルにとって重要な選択肢となっています。FGDBは、空間データと非空間データの両方を効率的に保存、クエリ、管理することができる、ファイルベースのデータベース形式です。
GIS業界で広くEsri社のプロダクトが使われていることもあり、ジオデータベース、FGDBという言葉自体が一般用語として利用されるケースは多いです。

>以下解説は著者個人の調査によるものですので、公式情報についてはESRI社の情報をご確認ください。また、当方が調べきれていない情報などのフィードバックがいただけますと大変ありがたいです。

## FGDBの特徴

### 1. 基本構造

FGDBは、フォルダ内にファイルとして保存されるデータベース形式で、システムテーブルとユーザーデータで構成されています。以下は、ユーザーデータとして格納可能なデータセットの種類です：
- フィーチャクラス（Feature Class）: 空間データを格納する最も基本的な形式。
- フィーチャデータセット（Feature Dataset）: 関連する複数のフィーチャクラスをまとめるコンテナ。
- モザイクデータセット（Mosaic Dataset）: ラスター画像を効率的に管理。
- ラスター データセット（Raster Dataset）: 個別のラスターイメージを格納。
- テーブル（Table）: 空間データを含まない属性データを格納。
- スキーマティックデータセット（Schematic Dataset）: スキーマティックマッピング用（ArcGIS Schematics拡張が必要）。

フィーチャデータセットには、さらに以下の高度なデータ構造を含むことができます：
- ジオメトリネットワーク（Geometric Networks）: 配管や電力網などを表現。
- ネットワークデータセット（Network Datasets）: ArcGIS Network Analyst拡張で利用可能。
- パーセルファブリック（Parcel Fabrics）: 土地の区画や境界を管理。
- 地形データセット（Terrains）: ArcGIS 3D Analyst拡張で使用。
- トポロジー（Topologies）: データの整合性を確保する空間ルール。

### 2. 圧縮形式と非圧縮形式

FGDBは、非圧縮形式と圧縮形式（Compressed Data Format: CDF）の両方をサポートします。
- 非圧縮形式: OSSツール（例: QGIS、GDAL）で直接利用可能。
- 圧縮形式: Esriの独自技術を使用しており、OSSで扱うには追加の設定が必要になる場合があります。詳細は使用環境に依存します。

### 3. スケーラビリティとデータサイズ
- デフォルトのサイズ制限: 各データセットは最大1TB。
- サイズの拡張: 設定キーワードを使用して、最大256TBまで拡張可能。

### 4. マルチユーザーアクセス

FGDBは複数ユーザーによる同時アクセスをサポートします。ただし、編集を行う場合、異なるデータセットを操作する必要があり、これによりデータの整合性が保たれます。

## ケーススタディ

事例として、私の利用環境（macOS Apple Silicon）＆QGISにおいての実例と課題を紹介したいと思います。

まず、FGDB形式のオープンデータを表示してみました。
利用データ：3D都市モデル（Project PLATEAU）東京都23区
[こちら](https://www.geospatial.jp/ckan/dataset/plateau-tokyo23ku)のPageよりFGDB形式で提供されるデータをダウンロードします。（約4.5GB 7z）

QGISを開き以下の流れでデータを表示できます。
レイヤ>レイヤを追加>ベクタレイヤーを追加
ソース型をディレクトリを指定した上で、型をOpenFileGDBとします。
ベクターデータセットより該当のディレクトリ（.gdbで終わる)を指定するとレイヤとして追加されます。

![Screenshot 2025-01-15 at 17.19.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3789281/de17ae01-7144-e678-d554-300db02e61f0.png)

通常、このように.gdbディレクトリ以下に格納されたデータがGDAL経由で読み込まれQGISを使って利用することが可能です。

### 課題の補足
基本的にはここまでで問題ないかと思いますが、私がMacユーザーでたまたま直面したケースも参考に紹介します。
FGDBではデータデリバリーやストレージサイズの関係から圧縮形式がサポートされています。[参考](https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/compress-file-geodatabase-data.htm)
.gdbディレクトリ内に、.cdfという形式のファイルが配置されます。もしデリバリーされた（ダウンロードした）データがこの圧縮形式の場合、QGISデフォルトのGDAL環境では圧縮ファイルを直接読み込めないようでした。

この条件について調べたところ、以下のようなことがわかりました。
- QGISで利用するため、GDAL環境に[file-geodatabase-api](https://github.com/Esri/file-geodatabase-api?tab=readme-ov-file)の統合が必要
- Armアーキテクチャのマシンに対応したものは提供されていない様子

よって、私と同じような環境であったり、これらの環境構築が不慣れな場合は、まずは
	1.	非圧縮形式のFGDBの活用
        非圧縮形式を依頼することで、OSSツールを使用した作業が可能です。
	2.	Esri製品の活用
        圧縮形式の利用が必要な場合、Esri製品（例: ArcGIS Pro）の使用が推奨されます。

のいずれかのアプローチを検討するのが良いかと思います。

もちろん、仮想環境などを利用して、GDAL環境を構築し、ご利用の環境で表示させるということも可能かもしれませんが、ある程度の知識と環境構築作業が必要になる点ご注意ください。

> GDAL環境の再構築には、File Geodatabase APIを正しく設定し、GDALをC++環境でビルドする必要があります。ただし、これには技術的な知識が求められるため、別途詳細なガイドが必要になります。
仮想環境やエミュレーションを利用する場合も、該当の環境を構築する手順に応じた準備が必要です。また、著者の環境ではこちらを実際には試せておりませんので、ESRI社のライセンスや利用条件については公式ドキュメント等をご確認の上実施ください。

## さいごに
この記事では、File Geodatabase（FGDB）の基本情報（と圧縮形式についての補足）を紹介しました。FGDB自体は一般的に利用されているものではありますが、圧縮形式の課題などESRI社やOSSのサポートに依存する部分もあります。データを効率的に利用するためには、環境に応じた適切な設定やツールの選択を事前に検討する必要があるかと思います。

この記事が位置情報データ活用のご参考になれば幸いです！