今回は緯度経度をもつデータをプロットするための「日本の白地図」を作成します。以下のように都道府県の境界が「ない」シンプルな白地図です。

Japan Map
「国土数値情報(行政区域データ)(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_2.html)をもとにガンマソフト株式会社作成

元データには国土交通省が公開している「行政区域データ 」を利用し、地図データとして汎用性の高い「シェープファイル(Shapefile)」の形式で作成します。

インターネットで公開されている白地図をそのまま利用する方法もありますが、業務でも使えるようにライセンスが明確な行政区域データから自分で作成します。

行政区域データは、市区町村のポリゴンデータなので、すべて融合させることで白地図を作成します。作業には、オープンソースの人気GISソフト「QGIS 」を利用します。

今回の方法は少し手間と時間がかかりますが、日本白地図のシェープファイルを1つ作成しておけば、PythonRで日本全国に分布するデータをいつでも白地図にプロットできます。ぜひデータ分析のお役に立てればと思います。

本記事の目次

元データに利用する行政区域データ

行政区域データは、国土交通省が提供している行政区域のポリゴンとその属性データです。国土に関する基礎的な空間情報の1つとして国土数値情報ダウンロードサイト で公開されています。

行政区域データは「国土数値情報(行政区域) 製品仕様書」に基づき作成されており、製品仕様書の版(バージョン)ごとにデータが公開されています。それぞれの「利用規約」と「データの使用許諾条件」も以下のように版ごとに異なります。

行政区域データのダウンロードページ(製品仕様書の版ごと)
行政区域データ 利用規約 データの使用許諾条件
製品仕様書第1.0版 旧国土情報利用約款準拠版 非商用
製品仕様書第2.2版 商用可
製品仕様書第2.3版 政府標準利用規約準拠版 平成30年度以降:適用する利用規約に基づく(オープンデータ)
上記以外:商用可
製品仕様書第2.4版
製品仕様書第3.0版
製品仕様書第3.1版 平成30年以降:適用する利用規約に基づく(オープンデータ)
上記以外:商用可
※本データを二次利用する場合には、国土地理院に申請等必要な場合があります。

今回はこの中から「製品仕様書第2.2版」のデータを利用します。

版2.2の利用規約(「旧国土情報利用約款準拠版」)では以下のように「商用可」に関するライセンス表示が、わかりやすく明記されているので、業務で利用しても安心できるように版2.2を利用することとしました。

Data Terms

国土数値情報ダウンロードサイトコンテンツ利用規約 を2023.08.26にキャプチャ)

行政区域データの製品仕様書の改訂履歴

上記の製品仕様書の版の違いは、以下の改訂履歴をみるとわかります。おもに形式や座標系の変更に伴い改訂されています。

schema history

国土数値情報(行政区域) 製品仕様書 第3.1版 より抜粋)

注意事項

本記事の内容はあくまでも弊社の解釈です。実際に「行政区域データ」を加工して商用利用される際は、ご自分で判断した上で自己責任でお願いします。また、出典を明記するなどデータの利用規約に従って利用してくだだい。

行政区域データのダウンロード

上記の行政区域データ 製品仕様書第2.2版のデータを以下のページからダウンロードします。

行政区域データ 製品仕様書第2.2版

以下のようにページの最下部に「全国」のデータがあります。今回はその中から「平成26年(2014年)」のデータを利用します。

新しいデータほど市区町村の統廃合などが反映されていますが、今回必要なのは海岸線のデータなので、最もサイズの小さい「平成26年」を利用することとしました。

Data Download

上記のボタンをクリックすると「GISホームページ利用者アンケート」という画面が表示されるので、適宜回答して「ダウンロードへ進む」ボタンをクリックするとダウンロードが開始されます。

N03-140401_GML.zipというファイルがダウンロードされるので、解凍して適当なフォルダに保存しておきます。

白地図の作成作業(QGIS)

QGISを用いて以下の手順で作業して、白地図のシェープファイルを作成します。なお、本記事では「QGIS 3.28(LTR)のmacOS版」を使用しています。

  1. 行政区域データをレイヤに追加
  2. ポリゴンの融合(dissolve)
  3. データの簡略化(ジオメトリの簡素化)
  4. クリーニング(孔を削除)
  5. シェープファイル形式で保存(エクスポート)

1. 行政区域データをレイヤに追加

QGISを起動し、レイヤ ▶ レイヤを追加 ▶ ベクタレイヤを追加 を選択すると以下の画面が表示されます。

Add Vector

上記の[…]ボタンをクリックすると、以下の画面が表示されるので、先ほどダウンロードした行政区域データの解凍先フォルダにあるN03-14_140401.shpを選択して開くをクリックします。

Add Vecotr Select File

すると以下のように[ベクタデータセット]の欄に行政区域データのshpファイルのパスが入力されるので、[追加]ボタンをクリックします。

Vector Layer Add Button

以下のように行政区域データが表示されるので、上記の画面は[Close]をクリックして閉じます。

Add Vector Layer

2. ポリゴンの融合(dissolve)

上記の行政区域データは、行政界で区切られたポリゴンの集まりです。これらのポリゴンをすべて融合(dissolve)すると日本白地図が作成できます。

メニューで、ベクタ ▶ 空間演算ツール ▶ 融合(dissolve) を選択すると以下の画面が表示されるので、[入力レイヤ]に上記で追加した行政区域データのベクタレイヤが指定されているのを確認して、[実行]ボタンをクリックします。

