QGISに取り込んだ国勢調査のデータを、特定の条件で抽出する方法を解説します。
特定の町丁だけを抽出して地図上に表示したり、人口が一定以上の地域だけを地図上に表示したりすることが可能になります。

今回の解説は、国勢調査の人口データを取り込んだ状態を想定してすすめます。
まだ、国勢調査のデータをQGISで表示できていない方は、国勢調査結果をQGISで表示する手順を解説していますので、事前に国勢調査のデータを表示しておきましょう。

QGISのフィルター機能の概要

今回解説する抽出方法では、GISソフトの「フィルター」という機能を使用します。

フィルタとは、EXCEL等の表計算ソフトにおけるフィルター機能と同様、特定列の特定のデータのみを抽出して表示する方法です。
例えば、「都道府県名がデータとして入っている列にフィルター操作をして、東京都のデータのみを抽出する」ような使い方です。

GISデータの中身を確認する

QGISでフィルター操作をする際には、事前に抽出したいデータ入っている列の名前を把握しておかなければいけません。
そのため、まずGISデータの中身を確認しましょう。

国勢調査結果をQGISで表示する手順を画像で解説のやり方に沿って国勢調査データを取り込んだ状態では、QGISの画面はこのようになっています。

左下のレイヤパネルに表示されている国勢調査データのレイヤ名(この例では「豊島区人口」)の上で右クリックして出てきたメニューから「属性テーブルを開く」を選択します。

するとこのような画面が表示されます。

表計算ソフトのような表形式で整理されたGISデータの中身が確認できました。
各行は地図上ではそれぞれ1つの地物(地図上に表示された形のこと)に対応しており、行の数だけ地図上では地物が表示されています。

1つの地物に、都道府県名や町丁名、その他よくわからない数字等、たくさんのデータが列の数だけ関連付けられています。
データの内容を見てみると、「S_NAME」列には「巣鴨4丁目」や「駒込1丁目」等、その地物の町丁名が書かれています。
右の方にスクロールすると、「総数、年齢「不詳」を含む」列があり、この列にはその地物に含まれる総人口が書かれています。

フィルター操作の流れを確認する

実際にデータの抽出を行う前に、QGISのフィルター操作の基本的な流れを確認しておきましょう。

上で解説したとおり、GISデータの中身は、表計算ソフトのような表形式でデータが構成されています。
表計算ソフトのフィルター機能を使用したことがある方は、それと同じような仕組みです。

特定の列にフィルター操作をすると、該当するデータを含む行のみが抽出されます。
すると、地図上ではその行に対応する地物のみが表示される仕組みです。

仕組みは表計算ソフトと同じようなものですが、実際の操作はかなり異なります。
GISでフィルター操作をする画面を確認しておきましょう。

まず、現在開いている「属性テーブル」ウインドウを閉じます。

レイヤパネルの国勢調査データのレイヤ名の上で右クリックします。
表示されるメニューより「フィルター」を選択します。

すると、このようなウインドウが表示されます。

この画面でフィルターの条件等を入力します。
表計算ソフトでは、生のデータを見ながらフィルター操作をできますが、QGISの場合、データのウインドウとフィルター操作をするウインドウが異なっています。

左上の「フィールド」パネルには、先程「属性テーブル」で確認したGISデータの列の名前が一覧表示されています。
先程確認した「S_NAME」列も表示されています。

ここから特定の列を選択すると右上の「値」パネルにその列に含まれるデータが一覧表示されます。
試してみましょう。

「フィールド」パネル上の文字列から「S_NAME」を選択します。
文字列をクリックして色が変わった状態になれば成功です。

この状態で、右上の「値」パネルの右下にある「全ての」をクリックします。
すると、パネル内に選択した列に含まれる値が一覧表示されました。
データ数が多いのですべてを確認するには、スクロールバーで下にスクロールしていきます。

そして、このウインドウの下半分には「演算子」と「プロバイダ特有フィルタ式」なる聞き慣れない言葉のパネルが表示されています。
データのフィルタ操作はここに条件式を記入することで行います。

では、実際にフィルター操作を試してみましょう。

特定の町丁名に該当するデータを抽出する

まずはじめに、町丁名でデータを抽出する方法を解説します。
レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「属性テーブル」を開きます。

抽出したいデータが入っている列の名前を確認します。
属性テーブルを確認すると、「S_NAME」に町丁名が書かれています。

フィルタ操作をする際にはこの列名とデータの対応を把握しておく必要があります。

