Afficher uniquement les entités sélectionnées sur la carte dans QGIS?


30

Je ne sais pas si cette option a déjà existé, mais la nouvelle version de QGIS cache beaucoup de choses ailleurs et cela semble si simple que je suis un peu convaincu qu'il était possible de le faire auparavant.

J'ai un assez grand ensemble de données avec des traces de navires. Je veux maintenant analyser les traces individuelles des navires (faites à partir de la couche de points avec points2one) - cependant, il est tellement encombré qu'il est difficile de regarder les traces individuelles. Je ne veux pas enregistrer chaque piste en tant que nouvelle couche, je me demande donc s'il est possible de sélectionner une piste dans la table attributaire et d'afficher uniquement celle-ci sur la carte / masquer les autres?

Réponses:


33

La réponse de Kadeem empêchera vos fonctionnalités d'être visibles, mais elles seront toujours présentes, si vous essayez d'identifier une trace de navire individuelle, vous pouvez cliquer sur une fonctionnalité invisible par erreur. Il semble que vous deviez faire est de définir votre couche de manière à ce que ces fonctionnalités n'existent pas. Dans ArcGIS, cela se fait généralement à l'aide d'une requête de définition, dans QGIS, la commande équivalente est le sous-ensemble de couches. Accédez aux propriétés de votre calque, sous l'onglet Général, en bas se trouve la boîte de sous-ensemble de fonctionnalités, cliquez sur le bouton en dessous pour faire apparaître le générateur de requêtes:

entrez la description de l'image ici

Le générateur de requêtes vous aidera à créer une requête SQL pour définir les fonctionnalités de votre couche qui doivent réellement être affichées dans votre projet. Toutes les fonctionnalités non renvoyées par la requête sont rendues invisibles, non seulement visuellement mais entièrement (elles ne sont pas supprimées de vos données, bien sûr, elles sont simplement définies de manière inexistante jusqu'à ce que vous supprimiez la requête de sous-ensemble de couches).


Dan, merci beaucoup !!! C'est ce que je cherchais, un peu plus compliqué que je l'espérais mais fait l'affaire! Très utile, merci!
Kristina

C'est idd la réponse. Bon conseil Dan!
kadéem

Bizarre. Il y a quelque temps, je l'ai fait et cela a fonctionné. Maintenant, je veux le faire à nouveau sur un autre calque et la zone Feature Subset est grisée, ainsi que le bouton de QueryBuilder! Toute suggestion???
Patrick Van Den Noortgaete,

Résolu, mais pas clair pourquoi. J'ai enregistré les modifications que j'ai apportées, puis le bouton QueryBuilder est devenu disponible ...
Patrick Van Den Noortgaete

1
@SimoA. Si vos données sont dans Excel, vous pouvez filtrer là, ajouter un nouveau champ où vous convertir VALUEà 'VALUE',, puis copier et coller ce champ dans la zone de requête à l' aide d' une requête IN.
Dan C

16

Cela est désormais possible en utilisant uniquement des sélections et une symbologie basée sur des règles.

Cela nécessite le plugin Expression Plus (pour QGIS 2.x. 3.0 a la fonctionnalité intégrée).

Créez une symbologie basée sur des règles avec le filtre de:

QGIS 3.0+ (de thequerist dans les commentaires):

is_selected()

QGIS 2.12-2.18:

isselected( @layer_name )

Ou QGIS 2.8:

isselected( 'ACTUAL_NAME_OF_LAYER' )

Désormais, seules les fonctionnalités sélectionnées répondant à cette règle seront affichées.

Vous pouvez également avoir une règle ELSE pour toutes les fonctionnalités non sélectionnées.

entrez la description de l'image ici


1
C'est exactement ce que je cherchais - merci pour cette réponse
geobar

HeikkiVesanto, où j'insère ce filtre?
newGIS

J'ai ajouté une photo.
HeikkiVesanto

1
L'utilisation de QGIS 2.18.14 et de l'expression qui a fonctionné est sélectionnée ('nom_couche'). L'utilisation de (@layer_name) a renvoyé 0 résultat.
Techie_Gus

2
Dans QGIS 3 et supérieur, cette fonctionnalité est intégrée. Vous pouvez la trouver sous Record and Attributesdans le Expression String Builder. De plus, vous n'avez plus besoin de mettre le nom du calque et n'oubliez pas de souligner entre iset selected. Voici un exemple pour QGIS 3 et au- dessus: is_selected().
thequerist

12

Kristina, je suppose qu'il y a un attribut dans votre table qui vous permet d'identifier une seule piste? Par exemple:

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

Si vous ouvrez la table attributaire, vous pouvez trouver un symbole epsilon (dans la figure ci-dessous, le 4ème).

entrez la description de l'image ici

Cela vous permet de taper une expression; par exemple:

"track_id" = 24

Lorsque vous confirmez, toutes les lignes qui satisfont votre expression (c'est-à-dire: tous les points qui appartiennent à la piste avec track_idX) sont sélectionnées. Si vous cliquez ensuite sur le bouton de la loupe, QGIS effectue un zoom sur votre sélection dans le canevas de carte. Les fonctions sélectionnées (points dans votre cas) sont mises en évidence.


Ce que vous pouvez faire, c'est appliquer un style basé sur des règles. En tant que tel, vous pouvez afficher une trace de navire individuelle en utilisant un symbole ou un marqueur donné, et «ne pas afficher» tous les autres points en leur donnant un marqueur «invisible». La capture d'écran (partie des propriétés des calques) ci-dessous explique comment cela fonctionne:

  • Règle 1: appliquer le marqueur donné à tous les points ayant une valeur de 24 pour track_id
  • Règle 2: appliquer le marqueur donné (un cercle avec un remplissage blanc et une bordure blanche ...) à tous les points qui ne satisfont pas une track_idvaleur de 24

entrez la description de l'image ici

En fait, tous les points sont toujours là (les rendre blancs ne rendra pas le rendu moins long) mais au moins vos yeux peuvent se détendre!


Merci beaucoup pour votre réponse Kadeem! Je connais la fonction de sélection et cela fonctionne bien, cependant, j'ai littéralement 500 000 points dans une petite zone et il ne suffit pas de mettre en évidence les pistes que je recherche, la carte est encore trop encombrée et déroutante. Savez-vous s'il existe une possibilité de bloquer tous les points non sélectionnés ou quelque chose comme ça?
Kristina

2
J'ai modifié ma réponse avec une autre option sous la ligne. Je suppose que cela vous aidera.
kadéem

Kadeem, c'est tellement simple mais efficace - bonne idée, merci beaucoup!
Kristina
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.