polygon dissolve

しばらく待つと(当方の環境では約8分かかりました)以下のように、あたらしく「融合ポリゴンの出力」というレイヤが追加されます。このレイヤが行政区域をすべて融合した結果です。上記の画面は[Close]をクリックして閉じます。

dissolve after

3. データの簡略化(ジオメトリの簡素化)

これで日本白地図が作成できましたが、このままシェープファイルに保存すると約60MBもあるので、データを簡略化してサイズを小さくします。

メニューで、ベクタ ▶ ジオメトリツール ▶ ジオメトリを簡素化(dissolve) を選択すると以下の画面が表示されるので、[入力レイヤ]で「融合ポリゴンの出力」を選択し、[許容範囲]に「0.01」を入力したら、[実行]ボタンをクリックします。

Geometry Simplify

少し待つと(当方の環境では約10秒かかりました)、あたらしく「出力レイヤ」というレイヤが追加されます。拡大してみると海岸線が簡略化されたのが確認できます。

Simlified Layer

もっと簡略化してファイルサイズを小さくしたい場合は、許容範囲を「0.1」のように大きくします。一方、「0.001」のように小さくすれば、「0.01」よりは簡略化されず、ファイルサイズは大きくなります。

4. クリーニング(孔を削除)

これでほとんどできあがりましたが、拡大してみると所々に以下のように線などが残ってしまっているのがわかります。最後にこれらを削除します。

Remaining Geometry

メニューで、プロセッシング ▶ ツールボックス を選択すると、以下のウィンドウが表示されるので、[ベクタジオメトリ]を展開して、その中にある[孔を削除]をダブルクリックします。

Proseccing toolbox

以下の画面が表示されるので、[入力レイヤ]で「出力レイヤ」を選択して、[実行]ボタンをクリックします。

cleansing

実行は数秒で完了します。以下のように「クリーニング済み出力レイヤ」が追加され、残っていた図形がきれいに削除されているのが確認できます。上記の画面は[Close]をクリックして閉じます。

Cleansing After

5. シェープファイル形式で保存(エクスポート)

これで白地図が作成できたのでシェープファイルで保存します。

以下のように「クリーニング済み出力レイヤ」で右クリックして、メニューから[エクスポート]▶[新規ファイルに地物を保存]を選択します。

Export Shp File

すると以下の画面が表示されるので、まず①出力ファイル名を指定します。次に今回の属性は日本一つだけなので、②[すべての選択を解除]をクリックして、すべてのフィールドのチェックを解除して属性を書き込まないようにします。最後に③[OK]ボタンをクリックします。

出力ファイル名を指定するときは、①のところの[…]ボタンをクリックして、以下のような画面で入力します。ここで、シェープファイルは*.shpの他に*.dbf*.prjなどの複数のファイルが一緒に保存されるので、空のフォルダに指定するようにしてください。

cleansing

③の[OK]ボタンをクリックして、少し待つと(当方の環境では約3分かかりました)以下のように「〜保存しました」というメッセージが表示されます。

shp files saved

フォルダを確認すると、以下のように*.shpを含めて6つのファイルが作成されています。shpファイルは、簡素化したので約6MBと扱いやすいサイズになっています。

shp files

これで無事に作業が完了したので、QGISを閉じて終了します。今回は目的の白地図の作成が終了したので、プロジェクトの保存はしません(もちろん保存しておいても構いません)。

今回は[座標参照系(CRS)]は元データと同じ「JGD2000(EPSG:4612)」のままにしていますが、目的に応じて適宜変更することもできます。

Python(GeoPandas)で描いてみる

次にPythonで今回作成したシェープファイルを読み込んで、日本白地図を描けるか確認します。

Pythonでシェープファイルを読み込む方法はいくつかありますが、今回は緯度経度をもつデータを分析するのに便利な「GeoPandas 」を利用します。

PythonはJupyter notebookで実行します。matplotlibなどのデータサイエンスで必須のライブラリとGeoPandasはインストール済みとします。GeoPandasは以下のコマンドでpipによりインストールできます。

pip install geopandas

コードは以下の3行です。GeoPandasのread_file()関数でshpファイルを読み込み、その結果をplot()関数でグラフ表示します。

import geopandas as gpd
japan = gpd.read_file("JapanBlunkMap/shp/japan.shp") # ここでshpファイルのパスを指定する
japan.plot(figsize=(12,12), color='whitesmoke', edgecolor='black')

実行すると以下のように日本の白地図が無事に描けたのを確認できます。あとはこの白地図にデータをプロットするだけです。

GeoPandas Japan map
「国土数値情報(行政区域データ)(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_2.html)をもとにガンマソフト株式会社作成

最後に

データ分析では今回のような下準備に本当に時間がかかります。本記事が少しでも時間節約のお役に立てれば嬉しいです。

近年、マーケティング、農業、自動運転、防災、ドローン、気候などの分野で、地理情報システム(GIS)を活用するケースが増えてきましたが、GISが普及してきた要因の1つが今回利用した「QGIS」だと思います。

以前GISはとても高価であり、高スペックのコンピュータが必要であったので、ハードルが高いシステムでしたが、コンピュータの性能向上に加え、無償のQGISに登場により、とても身近になりました。今回のような処理を簡単にできるようになったのもQGISのおかげです。

QGISは奥が深く、まだまだたくさんの機能があります。これからQGISをはじめてみたい方には、以下の書籍がおすすめです。説明が丁寧で初心者でもわかりやすい入門書です。