対応を確認したら、属性テーブルウインドウを閉じます。
次は、レイヤパネルの国勢調査データのレイヤ名の上で右クリックして出てくるメニューから「フィルター」を選択し、先程のウインドウを表示します。
ここから具体的なフィルター操作に入っていきます。

フィルタ操作は、「プロバイダ特有フィルタ式」欄にフィルタの関係式を入力することで行います。
今回は特定の町丁だけを抽出することを目指しています。地図上に表示されている地物から〇〇町〇〇丁目という町丁だけを抽出して表示する場合、以下のような関係式を入力します。

フィルターの関係式:”S_NAME” = ‘〇〇町〇〇丁目’

実際にやってみましょう。

準備

準備として、地図の色分けを元に戻します。
レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「プロパティ」を開きます。

表示されたウインドウの左側に並んでいる文字列の中からシンボロジーという文字列を選択します。
一番上の「段階に分けられた」と書かれた選択メニューの右端にある下矢印をクリックし「単一シンボル」を選択します。
一番下にあるOKをクリックします。

すると、地図上の地物の色が1色に戻りました。

フィルターの関係式を作る

レイヤパネルの国勢調査データのレイヤ名の上で右クリックして出てくるメニューから「フィルター」を選択し、先程のウインドウを表示します。

まず、左上の「フィールド」パネルに表示されている文字列の中から、抽出したいデータが入っている列を見つけます。

真ん中あたりに「S_NAME」が見つかります。
列名の上でダブルクリックします。
すると、下の「プロバイダ特有フィルタ式」欄に選択した列名が追加されます。

そして「演算子」パネルにある「=」をクリックします。
すると、列名の右側に「=」が追加されました。

続いて、「フィールド」パネル「S_NAME」を選択した状態で、右上の「値」パネルの右下にある「全て」をクリックします。
すると「値」パネルに、「S_NAME」列に含まれるデータが一覧表示されます。

町丁名が含まれる「S_NAME」列を選択しているので、町丁名がズラッと表示されたと思います。
この中から抽出したい町丁名を選びます。

今回は「池袋3丁目」を抽出することにします。
※他の都道府県の国勢調査データをダウンロードした方は、この例とは異なる町丁が表示されていると思いますので、あなたが選んだ適当な町丁を選択しましょう。

データ一覧から「池袋3丁目」を見つけダブルクリックします。
すると、「プロバイダ特有フィルタ式」欄の式に追加され、関係式が完成しました。

この状態で抽出する準備は整ったので、右下の「OK」をクリックします。
すると地図の画面に戻り、選択した町丁のみが表示された状態になっています。

関係式を工夫して複雑な条件で抽出する

関係式を工夫するともっと複雑な抽出が行なえます。
今回は、以下の4つの条件でデータの抽出を行う方法を解説します。

  • 特定の町丁名に該当しない
  • 総人口が4000人以上
  • 若年女性(20〜34歳)の人口が500人以上
  • 特定の町丁名に該当せず、かつ高齢者(65歳以上)の人口が700人以上

特定の町丁名に該当しないデータを抽出する

上の例と逆に、特定の町丁以外の町丁を抽出してみます。
レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「フィルター」ウインドウを表示します。

「プロバイダ特有フィルタ式」パネルに先程の関係式が入った状態なので「クリア」をクリックし、関係式を削除します。
これで地図上では、先程のフィルター操作をする前の状態に戻ります。

「クリア」をクリックしてこの関係式を消去する

今回のように〇〇町〇〇丁目という町丁に該当しない町丁を抽出して表示する場合、以下のような関係式を入力します。

フィルターの関係式: NOT “町丁名が入った列名” = ‘〇〇町〇〇丁目’

関係式の頭に「NOT」をつけるとそれに続く式に該当しない地物のみを抽出します。
実際にやってみましょう。

まず、「演算子」パネルにある「NOT」をクリックします。
そして、左上の「フィールド」パネルに表示されている文字列の中から、「S_NAME」を見つけます。

見つけた文字列の上でダブルクリックします。
下の「プロバイダ特有フィルタ式」欄に選択した列名が追加されますので、続けて「演算子」パネルにある「=」をクリックします。

先程と同じく、右上の「値」パネルの右下にある「全て」をクリックします。
表示される町丁名一覧の中から地図上に表示しない町丁名を選びます。

今回は「池袋3丁目」を抽出することにします。
データ一覧から「池袋3丁目」を見つけダブルクリックします。
すると、「プロバイダ特有フィルタ式」欄の式に追加され、関係式が完成しました。

抽出する準備は整ったので、右下の「OK」をクリックします。
すると地図の画面に戻り、先程と逆に選択した町丁のみが表示されていない状態になっています。

