段階的なシンボル体系でNULL値を持つフィーチャをシンボル化する方法は?


15

ポリゴンフィーチャデータセットと、属性をコロプレスマップとしてシンボル化するためにQGIS内で(1対1)結合する別のテーブルの属性があります。ただし、数値属性のテーブルにすべてのポリゴンフィールドに一致するフィールドがあるわけではないため、段階的なシンボルを生成するときにnull値がいくつかあります。

私の研究から、この状況で最も一般的なアドバイスは、デフォルトのシンボルを定義するポリゴンデータセット(またはその他の背景)のコピーを含めることです。これは、null値が目盛り記号で分類されていないため、「下」に表示されるため機能します。まさにこれの画像を添付しました。濃い灰色のフィーチャは、結合テーブル(mb_percentile_isochrones_all)には存在しませんが、境界ポリゴンテーブル(mb2013_wgtn)には存在します。したがってmb2013_wgtn、「データなし」機能を表示するには、テーブルの2つのインスタンスが必要です。

ここに画像の説明を入力してください

しかし、これは私にはエレガントではないようです。より直感的なのは、ヌル値シンボルを定義することです。おそらくこれは、現在存在しているものと一致するように完全に透過的である可能性があります。または、ユーザーが望むものであれば、ある種のミュートされたグレーになります。ポイントは、現時点では、null値のシンボルを処理するために、コンテンツに2つの異なるレイヤーが必要です。つまり、すべてのフィーチャのシンボルを同時に変更するには(たとえば、すべての境界線の幅を広げたい場合)、これを2回処理する必要があります。 nullシンボルを処理する「背景」レイヤーに対して1回。

QGIS(2.6.1)で、段階的シンボルに使用される同じレイヤーの「コピー」を使用せずに「null」値シンボルを定義することは可能ですか?


同じレイヤーを異なるシンボルで2回持つことの何が問題になっていますか?おそらく、属性フィルタリングを使用して、識別またはジオプロセシングで混乱が生じている場合に両方のレイヤーにポリゴンが表示されないようにします。一致しないフィーチャの結合値は「null」ですか、またはテーブルに表示されない値がありますか?
マイケルスティムソン

1
1.問題:値とnull(境界線の色など)を使用してフィーチャの共通プロパティを制御する場合、2回実行されています。これにより、それらの1つを変更することを忘れたり、わずかな間違い(たとえば、アウトラインのグレーの濃淡)を非常に簡単に行うことができます。2.ジオプロセシングの混乱に関する問題はなく、シンボルのみ:null同じレイヤーでフィーチャをシンボル表示したい。3.一致しないフィーチャはnull、結合値にあります(結合後のQGIS属性テーブルに表示されます)。
alphabetasoup

また、このシンボルは別のレイヤーに由来するため、「データなし」のサンプルを含めるように凡例を作成する場合も難しくなります。
alphabetasoup

2
あなたが正しい。グラデーションシンボルダイアログで「このようなNULL機能を表示する」を選択する場所はありません。NULL値を持つ行は単に表示されません。
マイケルスティムソン

回答:


17

@ MichaelMiles-Stimsonが既に述べたように、NULL機能をシンボル化する方法はないようです。ただし、QGISがNULL値を0などの整数として処理するようにフィルターを作成する代替手段があります。それぞれ特定の値を持つ3つの単純なポリゴンを作成した例を含めました。

3つのポリゴン

属性テーブル

以下は、次のコマンドで使用した段階的シンボルです。

case when "Some_Value" IS NULL then 0 else "Some_Value" end

卒業シンボル

お役に立てれば!


これは非常に有用であり、おそらくこれを実践するでしょう。予想される問題は、0がデータセットで意味のある値であるということです。おそらく-1か何かを使用できます。しかし、どちらの場合でも、これにより、クラスブレークの自動識別がやや扱いにくくなります。おそらく、回避策が理想的ではないことが明らかになったので、この機能のリクエストを送信する必要があります。
alphabetasoup

はい、NULL値を含めることは非常に便利です。かなりの回避策ではありませんが、機能のリクエストをいつでも送信でき、次のバージョンで利用可能になることを願っています:)
ジョセフ

6

私はそれが答えられたことを知っていますが、別のオプションを与えるだけです:

フィールドをフィルターや値なしでそのまま残すことができます(CATEGORIZEDまたはRULE BASEDで機能することは知っています):

http://docs.qgis.org/2.0/uk/docs/training_manual/vector_classification/classification.html

ここに画像の説明を入力してください

QGIS 2.10を使用していますが、動作します。


問題を解決または回避するためのより多くの方法を知っていることは常に素晴らしいことです!+1
ジョセフ

1
2.6からのこの改善を見ることをお勧めしますか?結合されたテーブルからnull値が取得されたときに機能することを確認できますか?
alphabetasoup

1
しかし、これに関するいくつかのメモ。ルールベースのシンボル体系の空白またはNULLシンボル体系は、すべての機能に適用されます。ルールは上から下に適用されるため、別のルールがオーバーレイされる場合がありますが、NULLも存在します。強力なシンボル体系の場合は重要です。また、最初にカテゴリ化されたシンボルまたは
グラデーション

@Vesanto、私はそれを得たかどうか、またはそれが問題であるかどうかを知りません。私の場合、元々Z値がなかった(Z = NULL)等高線で作成されたSHPにZ値を追加しています。NULL値を持つ機能を赤に、任意の値を持つ機能を黒に設定しました。編集時に、Z値を設定するとすぐに、フィーチャ(等高線)が赤から黒に変わります。これにより、Z値をまだ設定していないものがわかります。
マルコスSai藤

@Marcosそれはあなたのケースでは問題になりません。しかし、最初は線が赤だったとしましょう。もうヌルではなくなったら、非表示にしたいと思います。それは機能しません。
-HeikkiVesanto

4

他のユーザーが言ったことと同様に、最良のオプションはルールベースのシンボルを使用することです。ルールを手動で作成しないようにするには:

  1. シンボルの種類を変更し卒業
  2. 通常どおり、シンボル列、色、間隔などを定義します null値が表示されていない段階的なシンボル
  3. シンボルタイプをGradatedからRule-basedに変更します。前のステップで定義されたシンボルは引き継がれます。[シンボルの追加]ボタンをクリックし、[ ELSE ]を選択します。必要に応じてスタイルを変更します。このELSEシンボルクラスは、null値を含め、まだシンボル化されていない値をすべてキャッチします。 ELSEキャッチオールシンボルの追加
  4. OKをクリックします。Null値がシンボル化されます。 ヌル値を含む段階的な記号

(QGIS 3.6.0でテスト済み)


シンプルで便利。ありがとう。QGISには、段階的分類の値を除外するオプションを用意することをお勧めします。-1、-999などのフラグが付けられたnodata値で分類しようとすると、混乱が生じました(QGIS 3.14 LTRを使用)。幸いなことに、QGISは少なくともGradatedシンボルを実行するときは自動的にnull値を無視します。
イヴァンサンティアゴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.