Stai visualizzando solo le funzionalità selezionate sulla mappa in QGIS?


30

Non sono sicuro che questa opzione sia mai esistita, ma la nuova versione di QGIS nasconde molte cose da qualche altra parte e questo sembra così semplice che sono abbastanza convinto che fosse possibile farlo prima.

Ho un set di dati abbastanza grande con tracce di navi. Ora voglio analizzare le singole tracce della nave (fatte dal layer punto con points2one) - tuttavia, è così affollata che è difficile guardare le singole tracce. Non voglio salvare ogni singola traccia come nuovo livello, quindi mi chiedo se è possibile selezionare una traccia nella tabella degli attributi e visualizzare solo quella sulla mappa / nascondere le altre?

Risposte:


33

La risposta di Kadeem eviterà che le tue funzionalità siano visibili, ma saranno comunque presenti, se stai cercando di identificare una singola rotta di una nave puoi fare clic su una caratteristica invisibile per errore. Ciò che sembra che devi fare è definire il tuo livello in modo che sia come se quelle funzionalità non esistessero. In ArcGIS questo di solito viene fatto usando una query di definizione, in QGIS il comando equivalente è il sottoinsieme di livelli. Vai alle Proprietà del tuo livello, sotto la scheda Generale, in fondo alla casella Sottoinsieme funzioni, fai clic sul pulsante sotto di essa per visualizzare il Generatore di query:

inserisci qui la descrizione dell'immagine

Query Builder ti aiuterà a creare una query SQL per definire quali funzionalità nel tuo livello dovrebbero essere effettivamente visualizzate nel tuo progetto. Tutte le funzionalità non restituite dalla query vengono rese invisibili, non solo visivamente ma interamente (non vengono eliminate dai dati, ovviamente, vengono definite fuori dall'esistenza fino a quando non si rimuove la query del sottoinsieme di livelli).


Dan, grazie mille !!! Questo è quello che stavo cercando, un po 'più complicato di quanto sperassi, ma fa il trucco! Molto utile, grazie!
Kristina,

Questa è la risposta. Bel consiglio Dan!
kadéem,

Strano. Qualche tempo fa l'ho fatto e ha funzionato. Ora voglio farlo di nuovo su un altro livello e la casella del sottoinsieme di funzioni è disattivata, così come il pulsante di QueryBuilder! Qualche suggerimento???
Patrick Van Den Noortgaete,

Risolto, ma non è chiaro il perché. Ho salvato le modifiche apportate e quindi il pulsante QueryBuilder è diventato disponibile ...
Patrick Van Den Noortgaete,

1
@SimoA. Se i dati sono in Excel, è possibile filtrare lì, aggiungere un nuovo campo in cui si converte VALUEa 'VALUE',, quindi copiare e incollare quel campo nella casella di ricerca utilizzando una query IN.
Dan C

15

Questo è ora possibile usando solo selezioni e una simbologia basata su regole.

Ciò richiede il plug-in Expression Plus (per QGIS 2.x. 3.0 ha la funzionalità integrata).

Crea una simbologia basata su regole con il filtro di:

QGIS 3.0+ (dal thequerist nei commenti):

is_selected()

QGIS 2.12-2.18:

isselected( @layer_name )

O QGIS 2.8:

isselected( 'ACTUAL_NAME_OF_LAYER' )

Ora verranno mostrate solo le funzionalità selezionate che soddisfano questa regola.

Puoi anche avere una regola ELSE per tutte le funzionalità non selezionate.

inserisci qui la descrizione dell'immagine


1
Questo è esattamente quello che stavo cercando - grazie per questa risposta
geobar

HeikkiVesanto, dove inserisco questo filtro?
GIS il

Ho aggiunto una foto.
Heikki Vesanto,

1
Utilizzando QGIS 2.18.14 e l'espressione che ha funzionato è stata selezionata ('layer_name'). L'uso di (@layer_name) ha restituito 0 risultati.
Techie_Gus,

2
In QGIS 3 e versioni successive questa funzione è integrata. Puoi trovarla sotto Record and Attributesa Expression String Builder. Inoltre, non è più necessario inserire il nome del livello e non dimenticare di sottolineare tra ise selected. Ecco un esempio per QGIS 3 e superiori: is_selected().
thequerist,

12

Kristina, suppongo che nella tua tabella sia presente un attributo che ti consente di identificare una singola traccia? Per esempio:

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

Se apri la tabella degli attributi, puoi trovare un simbolo epsilon (nella figura sotto, la quarta).

inserisci qui la descrizione dell'immagine

Questo ti permette di digitare un'espressione; per esempio:

"track_id" = 24

Quando confermi, vengono selezionate tutte le righe che soddisfano la tua espressione (vale a dire: tutti i punti che appartengono alla traccia con track_idX). Se poi fai clic sul pulsante lente d'ingrandimento, QGIS ingrandisce la tua selezione nell'area di disegno della mappa. Le funzioni selezionate (punti nel tuo caso) sono evidenziate.


Quello che puoi fare è applicare uno stile basato su regole. Come tale, puoi mostrare una singola traccia della nave usando un dato simbolo o marker e 'non mostrare' tutti gli altri punti dando loro un marker 'invisibile'. Lo screenshot (parte da Proprietà livello) di seguito spiega come funziona:

  • Regola 1: applica il marker dato a tutti i punti con un valore di 24 per track_id
  • Regola 2: applica il marcatore dato (un cerchio con riempimento bianco e bordo bianco ...) a tutti i punti che non soddisfano un track_idvalore di 24

inserisci qui la descrizione dell'immagine

In effetti tutti i punti sono ancora lì (renderli bianchi non renderà il rendering che richiede meno tempo) ma almeno i tuoi occhi possono rilassarsi!


Grazie mille per la tua risposta Kadeem! Sono a conoscenza della funzione di selezione e funziona bene, tuttavia ho letteralmente 500.000 punti in una piccola area e solo evidenziare le tracce che sto cercando non è abbastanza, la mappa è ancora troppo affollata e confusa. Sai se esiste la possibilità di bloccare tutti i punti non selezionati o qualcosa del genere?
Kristina,

2
Ho modificato la mia risposta con un'altra opzione sotto la riga. Immagino che questo ti aiuterà.
kadéem,

Kadeem, questo è così semplice ma efficace - ottima idea, grazie mille!
Kristina,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.