総人口が4000人以上のデータを抽出する

今度は、総人口を使って町丁を抽出してみます。
今回のように総人口〇〇人以上のデータを抽出して表示する場合、以下のような関係式を入力します。

フィルターの関係式: “人口が入った列名” >= ○○

最初の関係式で、「=」となっていたところが、以上を意味する「>=」に変わります。

実際にやってみましょう。
まず、総人口のデータが入っている列の名前を確認します。

上で解説した方法で属性テーブルを開き、右の方にスクロールすると表示される「総数、年齢「不詳」を含む」列に総人口のデータが書かれています。

「総数、年齢「不詳」を含む」列が総人口のデータ

対応を確認したら、属性テーブルウインドウを閉じます。
レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「フィルター」ウインドウを表示します。
「プロバイダ特有フィルタ式」パネルに先程の関係式が入った状態なので「クリア」をクリックし、関係式を削除します。

まず、左上の「フィールド」パネルに表示されている文字列の中から、「総数、年齢「不詳」を含む」を見つけます。
見つけた文字列の上でダブルクリックします。

下の「プロバイダ特有フィルタ式」欄に選択した列名が追加されますので、続けて「演算子」パネルにある「>=」をクリックします。

今度は、「>=」の右側に直接抽出した人口の数字を入力します。
今回は人口4000人以上のデータを抽出するので、半角で「4000」と入力します。

あなたがダウンロードしている国勢調査データによっては、もっと人口が少ない地域の場合もありますので、数字は適宜調整してください。
これで、関係式は完成です。

抽出する準備は整ったので、右下の「OK」をクリックします。
すると地図の画面に戻り、総人口が4000人以上の町丁のみが抽出して表示されています。

若年女性(20〜34歳)の人口が500人以上のデータを抽出する

今度は、総人口ではなくいくつかの年齢層の合計人口を使って町丁を抽出してみます。
若年女性(20〜34歳)の人口は、国勢調査結果では20〜24歳、25〜29歳、30〜34歳の3つの年齢層に分けて取りまとめられており、GISデータの中身も、3つの列に分かれてデータが書かれています。
そのため、関係式に複数の列を記載しなければなりません。

今回のように複数の年齢層の合計人口が〇〇人以上のデータを抽出して表示する場合、以下のような関係式を入力します。

フィルターの関係式:”年齢層1の人口が入った列名”+”年齢層2の人口が入った列名”+”年齢層3の人口が入った列名” >= ○○

3つの列の合計値を抽出に使用する例です。
上の関係式では、総人口が入力されていたところが、複数の列の合計を出す計算式になっています。

実際にやってみましょう。
まず、若年女性(20〜34歳)の人口のデータが入っている列の名前を確認します。

上で解説した方法で属性テーブルを開き、右の方にスクロールすると表示される「女20〜24歳」列に20〜24歳女性人口、「女25〜29歳」列に25〜29歳女性人口、「女30〜34歳」列に30〜34歳女性人口のデータが書かれています。

若年女性の人口データは3つの列に分かれている

対応を確認したら、属性テーブルウインドウを閉じます。
レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「フィルター」ウインドウを表示します。
「プロバイダ特有フィルタ式」パネルに先程の関係式が入った状態なので「クリア」をクリックし、関係式を削除します。

まず、左上の「フィールド」パネルに表示されている文字列の中から、「女20〜24歳」を見つけます。
見つけた文字列の上でダブルクリックします。

下の「プロバイダ特有フィルタ式」欄に選択した列名が追加されますので、続けて半角で「+」と入力します。
次は、「フィールド」パネルから、「女25〜29歳」を見つけダブルクリックします。

「プロバイダ特有フィルタ式」欄に選択した列名が追加されたら、半角で「+」と入力します。
さらに、「フィールド」パネルから、「女30〜34歳」を見つけダブルクリックします。

「プロバイダ特有フィルタ式」欄に選択した列名が追加されたら、今度は「演算子」パネルにある「>=」をクリックします。

今度は、「>=」の右側に抽出したい人口の数字を直接入力します。
今回は人口500人以上のデータを抽出するので、半角で「500」と入力します。
あなたがダウンロードしている国勢調査データによっては、もっと人口が少ない地域の場合もありますので、数字は適宜調整してください。

これで、関係式は完成です。

抽出する準備は整ったので、右下の「OK」をクリックします。
すると地図の画面に戻り、若年女性(20〜34歳)の人口が500人以上の町丁のみが抽出して表示されています。

特定の町丁名に該当せず、かつ高齢者(65歳以上)の人口が700人以上のデータを抽出する

