QGISでの複数地図自動作成 (Atlas / 地図帳)

# 目的
活用事例 : QGISで路線地図を都道府県ごとを作りたいけど、47回設定+Exportするのはちょう面倒ですね。
この記事は複数地図の自動作成 (一回で！)方法を説明します。

# 参考 (英語)
http://www.qgistutorials.com/en/docs/3/automating_map_creation.html
英語は上手の場合上記の記事は充分です。
ただし、コードの書きかたが違うかもしれません。

# 手順
路線データを都道府県ごとにMappingしたい
都道府県dataと鉄道dataを使います
###環境
QGIS 3.4.2 Madeira (LTR)　Mac版 (英語)

## 1- Data Import / Styling
- 必須DataをImportする
- 地図をきれいにStylingする
<img width="1387" alt="Capture d’écran 2019-07-10 à 14.06.43.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/eac8b2d4-057b-eda8-fd4f-e3ea2b21bd13.jpeg">

※ 都道府県Polygon data向けのLayer は `prefectures`です

## 2- Page Layout
- いつもでLayout Manager画面を開いて

Layout Manager画面の表示方法
<img width="237" alt="Capture d’écran 2019-07-10 à 14.38.02.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/1f61a410-961d-9f1e-241d-85f0aed82f07.jpeg">
MenuのこのボタンでもOK → <img width="33" alt="Capture d’écran 2019-07-10 à 14.06.58.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/f251cca9-768f-23b3-791c-47887ac5d59b.jpeg">

- 共通Layoutを設定する
    - Page size : 四角
    - Map
    - Scale
    - Title : 都道府県名
    - など
　

<img width="1153" alt="Capture d’écran 2019-07-10 à 14.10.54.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/44e7278e-5ec8-97b2-5411-4af210549c1a.jpeg">

:point_up_tone2: このママで画像やPDFでExportしてもいいけど、47回をするのは大変になります。
　これから一回で地図47枚の作成方法を説明します

## 3- Atlas設定 (日本語: 地図帳の設定)
Layout Manager画面の右側に下記の画像みたいに設定する

- 1- Atlasタブ(日本語: 地図帳)にClick
- 2- Generate an Atlas (地図帳を作成する)をチェック
- 3- 対象Layerは`prefectures` layer
- 4- ページュ名を都道府県名向けのフィールドに設定
- 5- 順番を都道府県コード向けのフィールドに設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/38b00b52-a5aa-0ee8-b977-1c0411a01c23.png)

## 4- 地図をAtlasに繋がる
Layout Manager画面の右側に下記の画像みたいに:

- Item一覧に地図を選択
- Item propertiesタブにクリック
- `Controlled by Atlas`にチェック
- お好みなMarginを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/41911f3c-ffd1-47ab-64c2-281eff926b31.png)

## 5- AtlasのPreview
Layout Manager画面の上にPreview Atlasをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/c4186ad3-4859-5b51-124e-834c7ab19b3c.png)

下記の画像を見たら矢印ボタンで都道府県Controlできます :v_tone2:
:warning:Titleはまだ`栃木県`と書いてありますのでこれからAtlasに合わせましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/1a432e9e-258c-a3e9-0c95-fed7d54814c0.png)


## 6- 地図のTitleをAtlasに合わせる
下記の画像に順番で手順してください
`〇〇県`ではなく`@atlas_pagename`で都道府県データで設定できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/aeadc2ed-35b8-b533-0daf-c8dfceb230bb.png)

Previewを確認したらいけるはずです :smiley: 
<img width="963" alt="Capture d’écran 2019-07-10 à 16.01.04.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/a06c2540-2e56-f5c9-38a1-37260473a7bc.jpeg">

## 7- Export準備: 共通ファイル名を設定
下記の画像に順番で手順してください
ファイル名の設定は → ``` @atlas_featurenumber  ||'_路線図_'|| @atlas_pagename ```
結果は(例) → `18_路線図_福井県`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/a48d7a98-89cf-0b20-5234-575e7a23ea0d.png)

## 8- Export
:point_up: 画像でExportボタンではなく、今回layout manager画面に、Atlas Menuで全画像をExport できます。
`Export Atlas as Images` もうしくは `Export Atlas as PDF`
<img width="839" alt="Capture d’écran 2019-07-10 à 16.30.27.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/81276ccb-29ad-0baa-87bc-69e2480a60a8.jpeg">

