Come simboleggiare le funzionalità con valori NULL nella simbologia graduata?


15

Ho un set di dati di funzionalità poligonali e un attributo da una tabella diversa a cui unisco (uno a uno) all'interno di QGIS per simboleggiare gli attributi come una mappa coropletica. Tuttavia, non tutti i campi poligonali hanno un campo corrispondente nella tabella degli attributi numerici, quindi ci sono alcuni valori nulli quando si produce la simbologia graduata.

Dalla mia ricerca, il consiglio più comune in questa situazione è di includere una copia del set di dati poligonali (o qualche altro background) che definisce una simbologia predefinita. Questo funziona perché i valori null non sono classificati nella simbologia graduata, quindi è possibile vederli "sotto". Ho allegato un'immagine di questo esattamente. Le caratteristiche di grigio scuro non esistono nella tabella di join ( mb_percentile_isochrones_all), ma esistono nella tabella dei poligoni di confine ( mb2013_wgtn). Quindi ho bisogno di due istanze della mb2013_wgtntabella per mostrare le funzionalità "nessun dato".

inserisci qui la descrizione dell'immagine

Tuttavia, questo non mi sembra elegante. Molto più intuitivo sarebbe definire un simbolo di valore nullo. Forse questo potrebbe essere perfettamente trasparente per essere coerente con ciò che esiste attualmente, o forse sarebbe una sorta di grigio disattivato, qualunque cosa l'utente desideri. Il punto è che al momento sono necessari due diversi livelli nei contenuti per gestire la simbologia dei valori null. Ciò significa che per modificare contemporaneamente la simbologia di tutte le funzionalità (ad esempio, se si desidera aumentare la larghezza di tutti i bordi), è necessario gestirla due volte: una volta nelle proprietà della funzione con la simbologia graduata, e una volta per il livello "sfondo" che gestisce il simbolo null.

È possibile definire un simbolo di valore "null" senza utilizzare una "copia" dello stesso layer utilizzato per la simbologia graduata, in QGIS (2.6.1)?


Cosa c'è di sbagliato nell'avere due volte lo stesso layer con simbologie diverse? Forse usa il filtro degli attributi in modo che nessun poligono appaia in entrambi i livelli se stai ottenendo confusione nell'identificazione o nel geoprocessing. Le funzioni senza pari sono 'nulle' nel loro valore di join o hanno un valore che non appare nella tabella?
Michael Stimson,

1
1. Problema: se voglio controllare le proprietà comuni delle funzioni con un valore e con un valore nullo (ad es. Colore del bordo), è stato eseguito due volte. Questo rende molto più facile dimenticare di cambiarne uno o fare un leggero errore (ad es. Tonalità di grigio errata per il contorno). 2. Nessun problema di confusione per il geoprocessing, solo la simbologia: voglio simboleggiare la nullfunzionalità nello stesso livello. 3. Le caratteristiche senza pari sono nullnel loro valore di join (come si vede nella tabella degli attributi QGIS post-join).
alphabetasoup,

Inoltre, quando si crea una legenda è più difficile includere un campione "nessun dato", poiché questo simbolo verrebbe da un livello diverso.
alphabetasoup,

2
Hai ragione. Non è possibile selezionare "Mostra funzioni NULL come questa" nella finestra di dialogo dei simboli graduati, le righe con valori NULL semplicemente non vengono visualizzate.
Michael Stimson,

Risposte:


17

Come già accennato da @ MichaelMiles-Stimson, non sembra esserci un modo per simboleggiare le funzionalità NULL . Tuttavia, esiste un'alternativa in base alla quale si crea un filtro per forzare QGIS a trattare i valori NULL come un numero intero come 0. Ho incluso un esempio in cui ho creato 3 poligoni semplici ciascuno con un determinato valore:

3 poligoni

Tabella degli attributi

Ecco la simbologia graduata che ho usato con il seguente comando:

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

Simbologia graduata

