Qiitaアドベントカレンダー2024年17日目の記事です。このようなやり方がありなのかは分かりませんが、ArcGIS活用法とFOSS4G (QGIS) の2つに関連する記事として書きました。
目次
はじめに
1999年に登場したArcInfo 8(現在のArcGIS Desktop)で、ジオデータベースとよばれる新しいGISデータ フォーマットが誕生します。ジオデータベースは、スパゲティ モデル、トポロジ モデルに続く、オブジェクト指向モデルを実現するために登場しました(出典:『ModelingOurWorld ジオデータベース設計ガイド』)。
当所は、Access *.mdb形式のファイルにジオデータベースを格納するパーソナル ジオデータベースと、ArcSDEを通じてOracleやSQL Serverのような汎用的なDBMSに格納する方法(現在のエンタープライズ ジオデータベース)がありました。
2007年にリリースされたArcGISバージョン9.2で、新しいタイプのジオデータベースあるファイル ジオデータベースが登場しました。ファイル ジオデータベースは、パーソナル ジオデータベースの欠点であるファイル サイズの上限が格段に引き上げられました(出典1、出典2)。
2015年から、ArcGIS Proが登場し、ArcMapに代わる次世代のデスクトップGISアプリケーションとして機能拡張されてきました。ArcGIS Proはパーソナル ジオデータベースがサポートされておらず、利用できません。EsriのArcGIS Blogでその理由が説明されています。
ArcMapは2026年にサポート終了となります。サポートが終了しても引き続きArcMapを使い続けることはできますが、教育機関など一部のライセンス形態では、サブスクリプション型契約の関係上、ArcMapライセンスが利用できない事態が生じています。このため、過去にパーソナル ジオデータベースとして作成したGISデータの資産が継承できない問題が生じてしまいます。
ArcMapを利用しているうちに、パーソナル ジオデータベースをファイル ジオデータベースなどに移行する必要がありますが、ここでは、ArcMap以外のソフトウェアでパーソナル ジオデータベースを読み込む方法を紹介します。(ちなみに、カバレッジもArcGIS Proでは読み込めませんのでArcMapで救済してください)
パーソナル ジオデータベースを読み込む方法
ArcMapを使わずにパーソナル ジオデータベースのフィーチャクラスを抽出する3つの方法を紹介します。
ArcGIS Data Interoperabilityを使用する
ArcGIS Proのエクステンションとして、ArcGIS Data Interoperabilityがあります。このエクステンションは相互運用性を向上させるためのもので、さまざまなフォーマットを読み込むことができます。サポートされているデータ フォーマットとして、パーソナル ジオデータベース(*.mdb)が記載されており、対応しています。このエクステンションは有償で国内未サポートですが、教育機関向けに発行されるライセンスで利用できます。
バージョン 3.3までは日本語が文字化けしてしまう不具合がありますが、バージョン3.4で修正予定となっています(日本語版は2024年12月に提供開始予定)。
QGISを使う
QGIS 3.x(どのバージョンから対応しているはか不明)も実はパーソナル ジオデータベースが読み込めます。ブラウザパネルからパーソナル ジオデータベース(*.mdb)を展開し、フィーチャクラスをマップキャンバス内にドラッグするとレイヤーとして追加されます。
ただ、残念ながらQGISも属性情報は文字化けするようです。
ちなみに、QGISはファイル ジオデータベース(*.gdb)の読み書きにも対応していますが、こちらはフィーチャクラスの属性値が日本語でも問題なく読み込めました。
ファイル ジオデータベースはEsriからAPIが提供されているので、サードパーティー製品で読み書きできるのはわかるのですが、仕様が公開されていないパーソナル ジオデータベースが読み込めるのはハックしているのでしょうか。中身はAccessのデータベースなので、ジオメトリ列の構造が分かれば利用できそうな気はします。SISもだいぶ以前のバージョンから読み込みに対応しているので気になるところです。GDALも対応しているようです。
テーブル結合で属性情報を救済する
ArcGIS Data Interoperabilityはエクステンション製品なので、通常の使用では別途ライセンスが必要となります。ArcGIS Pro Basicライセンスだけでパーソナル ジオデータベースを救済するには、QGISとハイブリッドで処理します。
まず、先に説明したQGISでパーソナル ジオデータベースのフィーチャクラスを読み込み、エクスポート機能でファイル ジオデータベースのフィーチャクラスなどにエクスポートします。先ほど属性テーブルを開くと文字化けしてしまいます。
属性値は、Access *.mdb形式のテーブルとしてArcGIS Proで開き、OBJECTIDでテーブル結合して復元させる方法が考えられます。QGISでもテーブル結合は可能ですがMDB内のテーブルを文字化けなく抽出できるかどうかは他の方の調査に委ねます、
ArcGIS ProはOLE DB接続が可能なので、Microsoft Access(もしくはMicrosoft Access データベース エンジン 2016 再頒布可能コンポーネント)がインストールされていれば、*.,mdb形式のデータベースにアクセスできます。
ArcGIS Pro → [挿入] タブ → [接続] → [データベース] → [新しい OLE DB 接続] を選びます。
[データ リンク プロパティ] ダイアログで「Microsoft Office 16.0 (12.0) Access Database Engine OLE DB Provider」を選択して [次へ] をクリックし、「データソース」に*.mdbファイルのパスを指定して設定を完了します。
[カタログ] ウィンドウ → [データベース] 内に、「OLE DB Connection.odc」が作成されるので、データベースを展開し、フィーチャクラス名のテーブルを参照します。
OLE DB接続したテーブルの属性値は日本語が文字化けすることなく読み込めます。
これで、QGISから取得したジオメトリと、ArcGIS ProでOLE DB接続して取得した属性値をOBJECTIDフィールドでテーブル結合すればパーソナル ジオデータベースのフィーチャクラスが復元できます。
おわりに
ArcMapライセンスがまだ使用できる方は、ArcMapの [カタログ] ウィンドウやArcCatalogでドラッグ&ドロップすればフィーチャクラスのフォーマット変換は簡単にできます。もし、すでにArcMapが利用できない状況の方は、この記事で説明した方法で救済を試みてください。
なお、ARC/INFOのカバレッジもArcGIS Proでは非対応で、ArcMapでのみ読み込み・変換ができます。ArcMapが使えるうちにお早めに。