- 届けフォルダーを選択後、ファイルが大きくないように、`150dpi`を意識でExportする
<img width="427" alt="Capture d’écran 2019-07-10 à 16.32.44.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/996a7ea0-dc4b-333a-b3ce-5667f24b5ea9.jpeg">

## 9-少々お待ちください
 <img width="202" alt="Capture d’écran 2019-07-10 à 16.34.17.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/fd4f05a2-88a6-4ec2-66de-3810ee2608a0.jpeg">

## 10- 47都道府県地図をできました:v_tone2:
(Mac FinderのPreview)
<img width="1234" alt="Capture d’écran 2019-07-10 à 16.37.16.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/149dd92f-5fc8-53f7-3fb9-8939fc3831f6.jpeg">
<img width="1217" alt="Capture d’écran 2019-07-10 à 16.37.23.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/e222ba46-abd9-a9d5-f65f-35523deff69c.jpeg">
<img width="1230" alt="Capture d’écran 2019-07-10 à 16.37.31.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/1a5d1e5f-d589-1e6e-ce44-4ebc151f3a5d.jpeg">
<img width="1217" alt="Capture d’écran 2019-07-10 à 16.37.47.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/bc3bc19e-d7be-2aa9-f2b1-fbf02e3fe9c7.jpeg">
<img width="1219" alt="Capture d’écran 2019-07-10 à 16.37.58.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/40cf705c-8d9d-5c5f-193a-395c98174258.jpeg">
<img width="1221" alt="Capture d’écran 2019-07-10 à 16.38.08.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/bfbb78a7-9b8b-f233-06e1-cb3bc597e703.jpeg">

# 課題
### 東京都島嶼部
東京都島嶼部で東京都(内陸部)を見えない :unamused:
解決: 手動で内陸部をExportするか東京都内陸部のみのPolygonを作成する
![13_路線図_東京都.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/f8b1c315-68b3-7e18-12a1-9e321d936d68.jpeg)

### 都道府県の広さでScaleが合わない
![1_路線図_北海道.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/ada9da02-e274-0b8e-1daf-2d09b02bbef3.jpeg)
![47_路線図_沖縄県.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/1caa2810-e7ff-1b19-302d-f81ec7c16346.jpeg)



# Bonus: 対象都道府県ポリゴンのみを表示する場合

### Single Symbolの場合

- `prefecture` layerのPropertiesにSymbologyを`Ruled-Based`に設定する
<img width="825" alt="Capture d’écran 2019-07-10 à 16.51.52.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/146aa1b9-38e8-3f49-e492-6478e4065945.jpeg">
- 
Rule をDouble clickして `"pref_name" = @atlas_pagename` を記入
<img width="789" alt="Capture d’écran 2019-07-10 à 16.51.42.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/24fe2a4e-efa5-456d-a606-3a2c5775f7b3.jpeg">

- 備考 : ExpressionでRuleを楽に設定できる
<img width="770" alt="Capture d’écran 2019-07-10 à 16.51.24.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/578364f8-9be2-0d55-309a-b08e61dd9968.jpeg">

### Categorizedの場合
例え地方によると色を分けるにしたら、Valueにカラム名じゃなくて SQL コードを記入
↓の事例で対象カラムは `region`

```sql:
CASE WHEN pref_name =  @atlas_pagename  THEN "region" END
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/0dbfbd9c-6e3f-370d-9097-392d69c061cb.png)



### Graduatedの場合
例え数字によるとグラデーションするにしたら、同じくValueにカラム名じゃなくて SQL コードを記入
↓の事例で対象カラムは `population`

```sql:
CASE WHEN pref_name =  @atlas_pagename  THEN "populatio" END
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168196/957407af-ebe0-db48-fc76-0683ec435a80.png)




# 最後に
私たちの会社、ナイトレイでは一緒に事業を盛り上げてくれるエンジニアメンバーを募集しています！
このような方は是非Wantedlyからお気軽にご連絡ください（もしくはこちらまで  recruit@nightley.jp ）

✔︎ 自社Webサービスの開発で事業の発展に携わってみたい
✔︎ 自分が開発したものが顧客にどのように使われているのか知りたい（顧客の声を聞いてみたい）
✔︎ セールスチームなど、他部署のメンバーとコミュニケーションが取れる環境に興味がある
✔︎ 地理や地図が好きで仕事中も眺めていたい

一つでも当てはまる方は是非こちらの記事をご覧ください
「受託開発一切なし！自社WEBサービスを社長やセールスチームと一緒に開発！」

https://www.wantedly.com/projects/467606

▼ナイトレイとは？

https://www.wantedly.com/companies/nightley