基盤地図情報の水域や道路界等のXMLデータをひとつのベクターデータにする手順
はじめに
国土地理院は、日本の国土に関する様々なベクターデータをオープンデータとして提供しています。 当然、オープンデータとはいえ出典の明記等の制約はありますが、それなりに自由に使えます。
ところが、提供されているファイル形式がJPGIS (GML)という、正直聴き馴染みのない、また使い馴染みのない形式です。 さらに悪い事に、データはメッシュ単位でのみ提供されています。まあこの点については、都道府県単位とかだとファイルサイズが大きすぎて止むを得ない感はあります…。
しかしながら提供されているデータは、水域、道路境界、はたまた建物ポリゴンや等高線など、非常に有用なデータです。 という訳で、マイナー形式でかつメッシュ単位に細かく区切られた基盤地図情報データを、①馴染みのある形式に変換して、②地物ごとに結合して、活用しやすくしてみましょう。
事前準備
基盤地図情報のダウンロード
「基本項目」からファイル選択へ
欲しいエリアを全て選択した上で、左下の「ダウンロードファイル確認へ」
全てにチェックを入れて「まとめてダウンロード」
ダウンロードしたファイルを展開すると、メッシュ単位で圧縮ファイルが得られます。
メッシュ単位の圧縮ファイルを展開すると、15項目分の.xmlファイルが得られます。
15の基本項目について
上記の.xmlファイルのファイル名を見ると、メッシュ番号のあとにAdmAreaなどの15種類の文字列が含まれている事がわかります。 ファイル名とデータの組み合わせは以下のとおりです。
ファイル名 | データの種類 | ジオメトリ |
---|---|---|
AdmArea | 行政区域 | Polygon |
AdmBdry | 行政界 | Polyline |
AdmPt | 行政点 | Point |
BldA | 建物エリア | Polygon |
BldL | 建物境界 | Polyline |
Cntr | 等高線 | Polyline |
CommBdry | 町字界線 | Polyline |
ElevPT | 標高点 | Point |
GCP | 基準点 | Point |
RailCL | 軌道の中心線(ロープウェイなど) | Polyline |
RdCompt | 道路構成線 | Polyline |
RdEdg | 道路縁 | Polyline |
WA | 水域 | Polygon |
WL | 水涯線 | Polyline |
WStrL | 水部構造物線 | Polyline |
①馴染みのある形式に変換
基盤地図情報はマイナーな形式ゆえ、専用のビューアが用意されています。 がしかし、JPGIS形式はなんとQGISで読み込めます(3.x系のみのはず)。
なのでGeoJSONでもシェープファイルでも、QGISで煮るなり焼くなり好きに出来ますね。
②地物ごとに結合
ここから先は、水域データの作成を例として解説します。
全メッシュ分の水域データ(WA)をQGISに追加
「ベクタ」ー「データ管理ツール」ー「ベクタレイヤの結合」で結合します
注意点①
ここで、地物を拡大表示すると、どうみても一つの水域なのに地物としては分かれてしまっています。
これはひとつのメッシュのXMLデータ内でもさらに細かい(大体1キロくらいの)メッシュ単位のデータになっているからです。 これでは不便なので結合します。
接する地物同士を結合する
「ベクタ」ー「空間演算ツール」ー「ディゾルブ」で、接する地物同士を結合する
注意点②
ディゾルブしたベクタレイヤの地物を選択すると、何やら全ての地物を一括で選択してしまいます。
レイヤー情報を確認してみると、地物の数が1つになってしまっています。
これでは不便なので、バラバラの地物として扱えるよう処理します。
マルチパートをシングルパートにする
「ベクタ」ー「ジオメトリツール」ー「マルチパートをシングルパートに」
以上で完成です。 なお本手順により、当初は地物ごとに持っていた属性が失われています。 重要な属性は含まれていないはずですが、うまいこと復元する方法も記事にしたいです。