今度は、これまでの方法の複合です。
町丁名と総人口の条件を合わせて町丁を抽出してみます。

〇〇町〇〇丁目という町丁に該当しない町丁で、さらに人口〇〇人以上のデータを抽出して表示する場合、以下のような関係式を入力します。

フィルターの関係式:  NOT “町丁名が入った列名” = ‘南〇〇町〇〇丁目’  AND “人口が入った列名” >= ○○

「NOT」を使った関係式と「>=」を使った関係式を「AND」でつなぎます。
実際にやってみましょう。

町丁名のデータが入った列名は「S_NAME」でした。
高齢者(65歳以上)人口のデータが入っている列の名前を確認します。

上で解説した方法で属性テーブルを開き、右の方にスクロールすると表示される「総数65歳以上」列に高齢者(65歳以上)の総人口データが書かれています。

対応を確認したら、属性テーブルウインドウを閉じます。
レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「フィルター」ウインドウを表示します。
「プロバイダ特有フィルタ式」パネルに先程の関係式が入った状態なので「クリア」をクリックし、関係式を削除します。

まず、「演算子」パネルにある「NOT」をクリックします。
そして、左上の「フィールド」パネルに表示されている文字列の中から、「S_NAME」を見つけます。
見つけた文字列の上でダブルクリックします。

下の「プロバイダ特有フィルタ式」欄に選択した列名が追加されますので、続けて「演算子」パネルにある「=」をクリックします。
右上の「値」パネルの右下にある「全て」をクリックします。
表示される町丁名一覧の中から地図上に表示しない町丁名を選びます。

今回は「池袋3丁目」を抽出することにします。
データ一覧から「池袋3丁目」を見つけダブルクリックします。

すると、「プロバイダ特有フィルタ式」欄の式に追加され、関係式の前半が完成しました。

関係式の前半が完成した

続いて、高齢者(65歳以上)の人口についての関係式を入力します。
まず、「演算子」パネルにある「AND」をクリックします。
そして、左上の「フィールド」パネルに表示されている文字列の中から、「総数65歳以上」を見つけます。
見つけた文字列の上でダブルクリックします。

下の「プロバイダ特有フィルタ式」欄に選択した列名が追加されますので、続けて「演算子」パネルにある「>=」をクリックします。
「>=」の右側に抽出したい人口の数字を直接入力します。

今回は高齢者人口700人以上のデータを抽出するので、半角で「700」と入力します。
あなたがダウンロードしている国勢調査データによっては、もっと人口が少ない地域の場合もありますので、数字は適宜調整してください。

これで、関係式は完成です。

抽出する準備は整ったので、右下の「OK」をクリックします。
すると地図の画面に戻り、池袋3丁目に該当せず、かつ高齢者(65歳以上)の人口が700人以上の町丁のみが抽出して表示されています。

抽出した地物を保存する

フィルター操作を行うと地図上の表示が操作に応じて変化しました。
ただし、この状態は一時的にフィルタ操作を反映した表示がされているだけで、データ自体はもとのまま変更されておりません。

上でやってみたようにフィルターウインドウで「クリア」をクリックすると元に戻ります。
抽出後の地物のみをデータとして保存したい場合は、次のような操作を行います。

レイヤパネルの国勢調査データのレイヤ名の上で右クリックし「エクスポート」から「地物の保存」を選択します。

すると「ベクターレイヤーを名前で保存」というウインドウが表示されます。

「形式」の選択メニューが「GeoPackage」となっているのを確認して、「ファイル名」と書かれた欄の右端にある点が3つ並んだところをクリックします。
ファイルの保存場所と、ファイル名を入力するウインドウが表示されるので、あなたが解りやすい名前をつけて保存しましょう。

今後は、このファイルをQGISに取り込むと、抽出した状態で地図上に表示されます。

まとめ

今回は、QGISに取り込んだ国勢調査のデータを様々な条件で抽出する方法を解説しました。
関係式で条件を設定して、データを抽出できる用になると、国勢調査の結果を使って分析できることが増えます。

  • あなたのお店の周りには、どの程度ターゲットの年齢層の人たちが生活しているんだろうか。
  • 多くのターゲット層が生活している地区はどのあたりにあるんだろうか。
  • 介護事業を計画している地区の周辺の高齢者率はどの程度なんだろうか。

こんなふうに、あなたが知りたい情報を絞り込んで分析することができるようになります。
是非、いろんな関係式を作成して、あなたの役に立つデータを作成してみましょう。

使用したデータ

0 返信

返信を残す

Want to join the discussion?
Feel free to contribute!

コメントを残す

メールアドレスが公開されることはありません。