Google Map上に学校区情報(国土数値情報)を表示する

国土数値情報サイトからダウンロードしたJPGIS形式の情報をKMLに変換して、Google Map上に表示する手順です。

今回使用したのは以下。

国土数値情報 小学校区データ

小学校区のデータをGoogle Map上にインポートします。

WSd000006

手順

1.JPGIS形式のデータをSHAPE形式に変換(初めからSHAPE形式のデータがダウンロードできる場合は要らない)
2.SHAPE形式のデータをKML形式に変換
3.KML形式のデータを整形
4.Google Map上に読み込み

■JPGIS形式のデータをSHAPE形式に変換

国土数値情報データ変換ツール
データ変換ツール(KsjTool)を使って、ダウンロードしたXMLファイルをSHAPE形式に変換します。
WSd000000

■SHAPE形式のデータをKML形式に変換

QGISをインストールします。
起動したら、変換したSHAPE形式のデータファイルの中からshpのファイル(今回はポリゴンデータを使いたいのでSD02.shpを使用します)をドラッグ&ドロップします。
(空間参照系は「WGS 84」を選択)
このまますべてのデータをKMLに変換してもいいのですが、データ量が多すぎるとGoogle Mapに掲載できる制限を超えてしまうので、KMLに変換するデータを絞り込みます。
「レイヤー」→「属性テーブルのオープン」を選択。
今回はINSカラムの値が「高崎」のものだけを選択します。

WSd000001
WSd000003

必要なデータだけが選択された状態になったら、「レイヤー」→「選択部分をベクタファイルとして保存する…」をクリックしKMLファイルとして出力します。
WSd000004

■KML形式のデータを整形

一応、KMLファイルが作成できたのですが、このままでは不要な情報などが多いので整形します。
今回は、Notepad++の正規表現置換を使って手動で書き換えました。
大量に整形が必要な場合は、変換スクリプトを作った方がいいかもしれません。

整形したKMLデータのdiff
左が元データ、右が整形したデータとなります。

■Google Map上に読み込み

KMLファイルの読み込み方法は以下。

example

KMLじゃなくGeoJSONを使う方法もある

QGISでSHAPE形式のデータをコンバートする際にKMLじゃなく、GeoJSONとして出力する方法もあります。
こちらの方がマップをカスタマイズするのが楽かもしれません。
Google Map上にGeoJSONデータを表示する

関連

群馬県の小学校区とボロノイ図を重ね合わせてみた