[QGIS-it-user] dissolve Group by o simile

G. Allegri giohappy a gmail.com
Gio 30 Mar 2017 00:22:29 PDT


Buongiorno,
la funzione Processing ->Strumenti geometria vettore -> Dissolve permette
di eseguirlo in base ad un campo di raggruppamento. Se vedi, nella finestra
dello strumento, c'è un "Campo ID univoco". Se deselezioni "Dissolvi tutto"
(flag) e selezioni il campo di raggruppamento, il dissolve sarà fatto in
base al valore di quel campo. Tuttavia lo strumento non ti permette di
ottenere aggregazioni (somme, medie, ecc.) sugli altri campi.

La strada più versatile è sicuramente l'uso di una query SQL. Per poterla
visualizzare puoi aggiungere un campo geometrico e applicarci una funzione
di aggregazione:

SELECT
   "COD_ISTAT",
   sum(R03_indicatori_2011_sezioni_P1) AS somma_p1,
   *ST_Union**(geom**) AS geom*,
FROM "R03_11_WGS84" GROUP BY "COD_ISTAT"

La funzioni collect() crea un multipolygon di tutte le sezioni censuarie di
ogni gruppo "COD_ISTAT".

A quel punto in fondo alla finestra SQL del DB Manager

1) clicca su "Carica come nuovo layer"
2) Scegli il campo id univoco (es. COD_ISTAT)
3) Scegli la colonna geometrica (in questo esempio sarebbe geom per come ho
definito l'alias del campo (AS geom)
4) Clicca su "Carica ora!"

Ti si caricherà un layer (Querylayer) che conterrà le tue geometrie
aggregate (dalla collect) e, nella tabella attributi, le somme.

Ovviamente potrai aggiungere altri campi (somma di p2, ecc.) e potrai anche
aggregare per più campi (GROUP BY campo1,campo2,ecc.)

Nella documentazione delle funzioni di Spatialite le funzioni di
aggregazione sono segnate con la scritta in rosso "aggregate_function" [1].
Tra queste c'è anche le "collect()" che, a differenza della st_unioni,
semplicemente ti crea una multigeometria invece che l'unione, e quindi è
molto più veloce.

Giovanni

[1] http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.html

Il giorno 30 marzo 2017 08:56, Aramis <sleeping.aramis a gmail.com> ha
scritto:

> Ciao e buon giovedì, forza che la settimana sta finendo.
> Stavo provando a lavorare con i dati del censimento istat, scarico i file
> dal sito carico lo shape delle zone censuarie gli faccio un join con la
> tabella contenente i dati tramite i campi che mi indicano le sezioni. tutto
> regolare.
> Vorrei visualizzare i dati raggruppati per comuni, campo cod_istat, ma il
> dissolve group by in qgis non mi pare sia presente. Trovo che è necessario
> passare per il DB manager e fare una query sql. Provo la seguente:
> select COD_ISTAT,sum(R03_indicatori_2011_sezioni_P1)from
> "R03_11_WGS84"group by COD_ISTAT
> Per fargli sommare i valori P1 per ogni comune.
> La query sembra venire ma:
> 1- come visualizzo i risultati graficamente?
> 2- dovendo considerare più campi oltre a P1 ho provato a modificare il
> nome del campo "R03_indicatori_2011_sezioni_P1 in semplicemente P1 e così
> via per fare delle query un po' più comodamente. Non mi accetta il cambio
> di nome... possibile perchè essendo il campo risultante da un join fa
> riferimento a una tabella altra e i nomi devono restare invariati?
> Alla fine si tratterebbe di un dissolve rispetto a un campo, caoistat, e
> che sommi gli altri campi, i vari p1 p2 etc
> Qualcuno sa dirmi come potrei procedere?
> Grazie
> Aramis
> _______________________________________________
> QGIS-it-user mailing list
> QGIS-it-user a lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-it-user
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20170330/17131379/attachment.html>


Maggiori informazioni sulla lista QGIS-it-user