Spero che sia di aiuto!


Questo è abbastanza utile e probabilmente lo metterò in pratica. Il problema che prevedo è che 0 è un valore significativo nel mio set di dati. Probabilmente potrei usare -1 o qualcosa del genere. Ma in entrambi i casi ciò renderebbe l'identificazione automatica delle interruzioni di classe leggermente ingombrante. Forse dovrei inviare una richiesta di funzionalità per questo dato che ora è chiaro che le soluzioni alternative sono tutt'altro che ideali.
alphabetasoup,

Sì, inclusi i NULLvalori potrebbero essere abbastanza utili. Non è una soluzione alternativa, ma puoi sempre inviare una richiesta di funzionalità e sperare che sia disponibile nella prossima versione :)
Joseph

6

So che è stata data una risposta, ma solo per dare un'altra opzione:

Puoi semplicemente lasciare il campo senza filtro o valore (so che funziona per CATEGORIZZATO o BASATO SULLE REGOLE):

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

inserisci qui la descrizione dell'immagine

Sto usando QGIS 2.10 e funziona.


Sempre bello conoscere più metodi per risolvere o aggirare un problema! +1
Giuseppe,

1
Incoraggiante vedere questo miglioramento dal 2.6, giusto? Puoi confermare che funziona quando i valori null provengono da una tabella unita?
alphabetasoup,

1
Un paio di note su questo però. La simbologia vuota o NULL in una simbologia basata su regole verrà applicata a TUTTE le funzionalità. Le regole vengono applicate dall'alto verso il basso, quindi può essere sovrapposta da un'altra regola, ma anche il NULL sarà presente. Importante se si tratta di una simbologia forte. Puoi anche "generare" le tue regole creandole prima nella simbologia categorizzata o graduata e poi passando a Basato su regole /
HeikkiVesanto

@Vesanto, non so se l'ho preso o se è un problema. Nel mio caso, sto aggiungendo valori Z a un SHP fatto di linee di contorno, che originariamente non aveva valori Z (Z = NULL). Ho impostato le funzioni con i valori NULL su rosso e quelle con qualsiasi valore su nero. Durante la modifica, non appena imposto un valore Z, la funzione (la linea di contorno) passa da rosso a nero, in questo modo conosco quelli che devo ancora impostare il valore Z.
Marcos Saito,

@Marcos non sarà un problema nel tuo caso. Ma supponiamo che la linea fosse rossa all'inizio, e volevi renderla invisibile una volta che non era più nulla. Non funzionerebbe.
HeikkiVesanto,

4

Simile a ciò che altri utenti hanno detto, l'opzione migliore è usare simboli basati su regole. Per evitare la creazione manuale delle regole:

  1. Cambia il tipo di simbolo in Graduato .
  2. Definire la colonna dei simboli, i colori, gli intervalli ecc. Come di consueto Simboli graduati, con valori nulli non visualizzati
  3. Modificare il tipo di simbolo da Laureato a Basato su regola . I simboli definiti nel passaggio precedente verranno riportati. Fare clic sul pulsante Aggiungi simbolo e selezionare ELSE . Cambia lo stile come appropriato. Questa classe di simboli ELSE prenderà tutti i valori che non sono già stati simbolizzati, compresi i valori null. Aggiunta del simbolo ELSE catch-all
  4. Clicca OK. I valori null ora saranno simbolizzati. Simboli graduati, inclusi valori null

(Testato in QGIS 3.6.0)


semplice e utile. Grazie. Suggerirei che QGIS dovrebbe avere un'opzione di esclusione dei valori per la classificazione graduata. Mi sono imbattuto in un po 'di confusione quando ho provato a classificare con i valori dei nodati contrassegnati come -1, -999 ... ecc. (Usando QGIS 3.14 LTR). Fortunatamente, QGIS ignora automaticamente i valori null almeno quando si esegue la simbologia graduata.
Iván Santiago,
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.