eyecatch

属性値に応じて地物を絞り込もう〜QGISの便利なフィルタ機能を紹介〜

投稿日: 最終更新日:
この記事はQGIS 3.34を使用しています。

この記事でわかること


  • ベクタデータのフィルタの方法
  • フィルタ式の使い方

こんな人におすすめ


  • 属性の値を使ってベクタレイヤを絞り込みたい方
  • 必要な地物のみを表示したい方

はじめに

地図データを可視化する際に、「都道府県のポリゴンデータから特定の市町村のポリゴンだけを表示したい」とか「人口が◯◯人以上の都道府県のみを表示させたい」といった特定の条件に合致した地物のみを絞り込んで表示したいと思ったことはないでしょうか。

このような場合には、QGISのフィルタ機能を用いることで、ベクタデータの属性値に基づいて特定の値を持つ地物のみを抽出し、データを表示することができます。

この記事ではベクタデータのフィルタ機能について紹介します。

今回使用するデータの紹介

今回は、地球地図日本(国土地理院)から行政界のデータを使用して様々なフィルタをかけてみたいと思います。QGISにデータを追加すると、日本全国の市区町村が表示されます。

フィルターをかける前の状態では全ての都道府県が表示されている(地球地図日本(国土地理院))
地球地図日本(出典:国土地理院

フィルタを使用する前に、追加したデータの属性を確認しておきましょう。

フィルタをかけるレイヤの属性を確認しておく。
フィルタをかけるレイヤの属性を確認しておく。

属性テーブルを確認すると、3行目の「nam」に「都道府県名」、4行目の「laa」に「市区町村名」、5行目の「pop」に「人口」の値が入っていることがわかります。

フィルタの使い方

文字列でフィルタをかける

まずは、「nam」のカラムが「Hokkai Do」となっている地物のみを表示するようにフィルタをかけたいと思います。

レイヤから、フィルタをかけたいベクタレイヤを右クリックし、[フィルタ]を選択します。フィルタ画面が表示されると画面左上の[フィールド]の項目には属性のカラム名が表示されています。

フィルタの設定画面
フィルタの設定画面
  1. フィールドの一覧から、都道府県名が入力されている[nam]をダブルクリックしてください。すると、画面下部のフィルタ式入力欄に"nam"と入力されます。
  2. そのまま、[すべて]をクリックすると、「nam」に入力されている属性値のリストが表示されます。[すべて]をクリックして表示される値は、画面左の[フィールド]で選択中のカラムの属性となります。
  3. 演算子から[=]をクリックします。
  4. 値の候補から、[Hokkai Do]をダブルクリックします。
"nam" = 'Hokkai Do'

上記のようにフィルタ式に入力されていることを確認して[OK]をクリックすると、地図上の地物が絞り込まれて表示されます。

属性テーブルを開いてみても、「nam」のカラムが「Hokkai Do」となっている地物の情報しか表示されていないことがわかります(本記事では、フィルタされていることがわかりやすいように日本の白地図と重ねて表示しています)。

Hokkai Doのみが表示される。(地球地図日本(国土地理院)を加工して作成)
Hokkai Doのみが表示される。(地球地図日本(国土地理院)を加工して作成)

数字でフィルタをかける

続いて、「pop」(人口)のカラムが100,000以上の地物のみを表示してみたいと思います。再びフィルタを開き、フィルタ式に入力されている文字をすべて削除してください。

  1. フィールドの一覧から、[pop]をダブルクリックしてください。
  2. 演算子から[>=]をクリックしてください。
  3. フィルタ式に直接、100000と半角で入力して、[OK]をクリックしてください。
数値でのフィルタ設定
数値でのフィルタ設定
"pop" >= 100000

「pop」の値が100,000以上の地物のみ表示されます。

フィルタ結果

popが100000以上の地物が表示される。(地球地図日本(国土地理院)を加工して作成)
popが100000以上の地物が表示される。(地球地図日本(国土地理院)を加工して作成)

様々なフィルタ式

2つ以上の条件すべてに合致する地物を表示する(AND検索)

「namがHokkai Do」かつ「popが100,000以上」というように2つ以上の条件式でフィルタをかける際には、それぞれの式を「AND」で結びます。

"nam" = 'Hokkai Do' AND "pop" >= 100000
ANDを使ったフィルタ式
ANDを使ったフィルタ式

フィルタ結果

namがHokkai Doでかつ、popが100000以上の地物が表示される。(地球地図日本(国土地理院)を加工して作成)
namがHokkai Doでかつ、popが100000以上の地物が表示される。(地球地図日本(国土地理院)を加工して作成)

どちらか一方の条件が合致する地物を表示する(OR検索)

複数の条件のうち、どれか1つでも条件に合致する地物を表示したい場合は「OR」を使用します。

"nam" = 'Hokkai Do' OR "nam" = 'Osaka Fu'
ORを使ったフィルタ式
ORを使ったフィルタ式

フィルタ結果

Hokkai DoとOsaka Fuのみが表示される。(地球地図日本(国土地理院)を加工して作成)
Hokkai DoとOsaka Fuのみが表示される。(地球地図日本(国土地理院)を加工して作成)

複数の値を一度に指定する(IN、NOT IN)

「nam」がHokkai Do、Aomori Ken、Akita Ken、Iwate Kenの値の地物を表示したい場合、それらを「OR」で繋げて、以下のように記述することも可能です。

"nam" = 'Hokkai Do' OR "nam" = 'Aomori Ken' OR "nam" = 'Akita Ken' OR "nam" = 'Iwate Ken'

しかし、これでは式がとても長くなってしまいますので、複数の値の地物を表示したい時は「IN」を使用して、以下のように記載しましょう。

"nam" IN ('Hokkai Do','Aomori Ken','Akita Ken','Iwate Ken')

フィルタ結果

Hokkai Do、Aomori Ken、Akita Ken、Iwate Kenのみが表示される。(地球地図日本(国土地理院)を加工して作成)
Hokkai Do、Aomori Ken、Akita Ken、Iwate Kenのみが表示される。(地球地図日本(国土地理院)を加工して作成)

「NOT IN」を使用すると、指定した値以外の地物を返します。

"nam" NOT IN  ('Hokkai Do','Aomori Ken','Akita Ken','Iwate Ken')

フィルタ結果

Hokkai Do、Aomori Ken、Akita Ken、Iwate Ken以外が表示される。(地球地図日本(国土地理院)を加工して作成)
Hokkai Do、Aomori Ken、Akita Ken、Iwate Ken以外が表示される。(地球地図日本(国土地理院)を加工して作成)

指定した条件以外の地物を表示する(NOT、!=、<>)

「nam」がHokkai Doなどの特定の条件以外の地物を表示したい場合などは「NOT」や「!=」、「<>」を使用して式を作ることができます。

「NOT」を使用した場合。

NOT "nam" = 'Hokkai Do'

「!=」を使用した場合。

"nam" != 'Hokkai Do'

「<>」を使用した場合。

"nam" <> 'Hokkai Do'

いずれも同じ結果になります。

フィルタ結果

Hokkai Do以外が表示される。(地球地図日本(国土地理院)を加工して作成)
Hokkai Do以外が表示される。(地球地図日本(国土地理院)を加工して作成)

あいまいな文字検索(LIKE)

ある文字を含む地物を検索するときは「LIKE」を使用します。そして、ワイルドカード「_(アンダースコア)」もしくは「%」を組み合わせて、条件を指定します。

「_」は不特定の1文字の役割をします。

"nam" LIKE 'Fuku_ Ken'

上記の式では「Fuku○ Ken」となっている地物を返しますので、この場合Fukui Kenのみが該当します。

フィルタ結果

Fukui Kenのみが表示される。(地球地図日本(国土地理院)を加工して作成)
Fukui Kenのみが表示される。(地球地図日本(国土地理院)を加工して作成)

アンダースコアの数だけ不特定の文字が入る条件となるので、アンダースコア2つ使用して以下のように記述すると、Toyama Kenのみが該当して、Wakayama KenやOkayama Kenは該当しません。

"nam" LIKE '__yama Ken'

フィルタ結果

Toyama Kenのみが表示される。(地球地図日本(国土地理院)を加工して作成)
Toyama Kenのみが表示される。(地球地図日本(国土地理院)を加工して作成)

文字数に限らず不特定の文字を指定する場合は「%」を使用して、以下のように記述すると「yama Ken」の前に何文字かの文字がついている地物を返します。

"nam" LIKE '%yama Ken'

フィルタ結果

Toyama Kenのほか、Okayama KenやWakayama Kenも表示される。(地球地図日本(国土地理院)を加工して作成)
Toyama Kenのほか、Okayama KenやWakayama Kenも表示される。(地球地図日本(国土地理院)を加工して作成)

「%」を文字の後ろにつけると、その文字から始まる地物を返します。以下の式では「Yama」から始まる地物を返します。

"nam" LIKE 'Yama%'

フィルタ結果

Yamagata Ken、Yamanashi Ken、Yamaguchi Kenが表示される。(地球地図日本(国土地理院)を加工して作成)
Yamagata Ken、Yamanashi Ken、Yamaguchi Kenが表示される。(地球地図日本(国土地理院)を加工して作成)

「%」を文字の前後につけると、その文字がどこかに入っている地物を返します。以下の式では、文字列のどこかに「shima」が含まれる地物を返すので、Fukushima Ken、Hiroshima Ken、Tokushima Ken、Kagoshima Kenが返ってきます。

"nam" LIKE '%shima%'

フィルタ結果

Fukushima Ken、Hiroshima Ken、Tokushima Ken、Kagoshima Kenが表示される。(地球地図日本(国土地理院)を加工して作成)
Fukushima Ken、Hiroshima Ken、Tokushima Ken、Kagoshima Kenが表示される。(地球地図日本(国土地理院)を加工して作成)

大文字、小文字を区別しないあいまいな文字検索(ILIKE)

「ILIKE」は「LIKE」と使い方は同じですが、大文字と小文字の区別はされません。以下の式では、大文字・小文字に関わらず「shima」、「SHIMA」「Shima」などという文字が入っている地物を返しますので「Shimane Ken」も検索結果に含まれます。

"nam" ILIKE '%shima%'

フィルタ結果

Fukushima Ken、Shimane Ken、Hiroshima Ken、Tokushima Ken、Kagoshima Kenが表示される。(地球地図日本(国土地理院)を加工して作成)
Fukushima Ken、Shimane Ken、Hiroshima Ken、Tokushima Ken、Kagoshima Kenが表示される。(地球地図日本(国土地理院)を加工して作成)

よくある質問

[すべて]をクリックしても値の候補がすべて表示されない

[すべて]をクリックして表示される値の候補は、現在有効になっているフィルタによって絞り込まれた地物の候補を表示します。そのため、フィルタがかかっていると、レイヤの全ての値は表示されません。フィルタがかかっている状態で、全ての地物から値の候補を取得するには、[フィルタなしレイヤを使用]にチェックを入れて[すべて]をクリックしてください。

「値」に全ての候補が表示されない時は「フィルタなしレイヤを使用」にチェックを入れる
「値」に全ての候補が表示されない時は「フィルタなしレイヤを使用」にチェックを入れる

フィルタ式を保存して再利用したい

フィルタの設定画面で、「保存」をクリックすると、入力中のフィルタ式を保存することができます。

保存しているフィルタ式を開くときは「読み込む」から可能です。

フィルタをかけたら地物がなにも表示されなくなった

フィルタ式を入力して[OK]をクリックすると、全ての地物が表示されなくなってしまったということはないでしょうか。おそらく入力したフィルタ式の条件に該当する地物がないか、フィルタ式が間違っていることが考えられます。

[OK]をクリックする前に[テスト]をクリックすると、フィルタ式に間違いがないか、フィルタ式に該当する地物が何件ヒットするかを確認することができます。

入力したフィルタ式を検証する際にテストを活用してみると良いでしょう。

テスト実行時。この場合、フィルタ式に該当する地物は0件である。
テスト実行時。この場合、フィルタ式に該当する地物は0件である。

おわりに

フィルタで活用できる様々な式を紹介していきました。フィルタを活用して効率的に目的のデータを表示してみましょう。

この記事を書いた人
QGIS LAB編集部
QGIS LAB編集部

QGIS LABは、オープンソースのGISソフトウェア「QGIS」に関する総合情報メディアです。「位置と情報で世界を変える」をコンセプトに、位置情報で世界を拓くための知識と技術をお届けします。

関連する記事