Labo288

プログラミングのこと、GISのこと、パソコンのこと、趣味のこと

基盤地図情報の水域や道路界等のXMLデータをひとつのベクターデータにする手順

はじめに

fgd.gsi.go.jp

国土地理院は、日本の国土に関する様々なベクターデータをオープンデータとして提供しています。 当然、オープンデータとはいえ出典の明記等の制約はありますが、それなりに自由に使えます。

ところが、提供されているファイル形式がJPGIS (GML)という、正直聴き馴染みのない、また使い馴染みのない形式です。 さらに悪い事に、データはメッシュ単位でのみ提供されています。まあこの点については、都道府県単位とかだとファイルサイズが大きすぎて止むを得ない感はあります…。

しかしながら提供されているデータは、水域、道路境界、はたまた建物ポリゴンや等高線など、非常に有用なデータです。 という訳で、マイナー形式でかつメッシュ単位に細かく区切られた基盤地図情報データを、①馴染みのある形式に変換して、②地物ごとに結合して、活用しやすくしてみましょう。

事前準備

基盤地図情報のダウンロード

f:id:kiguchi999:20191207165712p:plain

「基本項目」からファイル選択へ

f:id:kiguchi999:20191207165856p:plain

欲しいエリアを全て選択した上で、左下の「ダウンロードファイル確認へ」

f:id:kiguchi999:20191207165529p:plain

全てにチェックを入れて「まとめてダウンロード」

f:id:kiguchi999:20191207165543p:plain

ダウンロードしたファイルを展開すると、メッシュ単位で圧縮ファイルが得られます。

f:id:kiguchi999:20191207165620p:plain

メッシュ単位の圧縮ファイルを展開すると、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系のみのはず)。

f:id:kiguchi999:20191207165629p:plain

なのでGeoJSONでもシェープファイルでも、QGISで煮るなり焼くなり好きに出来ますね。

②地物ごとに結合

ここから先は、水域データの作成を例として解説します。

全メッシュ分の水域データ(WA)をQGISに追加

f:id:kiguchi999:20191207172221p:plain

f:id:kiguchi999:20191207172253p:plain

「ベクタ」ー「データ管理ツール」ー「ベクタレイヤの結合」で結合します

f:id:kiguchi999:20191207172308p:plain

f:id:kiguchi999:20191207172429p:plain

f:id:kiguchi999:20191207172439p:plain

f:id:kiguchi999:20191207172450p:plain

注意点①

ここで、地物を拡大表示すると、どうみても一つの水域なのに地物としては分かれてしまっています。

f:id:kiguchi999:20191207172848p:plain

これはひとつのメッシュのXMLデータ内でもさらに細かい(大体1キロくらいの)メッシュ単位のデータになっているからです。 これでは不便なので結合します。

接する地物同士を結合する

「ベクタ」ー「空間演算ツール」ー「ディゾルブ」で、接する地物同士を結合する

f:id:kiguchi999:20191207172942p:plain

f:id:kiguchi999:20191207173054p:plain

注意点②

ディゾルブしたベクタレイヤの地物を選択すると、何やら全ての地物を一括で選択してしまいます。

f:id:kiguchi999:20191207173121p:plain

レイヤー情報を確認してみると、地物の数が1つになってしまっています。

f:id:kiguchi999:20191207173139p:plain

これでは不便なので、バラバラの地物として扱えるよう処理します。

マルチパートをシングルパートにする

「ベクタ」ー「ジオメトリツール」ー「マルチパートをシングルパートに」

f:id:kiguchi999:20191207173422p:plain

f:id:kiguchi999:20191207173439p:plain

f:id:kiguchi999:20191207173447p:plain

以上で完成です。 なお本手順により、当初は地物ごとに持っていた属性が失われています。 重要な属性は含まれていないはずですが、うまいこと復元する方法も記事にしたいです。