QGIS – CSVファイルの結合

概要

レイヤの地物に対して属性データを関連付けて追加するのに、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ファイルと同じディレクトリ下に保存する。

CSVファイルのレイヤへの追加

CSVファイルをQGISのレイヤパネルにドラッグ・アンド・ドロップし、レイヤからCSVファイルへの参照を追加。

qgis-csv-import-adding-layer

CSVファイルの結合

  • 地図レイヤを右クリックし、プロパティでダイアログを立ち上げ、「結合」タブを選択
  • 左下の「+」ボタンを押して、「ベクタ結合の追加」ダイアログ立ち上げ
    • 「レイヤの結合」でCSVファイルを指定
    • 「結合フィールド」でCSV側のキーになるフィールド名を指定
    • 「ターゲットフィールド」で結合される地図レイヤのキーになるフィールド名を指定
    • そのまま進めると、CSVのフィールドにCSVファイル名が接頭辞として付加されてしまい、10文字制限が支障となるので、「フィールド名の接頭辞」にチェックを入れ、その下のファイル名を消す
  • OKボタンを押すと、レイヤプロパティダイアログに結合されたファイルが表示される
  • レイヤプロパティのOKボタンを押して処理完了

qgis-csv-import-binding-dialog

ここでレイヤを右クリックして属性テーブルを表示と、都道府県コード、都道府県名、人口データが並んでいるのが確認できる。

人口規模ごとの段階で都道府県を色分けすると、以下の通り。

qgis-csv-import-map-population

参考:結合データに対する計算

結合後のデータに対してフィールド計算機を使い、新たなフィールドを定義することも可能。手順についてはこちらにまとめている。

以下は、平成22年と27年の国勢調査データを結合し、その差分を計算した人口増減データにより都道府県を塗り分けたもの。

qgis-population-change-2011-2015-map

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です