Rendering del cluster di punti QGIS 3.0, è possibile controllare l'ordine di rendering (ordine z)?


19

Ho giocato con il nuovo renderizzatore di cluster di punti in QGIS 3.0.2 ed è fantastico, molto più facile (e più veloce) che dover fare il cluster da soli.

Per mostrare cosa intendo, ecco un esempio di incidenti stradali a Edimburgo che utilizzano i dati STATS19 e un raggio di 30m.

inserisci qui la descrizione dell'immagine

Non riesco a capire come impostare l'ordine z in modo che i cluster più grandi vengano disegnati davanti ai cluster più piccoli.

Sono a conoscenza della variabile @cluster_size - è quello che sto usando per ridimensionare e colorare i simboli. Per questo sto usando gli assistenti di dimensione e colore. Ho rimosso gli indicatori di carattere per rimuovere il testo da ciascun cluster.

La dimensione dei marker è definita come segue: -

coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)

Il colore dei marker è definito come segue: -

coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')

Quello che ho provato finora: -

  • Livelli di simboli - Nessuna fortuna; impossibile selezionare un nome di variabile.
  • Rendering dei livelli> Controlla l'ordine di rendering delle caratteristiche e scegli @cluster_size come ordinamento. Non sembra avere un effetto.
  • Stile graduato che utilizza @cluster_size come espressione non funziona.

Qualcuno sa se questo è possibile o è una limitazione con questo particolare renderer?

So che ci sono molti altri modi per farlo (buffer / join spaziale, plugin), ma il nuovo renderer dovrebbe essere molto più veloce. O ho trascurato qualcosa di ovvio? :)


Probabilmente funziona prendendo in considerazione l'ordine nella tabella degli attributi. Forse li disponi in ordine crescente in modo che i più grandi vengano visualizzati come i più recenti? Se non esiste alcuna funzione "Ordina caratteristiche per attributo", puoi provare il plug-in MMQGIS (se è disponibile per qgis 3)
Revo,

grazie @Revo. Sembra essere possibile ridimensionarlo e ordinarlo su un attributo (incluso con il renderer Cluster Point), ma funziona solo su una scala. Ho provato a usare cluster_size perché le dimensioni del cluster cambiano in modo dinamico mentre ingrandisco / rimpicciolisco usando il renderizzatore di punti del cluster. Dò un'occhiata a MMQGIS (è disponibile per QGIS 3)
Steven Kay,

Risposte:


2

Sembra che l'implementazione del cluster di punti non lo consenta in modo nativo.

Considera il renderizzatore di cluster di punti : essenzialmente analizza e raggruppa i dati dei punti al momento del rendering, creando un nuovo pseudo strato. Questo livello non è accessibile all'utente. Non è possibile eseguire una query su un punto cluster. Non è possibile calcolare in campo un attributo @cluster_size .

Il renderizzatore di cluster di punti eredita l'ordine di rendering dall'origine utilizzando l' ordine di rendering della funzione di controllo ( QgsFeatureRequest :: OrderByClause) lasciando aperta la possibilità di alcune soluzioni intelligenti che utilizzano attributi ed espressioni, tuttavia alcuni schemi di ordinamento non sono garantiti come coerenti.

Ad esempio, si consideri un livello punto con rendering ordinato in ordine crescente da un attributo "Latitudine". I punti più a nord sono resi in cima a punti più a sud. Il renderizzatore di cluster di punti non ha un attributo "Latitude" per le sue nuove funzionalità, anche se erediterà una parvenza di quell'ordine dalla sorgente. Ci possono essere casi in cui un cluster più a sud viene visualizzato in cima a un cluster più a nord, a causa dell'ordine dei punti originali.


Grazie. Questa è una spiegazione molto chiara, che risponde anche alla mia domanda se è possibile calcolare un attributo dai punti raggruppati, ad esempio una somma della popolazione associata a ciascun punto originale. Chiaramente no .... ancora? Sarebbe comunque una funzione molto utile. Qualche idea su come ottenere questo risultato con qualche soluzione intelligente (che non richiede codifica, dato che non sono (ancora, ancora?) Bravo), anche in modo statico? Sto lottando per trovare uno strumento per raggruppare i punti in modo simile al modo in cui viene eseguito dal cluster-renderer
dorakiara

In generale, è possibile affrontare questo problema replicando ciò che fa il renderer del cluster insieme alla funzione "Ordine di rendering delle caratteristiche di controllo" utilizzando gli attributi. Un primo passaggio approssimativo potrebbe essere quello di bufferizzare un layer di punti, contare i punti nei poligoni bufferizzati come attributo nel layer di punti. Controlla l'ordine di rendering con questo attributo crescente. Un po 'ingombrante e non funzionerà necessariamente su scale diverse.
CrystallineEntity

Vorrei anche incoraggiarvi a fare una richiesta di funzionalità, che esponesse il metodo @cluster_size alla funzione "Controlla l'ordine di rendering delle caratteristiche".
CrystallineEntity
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.