レイヤ‎ > ‎

属性データにCSVまたはDBFファイルを結合したい

レイヤの属性データに、CSVファイルや、DBFファイルのデータを結合させ、レイヤの属性データとすることができます。
例えば、市町村名のみ属性データとしてあるポリゴンデータに、市町村別人口データのCSVを結合させ、人口区分別の色分けなどを行うことができます。
 2つのデータを結合して
1つのデータにする。(ここでは市町村名をKEYにして結合)


【結合するデータを準備する】

  1. 今回は、esriジャパンのページから ダウンロードした、全国市区町村界データのシェープファイルの北海道のみ抜き出したもの、
    市町村別人口は http://hokkaido.uub.jp/ から北海道の人口順位をテキストコピーし、CSVに保存したものを使用します。
    2つとも、このページの添付ファイルにおいておきます。

  2. 結合されるレイヤの属性データと、結合するCSVまたはDBFファイルには、共通の結合KEYフィールドが必要です。

【属性データを結合する】

  1. 市町村名をKEYフィールドにして、人口データを結合してみます。

  2. 結合する2つのデータをレイヤに読み込みます。


  3. 結合するレイヤ(ここでは、北海道市区町村界ポリゴン)のレイヤのプロパティを開き、「結合」タブを選択します。

  4. 「+」ボタンをクリックして、結合するCSVファイル(北海道市町村人口順位)を選択し、共通のKEYフィールドを選択します。


  5. 「OK」ボタンをクリックすると、リストに結合するデータが追加されます。

  6. レイヤのプロパティを閉じて、属性テーブルを開くと、データが結合されています。

    CSVファイルで結合すると、人口が文字列になります。
    数値にする方法を次に記載します。

【CSVファイルの数値データの取扱い】

 DBFファイルだと、それぞれのフィールドを数値型、文字型などに設定できますが、CSVファイルだと通常は設定できないため、そのまま結合すると数値も文字列として結合されます。このままでは、範囲による色分けや、並べ替えなどが正しく行えません。
 CSVファイルのデータに文字型(String)、整数型(Integer)、小数点型(real)を設定する場合には、「csvtファイル」を作成します。

  1. テキストファイル(メモ帳などを起動し作成する)に、設定したいCSVと同じフィールド分、データ型の設定を行う文字を入力します。
    例えば北海道市町村人口順位.csvなら、フィールドが5つあり、「整数、文字列、文字列、文字列、整数」ですので、「"integer","string","string","string","integer"」を入力します。(フィールドとフィールドの間は「,」で区切り、データ型は「"」で囲みます。)
    (小数のデータの場合は"real"と記載します。)

  2. 作成したテキストファイルを、設定したいCSVファイルと同じ名前にし、拡張子を「.csvt」にして保存します。

  3. 「csvtファイル」を作成してから結合を行うと、数値を数値として結合することができます。

    「人口」が数値として結合できました。

  4. この方法については、 http://d.hatena.ne.jp/Bravo-Astro/20120310/1331355187に詳しく記載されています。


[追記]【Excelのファイルも読み込めるようになってます】

2015年9月19日追記
 どのバージョンからかはわかりませんが、Ver2.10.1では、ExcelのxlsファイルをQGISのレイヤとして読み込めるようになっています。
 シートが複数ある場合には、レイヤに追加時に選択します。
 Excelファイルでは、数値は数値で読み込むので、CSVファイルをxlsファイルにして読み込むとcsvtファイルは必要ありません。
 ただし、ExcelファイルはQGIS上では編集することはできません。ExcelやLibleOfficeなどで編集してください。



【結合したデータを新たなファイルとして保存】

  1.  結合したレイヤは、あくまでも仮想的に結合されているだけなので、結合しているCSVファイルを削除したりすると結合が解除されます。
    また、一部の機能では結合したフィールド認識しない機能もあるので、結合したフイールドを常時使用する場合には、レイヤを右クリックし、「名前を付けて保存」で新たなファイルを作成することで、結合したままのデータを作成することができます。


【ftoolプラグインによる結合】

  1. 上記の方法の他に、レイヤにデータを直接結合し新しいシェープファイルを作成する方法が「ftoolプラグイン」の「Join attributes」を使用する方法です。

    <ベクタ>→<データマネジメントツール>→<Join attributes>を選択します。
    (「Join attributes」が表示されない時には、<プラグイン>→<Pythonプラグインを呼び出す>で「ftoolプラグイン」を最新版に更新してください)

  2. 結合するレイヤと、結合したいDBFファイルまたはCSVファイルを指定し、KEYフィールドを指定します。
    保存するシェープファイル名を入力し「OK」ボタンをクリックすると、新しいデータを結合したシェープファイルが作成されます。


ċ
hokkaido_jinkou_jyun.zip
(4k)
喜多耕一,
2012/05/12 8:12
ċ
hokkaido_shityouson.zip
(1067k)
喜多耕一,
2012/05/12 8:11
Comments