Grazie mille, preziosissimi.

Aramis


On 30/03/2017 09:33, G. Allegri wrote:
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 <skam...@gmail.com <mailto:skam...@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 <gioha...@gmail.com
    <mailto:gioha...@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
        <http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.html>

        Il giorno 30 marzo 2017 08:56, Aramis
        <sleeping.ara...@gmail.com <mailto:sleeping.ara...@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@lists.osgeo.org
            <mailto:QGIS-it-user@lists.osgeo.org>
            https://lists.osgeo.org/mailman/listinfo/qgis-it-user
            <https://lists.osgeo.org/mailman/listinfo/qgis-it-user>



        _______________________________________________
        QGIS-it-user mailing list
        QGIS-it-user@lists.osgeo.org <mailto:QGIS-it-user@lists.osgeo.org>
        https://lists.osgeo.org/mailman/listinfo/qgis-it-user
        <https://lists.osgeo.org/mailman/listinfo/qgis-it-user>




_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Rispondere a