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

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


Nella query che ho proposto ho usato ST_Union() e poi però sotto parlo di
collect(). Come ho aggiunto in coda alla risposta le due funzioni vanno
entrambe bene ma fanno cose diverse: st_union fa il dissolve, collect
semplicemente raggruppa (multipart).

Giovanni


Il giorno 30 marzo 2017 09:26, Stefano Campus <skampus a gmail.com> ha
scritto:

> ovviamente la risposta di giovanni è ineccepibile, corretta ed elegante;
> la soluzione che ho segnalato è proprio da "praticone".
> :-)
>
> s.
>
> Il giorno 30 marzo 2017 09:22, G. Allegri <giohappy a gmail.com> ha scritto:
>
>> 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
>>>
>>
>>
>> _______________________________________________
>> 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/57ae6872/attachment.html>


Maggiori informazioni sulla lista QGIS-it-user