概要
レイヤの地物に対して属性データを関連付けて追加するのに、CSVファイルを使う方法をまとめる。
大まかな手順としては以下のようになる。
- CSVファイルとCSVTファイルの準備
- CSVファイルのレイヤへの追加
- レイヤへのCSVデータの結合
ここでは、都道府県行政界データに対して国勢調査の人口データを結合し、人口規模に応じた色分けをする例で手順をまとめる。
結合先レイヤの確認
結合先のレイヤとして、国土数値情報の行政界データを都道府県レベルで融合し、簡素化したデータを使う。
フィールドを各種処理後に整理し、以下のような属性データとなっている。
code | name |
01000 | 北海道 |
02000 | 青森県 |
03000 | 岩手県 |
・・・ | ・・・ |
CSVファイルの準備
総務省統計局の平成27年国勢調査の結果、統計表一覧から都道府県別人口データを入手し、以下のように都道府県名と人口データのみを抽出。
1行目には、結合時の目安となるようなフィールド名を入れておく。このときCSVファイルでフィールド名をダブルクォート(“)で囲まないと認識されないという状況が発生した(QGIS 2.16)。
CSVファイル側の結合キーには都道府県名を使う意図で、地図レイヤのフィールド名と区別するために大文字を使用した。
“NAME” | “pop2015” |
北海道 | 5381733 |
青森県 | 1308265 |
岩手県 | 1279594 |
・・・ | ・・・ |
CSVTファイルの準備
QGISでCSVファイルを単に読み込むと、数値データも文字列として扱われてしまう。
文字列、数値を明示するため、拡張子csvtのテキストファイルを準備し、1行で各カラムの型を指定する。型指定の種類には”String”、”Integer”、”Real”などがあり、桁数指定も可能。英文の開発者による説明はこちら。
これらの型指定子をカンマ(‘)で区切って並べるとき、間にスペースを入れると機能せず全てStringと認識されてしまうという状況が発生した(QGIS 2.16)。
今回は都道府県名と人口の2カラムなので、テキストエディタで以下の内容を作成して、拡張子csvtでCSVファイルと同じディレクトリ下に保存する。
1 |
"String","Integer" |
CSVファイルのレイヤへの追加
CSVファイルをQGISのレイヤパネルにドラッグ・アンド・ドロップし、レイヤからCSVファイルへの参照を追加。
CSVファイルの結合
- 地図レイヤを右クリックし、プロパティでダイアログを立ち上げ、「結合」タブを選択
- 左下の「+」ボタンを押して、「ベクタ結合の追加」ダイアログ立ち上げ
- 「レイヤの結合」でCSVファイルを指定
- 「結合フィールド」でCSV側のキーになるフィールド名を指定
- 「ターゲットフィールド」で結合される地図レイヤのキーになるフィールド名を指定
- そのまま進めると、CSVのフィールドにCSVファイル名が接頭辞として付加されてしまい、10文字制限が支障となるので、「フィールド名の接頭辞」にチェックを入れ、その下のファイル名を消す
- OKボタンを押すと、レイヤプロパティダイアログに結合されたファイルが表示される
- レイヤプロパティのOKボタンを押して処理完了
ここでレイヤを右クリックして属性テーブルを表示と、都道府県コード、都道府県名、人口データが並んでいるのが確認できる。
人口規模ごとの段階で都道府県を色分けすると、以下の通り。
参考:結合データに対する計算
結合後のデータに対してフィールド計算機を使い、新たなフィールドを定義することも可能。手順についてはこちらにまとめている。
以下は、平成22年と27年の国勢調査データを結合し、その差分を計算した人口増減データにより都道府県を塗り分けたもの。