QGISのマップに選択したフィーチャのみを表示しますか?


30

このオプションがこれまで存在したかどうかはわかりませんが、新しいQGISバージョンは他の場所に多くのことを隠しており、これはとても簡単なようで、以前はこれを行うことができたと確信しています。

船舶追跡を含む非常に大きなデータセットがあります。個々の船の航跡(points2oneのポイントレイヤーから作成)を分析したいのですが、非常に混雑しているため、個々の航跡を見るのは困難です。各単一トラックを新しいレイヤーとして保存したくないので、属性テーブルで1つのトラックを選択し、そのトラックのみをマップに表示したり、他のトラックを非表示にしたりすることは可能でしょうか?

回答:


33

Kadeemの答えは、あなたの機能が表示されないようにしますが、それらはまだ存在します。個々の船の航跡を特定しようとすると、誤って非表示の機能をクリックする可能性があります。あなたがする必要があると思われるのは、それらの機能が存在しないかのようにレイヤーを定義することです。ArcGISでは、これは通常、定義クエリを使用して行われます。QGISでは、同等のコマンドはレイヤーサブセットです。レイヤーの[プロパティ]に移動し、[全般]タブの下部にある[フィーチャサブセット]ボックスの下にあるボタンをクリックして、クエリビルダーを表示します。

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

クエリビルダーは、SQLクエリを作成して、レイヤー内のどの機能を実際にプロジェクトに表示するかを定義するのに役立ちます。クエリによって返されないフィーチャは、視覚的にだけでなく完全に非表示になります(データから削除されるわけではありません。もちろん、レイヤサブセットクエリを削除するまで存在しないと定義されます)。


ダン、どうもありがとう!これは私が探していたもので、思っていたより少し複雑ですが、トリックをしています!とても助かります、ありがとう!
クリスティーナ14

それが答えです。ナイスチップダン!
kadéem

奇妙な。しばらく前に私はこれをやったが、うまくいった。別のレイヤーでもう一度やりたいと思うと、機能サブセットボックスがグレー表示され、QueryBuilderのボタンも!なにか提案を???
パトリックヴァンデンノルトゲーテ

解決しましたが、理由は明らかではありません。私が行った変更を保存し、その後QueryBuilderボタン...利用できるようになった
パトリック・ヴァン・デンNoortgaete

1
@SimoA。データがExcelにある場合、そこでデータをフィルタリングVALUE'VALUE',、変換する新しいフィールドを追加してから、INクエリを使用してそのフィールドをコピーしてクエリボックスに貼り付けることができます。
ダンC

15

これは、選択とルールベースのシンボル体系のみを使用して可能になりました。

これには、Expression Plusプラグインが必要です(QGIS 2.x. 3.0には機能が組み込まれています)。

次のフィルターを使用して、ルールベースのシンボルを作成します。

QGIS 3.0+(コメントのthequeristから):

is_selected()

QGIS 2.12-2.18:

isselected( @layer_name )

またはQGIS 2.8:

isselected( 'ACTUAL_NAME_OF_LAYER' )

これで、このルールを満たす選択された機能のみが表示されます。

選択されていないすべての機能に対してELSEルールを設定することもできます。

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


1
これはまさに私が探していたものです-この答えを
ありがとう-geobar

HeikkiVesanto、このフィルターを挿入する場所は?
-newGIS

写真を追加しました。
-HeikkiVesanto

1
QGIS 2.18.14を使用し、機能する式はselected( 'layer_name')です。(@layer_name)を使用すると、0個の結果が返されました。
Techie_Gus

2
QGIS 3以上では、この機能を内蔵しています。あなたは下でそれを見つけることができますRecord and Attributesの中でExpression String Builder。また、レイヤー名を入力する必要がなくなり、isとの間のアンダースコアを忘れないでくださいselected。以下はQGIS 3以上の例ですis_selected()
-thequerist

12

クリスティーナ、私はあなたのテーブルにあなたが単一のトラックを識別できる属性があると思いますか?例えば:

  point_id  |  track_id
------------+------------
     1      |     15
     2      |     15
     5      |     24
     6      |     24
     7      |     24

属性テーブルを開くと、イプシロンシンボルを見つけることができます(下の図では4番目のシンボル)。

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

これにより、式を入力できます。例えば:

"track_id" = 24

確認すると、式を満たすすべての行(つまり、track_idX を持つトラックに属するすべてのポイント)が選択されます。その後、拡大ボタンをクリックすると、QGISはマップキャンバスの選択にズームします。選択した機能(ケースのポイント)が強調表示されます。


できることは、ルールベースのスタイルを適用することです。そのため、特定のシンボルまたはマーカーを使用して個々の船舶航跡を表示し、「非表示」マーカーを指定することで他のすべてのポイントを「表示しない」ことができます。以下のスクリーンショット(レイヤープロパティの一部)は、その仕組みを説明しています。

  • ルール1:値が24のすべてのポイントに特定のマーカーを適用します track_id
  • ルール2:track_id値24を満たさないすべてのポイントに、指定されたマーカー(白い塗りつぶしと白い境界線のある円...)を適用します

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

実際、すべてのポイントはまだそこにあります(それらを白にしてもレンダリングにかかる​​時間は短くなりません)が、少なくとも目はリラックスできます!


答えてくれてありがとうKadeem!私は選択機能を知っていますが、これはうまく機能しますが、小さなエリアに文字通り500,000ポイントあり、探しているトラックをハイライトするだけでは十分ではなく、マップはまだ混雑していて混乱しています。選択されていないすべてのポイントまたはそのようなものをブロックする可能性があるかどうか知っていますか?
クリスティーナ

2
行の下にある別のオプションで回答を編集しました。これが役に立つと思います。
kadéem

Kadeem、これはとてもシンプルですが効果的です-素晴らしいアイデア、ありがとう!
クリスティーナ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.