QGIS で全国の市区町村訪問履歴を地図上に塗り分けしようね

少し前に、 [経県値マップ](https://uub.jp/kkn/) というサイトを知りました。これは、自分の都道府県ごとの宿泊・訪問・通過体験を得点化し地図上に塗り分けしてくれる、お出かけ好きにはたまらないサイトです。これで Twitter のひとたちとわいわいしていたとき、都道府県ごとだとなにか物足りず、市区町村版の経県値マップのようなものがあったらおもしろいだろうなあと思ったのですが、残念ながらそういうものはどこにも公開されていなかったので、自分で作ることにしました。

Webアプリを作って公開することも考えたのですが、作業量が多くて利用する人が全く見込めないので、GIS ソフトを使って手で描いていきます。

#大まかな流れ
* 全国の市区町村の訪問等の履歴を記録
* GISソフトを使って描画
* 眺めて楽しむ ^・^

#制作環境(一応)
* macOS Big Sur (11.4)
* Numbers 11.1
* QGIS 3.18.3-Zürich

#訪問の記録
総務省のサイトから、全国の市区町村一覧の Excelファイルを取ってきます。このファイルに、任意のソフトやツールで自分の訪問記録を記していきます。
記入前に、都道府県の団体コードが記されている行を削除しておきましょう。

https://www.soumu.go.jp/denshijiti/code.html

私は本家経県値マップに倣って、居住・宿泊・訪問・接地・通過・未踏 の6段階で得点をつけました。まあお好みで設定してください。訪問回数で得点を分けるのもおもしろいかもしれないですね。

Google Maps や地理院地図を見て、記憶を辿りながら全国1747市区町村の記録をひとつひとつつけていきましょう。**ちなみに私の場合この作業は6時間以上かかりました。相当暇な人でなければ、これをやることをおすすめしません。** (時間かけたくないなーって人は地方や都道府県を絞って作るとお手軽だと思います。)

###注意点
あとで使う地図のデータでは、政令指定都市の行政区を個別に扱っています。そのため、先ほど総務省のサイトからダウンロードしたExcelファイルの政令指定都市の行を、以下のように置き換えてください。行政区の団体コード一覧は、そのExcelファイルの2シート目にあります。

####例)
↓置き換え前

| 団体コード | 都道府県名 | 市区町村名 | … | 記録 |
|:----------|:---------|:----------|:---------|:----------|
| … | … | … | … | … |
| 035246  | 岩手県 | 一戸町 | … | 0 |
| **041009**  | **宮城県** | **仙台市** | … | **3** |
| 042021  | 宮城県 | 石巻市 | … | 2 |
| … | … | … | … | … |

↓置き換え後

| 団体コード | 都道府県名 | 市区町村名 | … | 記録 |
|:----------|:---------|:----------|:---------|:----------|
| … | … | … | … | … |
| 035246  | 岩手県 | 一戸町 | … | 0 |
| **041017**  | **宮城県** | **仙台市青葉区** | … | **3** |
| **041025**  | **宮城県** | **仙台市宮城野区** | … | **3** |
| **041033**  | **宮城県** | **仙台市若林区** | … | **3** |
| **041041**  | **宮城県** | **仙台市太白区** | … | **3** |
| **041050**  | **宮城県** | **仙台市泉区** | … | **3** |
| 042021  | 宮城県 | 石巻市 | … | 2 |
| … | … | … | … | … |





##完成したデータの下準備
記録が終わったら、これをGISソフトに読み込ませるために少し準備をしましょう。記録をあとで修正・変更する可能性を考えると、書き出し準備用に別の表を用意して作業するのが楽かもしれません。

はじめに、一番左の列「団体コード」の6桁の数字の下一桁を削除します。団体コードの下一桁はチェックディジットになっていて、GISソフトで読み込む際には不要になるため、消しておかなければいけません。この際、表計算ソフトをお使いの場合は団体コードのセルの書式を "テキスト" に設定しておいてください。
私はこの作業に Numbers (Mac版 Excel) のLEFT関数を使いましたが、CSVとして出力してからコードを書いて処理してもいいと思います。最終的に適切なCSVができればなんでもいいです。

それが終わったら、(表計算ソフトをお使いの場合は)CSVで書き出しましょう。あとで利用するファイルの仕様の関係で、Shift-JIS で書き出しておくのが安全です。「団体コード」の列と得点をつけた列以外を今後の作業で使うことはないので、書き出す前に消しておいて結構です。

完成したCSVファイルはこのようになると思います。

| 団体コード | 記録 |
|:-:|:-:|
| 01001 | 3 |
| 01002  | 3 |
| 01003 | 3 |
| … | … |

これで、GISソフトに訪問記録を読み込ませる準備ができました


#マップの作成

先ほど作った記録をもとに、地図上の市区町村を塗り分けていきます。

##QGISのインストール

ここでは、QGISというオープンソースの地理情報システムを使います。インストールされていない方はここから入れてください。Windows, macOS, Linux, Android版があるようです。

https://qgis.org/ja/site/forusers/download.html



##白地図の取得

塗り絵の下地となる地図のデータを取得します。

https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v3_0.html

国土交通省が公開している行政界のGISデータがあるので、ありがたく使わせてもらいます。全国の市区町村への訪問を記録した方は全国版のデータを、都道府県を選んで記録した方はその都道府県のデータをダウンロードし、解凍してください。


##地図の読み込み

扱うデータの準備は揃ったので、QGISを起動しましょう。

macOS Catalina 以降をお使いの方は、アプリを開こうとするとセキュリティがだめですみたいな内容のメッセージが出てきて開けないので、Finderでアプリケーションフォルダを開き、QGISを右クリックして <kbd>⌥</kbd> (optionキー) を押しながら開くをクリックしてください。
開くと多分このような画面が出ます。お知らせの画面が出てきた場合は画面の端に押しやると消えます。
![スクリーンショット 2021-06-19 11.52.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/87d6304b-039d-65d6-7296-8526d7bb5693.png)

まず下地の地図を読み込みましょう。メニューツールバーの「レイヤ」から「レイヤの追加」「ベクタレイヤの追加…」を開きます。
先ほど解凍したフォルダの中にある、`.shp` (シェイプファイル)を開きます。
![スクリーンショット 2021-06-19 11.56.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/1b6dfb9f-b132-da4d-1647-aa72a05ab610.png)
文字コードは Shift_JIS を選択します。
![スクリーンショット 2021-06-19 11.56.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/97725eb8-ef67-0b1a-4302-449ca656c30c.png)
オプションのところは何もいじらないで大丈夫です。
追加ボタンを押したあと、データソースマネージャを閉じます。
![スクリーンショット 2021-06-19 11.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/ff2e4f5d-871a-16d1-3847-b330da889a7b.png)
無事日本地図が表示されています。わーい！！！
この地図をぐりぐり動かして遊んでいるとたまに日本列島が見えなくなってしまうことがあるので、そういう場合は画面下の 座標 フィールドに `135, 38` あたりを入力すると戻れます。

さて、シェイプファイルの地物たち(ここでは各市区町村のデータ)には、それぞれの属性が登録されています。左下のレイヤパネルで、先ほど読み込んだシェイプファイルを右クリックし、属性テーブルを開いてその内容を見てみましょう。
![スクリーンショット 2021-06-19 12.25.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/f1ebac32-8e98-93a3-6875-39dbaced6cb0.png)
![スクリーンショット 2021-06-19 12.33.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/4c7ae6f9-e048-a90e-132c-417ac0e70b44.png)
これが各市区町村のパーツに登録されている属性です。`N03_007` の列には、先ほどCSVに書き出す際に下一桁を削ったあの団体コードが記されているのがわかります。次の作業では、この属性データに自分の訪問記録を追加していきます。


##訪問記録データの追加

先ほど整えたCSVをQGISに読み込みましょう。下の画像内の丸印をつけたアイコンをクリックするとデータソースマネージャが開きます。
![スクリーンショット 2021-06-19 12.47.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/e79f50c6-4f35-cfb1-9450-a908403d0c1c.png)
左側のセレクタでは ベクタ を選び、自分の訪問記録が詰まったCSVファイルを選択してください。ここで、文字コードが `Shift_JIS` になっていることを確認してください。
![スクリーンショット 2021-06-19 12.55.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/0c6ca43d-fbcb-d78f-be4a-9e2b246ca67c.png)
追加できたら、ソースマネージャを閉じます。

##訪問記録の結合

読み込んだ訪問記録を、地物の属性に追加していきます。
レイヤ パネルでシェイプファイルを右クリックし、プロパティ を開いてください。
![スクリーンショット 2021-06-19 13.01.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/969949be-ddd3-7985-4688-8c4baf762fbe.png)
テーブル結合 のページを選択し、左下の + ボタンを押します。
![スクリーンショット 2021-06-19 13.01.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/8abf55d7-51db-968a-bbaf-4d548ad24a42.png)
これで地物の属性と自分の訪問記録を結合できます。
結合するレイヤ を 読み込んだCSVファイル、結合基準の属性 を `団体コード`、ターゲット属性を `N03_007` に設定し、OKを押します。
![スクリーンショット 2021-06-19 13.02.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/4aa9442c-c216-0491-ac32-78ee8ccbe0a8.png)
OKを押して レイヤプロパティ のウィンドウを閉じます。

これで自分の訪問記録を属性に追加できました。シェイプファイルの属性テーブルを開いて確認してみましょう。
![スクリーンショット 2021-06-19 13.02.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/f11b7931-1c5d-840e-af95-739f4eb11776.png)
やった！！！！！！！いちばん右の列に追加されています！！！いぇーい！！！！^-^

ここまでできれば、マップの完成まであと1歩です。

##塗り塗り

さて、ついに塗り絵の時間がやってまいりました。
シェイプファイルのプロパティを開き、シンボロジを選択します。
定義を　`カテゴリ値による定義` に、値を自分の訪問記録に設定します。
![スクリーンショット 2021-06-19 14.06.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/032f9776-85de-21ea-1d3e-15a78d85ac0b.png)
左下の 分類 ボタンを押すと…
![スクリーンショット 2021-06-19 14.06.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/7ab7915c-aae3-9c24-4c46-e79ffd6fdfb4.png)
点数ごとに色をつけてくれました！とりあえず OK を押して、地図がどうなったのかみてみましょう！！
![スクリーンショット 2021-06-19 14.06.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/31ed0198-4706-59ae-37c4-e1e1da0a2026.png)
**おおおおおおおおお！！！！！！！！塗り絵できた！！！！！！！**
このままでは少しわかりづらいので、見た目を調整していきます。

レイヤパネルの分類名をダブルクリックすると、塗り方を変更できます。私は色を変更したあと、枠線を無効にして小さい市区町村が潰れないようにしました。
![スクリーンショット 2021-06-19 14.37.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/ed77ff5f-6de0-11db-72a6-f2ab96f56052.png)
地図の背景の色は、メニューツールバー > プロジェクト > プロパティ… > 一般情報 から変更できます。
調整が終わると…
![スクリーンショット 2021-06-19 14.40.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/e747e42c-6828-f168-939c-7105e7690603.png)
こんな感じになりました！これだとかなり見やすいですね！！！今まで私は日本のいろんなところに行ったつもりでいましたが、図にしてみると意外とスッカスカだったので驚きました。

メニューツールバー > プロジェクト > インポートとエクスポート から、画像やPDFで出力できます。QGISで凡例等を作ることもできるらしいですが、調整がしにくいのでPDFをイラレかなんかで読み込んで作る方が楽だと思います。

#完成

そんなこんなで完成した 経県値マップ ならぬ 経市区町村値マップ(命名センスのNASA)がこちらになります！！！
![経市区町村-20210618_cpl.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1662666/6628b0f9-c41c-9c15-b31b-59ba17049fea.png)
わーい！！！！！！！！いい感じにできました！！！！！！！！！！！！！！！^・^ ^・^ ^・^ ^・^ 
経市区町村値は記録に使った表計算ソフトで算出しました。
島嶼部を整理すると見やすくなりそうですが、面倒だったので機会があったらやることにします。

ちなみに、新しく市区町村を訪問したりして記録が変わったときは、CSVの中身を更新するだけでQGISが新しいバージョンのマップを作ってくれます。経市区町村値の変遷をアニメーションにしたりするとおもしろそうですね。

#参考
https://docs.qgis.org/2.14/ja/docs/user_manual/introduction/qgis_configuration.html

https://www.soumu.go.jp/main_content/000137948.pdf

https://nlftp.mlit.go.jp/ksj/other/QGIS_manual.pdf

https://data.nifcloud.com/blog/the-population-of-tokyo_data-visualization_qgis/


#関係ないこと
^・^ の顔もかわいいんですが、にっこりしてるような口になる文字があったらもっとかわいくなりそうなのでそういう文字を知ってたらおしえてね