市町村の緯度経度データ(複数のPDFファイルからデータ抽出)
この記事で説明すること
国土地理院で都道府県別に提供されている市町村庁舎の緯度経度情報はPDFになっています。
EXCELのPowerQueryを使って、都道府県別の47個のPDFから市町村庁舎のデータを抜き出し、全国のデータとして一つに結合したEXCELテーブルを作成しました。
プログラムを書かなくてもEXCELがあれば複数ファイルからのデータ抽出&結合ができるので、手軽な方法&応用の利く方法として紹介します。
データの目的
市町村別人口色別地図で市町村にマーカーを付けるとき、マーカーの場所(緯度、経度)を決める方法として
- 市町村の重心にする : 地理的(図形的)な中心部にマークされる
- 市町村庁舎の場所にする : 地理的な中心ではない端の位置につく場合がある
が考えらえます。
重心を計算するためには、市町村の外周(ポリゴン)データが必要で、国土地理院から入手できるようですが、データが大量になるし計算も面倒そうなので、安易に2の方法を選択しました。
2を実現するためには、市町村庁舎の緯度経度情報が必要です。
ネット上にはいくつかデータが提供されているようですが、なるべく公的なデータを使いたいので、国土地理院のデータを使うことにしました。
利用したデータ
の中の「都道府県及び市区町村の東西南北端点の経度緯度」のデータを使用します。
都道府県別にPDFファイルが提供され、PDFの中には県、市町村別に表が記載されています。
参考:
国交省のGISホームページの「国土数値情報 | 市町村役場等及び公的集会施設データ」には、市庁舎だけでなく支所など位置などの詳細なデータも存在します。
加工方法
以下のような簡単な手順で作成できます。
- PDFのダウンロード
47個のPDFファイルを一つのフォルダーにダウンロードします。 - EXCELを起動し、PowerQueryで47ファイルからデータを抽出
EXCELのPowerQueryではフォルダ内の複数ファイルをまとめて取り込んで加工する機能があります。
2の詳細手順
事前確認(準備)
EXCEL 2016以降のバージョンはPowerQueryが最初から利用可能ですが、EXCEL2013ではPowerPivotアドインのインストールが必要です。
1)フォルダーを指定して全ファイルの読み込み
上図のデータメニューの一番下にある「フォルダーから(F)」を選択
フォルダ選択ウィンドウが表示されるので、PDFをダウンロードしたフォルダを選択する
2)フォルダのファイル一覧が表示されるので「結合」->「データの結合と変換」を選択
3)サンプルファイルとテーブルを選択
次以降のステップで複数ファイルを結合するための手順を決めていく。
そのためのサンプルファイルとテーブルを選択する
4)PowerQueryが起動されるので、テーブルデータ抽出&ファイル結合をする
下図のようにフォルダー名が付いたクエリが表示されている画面が表示されます。
この画面で、PDFの中の複数テーブルからデータを抽出する処理を編集していきます。
以下に手順にそって処理手順画像を張り付けておきます。
Step1.サンプル処理の編集(不要ステップ削除)
Step2.PDFの中のテーブルだけを対象にする
Step3.PDFの中のテーブルをデータに展開する
Step4.不要列の削除
Step5.データ項目名”市町村”を作るための加工
Step6.不要列の削除
Step7.表を最終形に変換
最終形の変換結果
Step8. 全ファイル結合処理の修正
フォルダー名のついたクエリが、全ファイルマージ処理になっている。
自動生成された処理の中の不要なステップでエラーになっているので、それを削除。
完成形
完成したら「閉じて読み込む」を選択し、最終形をEXCELのテーブルとして読み込む
EXCELのテーブルとして読み込んだ結果
全国の市町村のデータが一つのテーブルに変化された
※島根県のPDFだけはこの結合処理で正常に処理できない!
島根県のPDFは個別に処理をしてこのテーブルにデータ追加する必要がある!