[Gfoss] ST_Union e PostGIS

G. Allegri giohappy a gmail.com
Mer 13 Dic 2017 12:30:25 CET


Ciao Massimiliano,
come puoi aspettarti di avere il campo ogc_fid dopo aver fatto il dissolve?
PostgreSQL ti chiede di usare un GROUP BY anche su quel campo OPPURE devi
passarlo ad una funzione di aggregazione. Es.

SELECT ST_Union(geom) AS geometry, min(ogc_fid) FROM dipartimenti GROUP BY
cd_diparti;

In questo esempio prendo l'ogc_fid più piccolo (scelta arbitraria ma
ammissibile) tra tutti i cd_diparti aggregati (dissolved).

Giovanni

Il giorno 13 dicembre 2017 12:13, Massimiliano Moraca <
massimilianomoraca a gmail.com> ha scritto:

> Buongiorno,
> in QGIS con un virtual layer scrivendo questa query:
>
> >
> >
> >
> >
> >
> >
> > *SELECT ST_Union(geom) AS geometry, ogc_fid, cd_diparti, dipartimenFROM
> > dipartimentiGROUP BY cd_diparti;*
>
> Ottengo l'effetto dissolve che mi interessa(anche in SpatiaLite.
>
> La stessa query in PostGIS mi genera invece questo errore:
>
> >
> >
> >
> >
> >
> > *ERROR: ERRORE: la colonna "dipartimenti.ogc_fid" deve comparire nella
> > clausola GROUP BY o essere usata in una funzione di aggregazioneLINE 3:
> > ogc_fid, ^SQL state: 42803Character: 39*
>
>
> Se assecondo il messaggio mi chiede successivamente di inserire anche
> *dipartimen
> *ed il risultato non è il *DISSOLVE *ma la replica di ogni tupla della
> tabella selezionata.
>
> Eliminando *ogc_fid *e *dipartimen *e rieseguendo la query in PostGis
> ottengo il risultato atteso.
>
> Il tutto confluirà in una *VIEW*. Ho la necessità che nella view siano
> presenti anche le due colonne in questione per motivi di etichettatura
> *dipartimen
> *(ma questo è il male minore visto che potrei risolvere con un *JOIN *in
> QGIS sfruttando *cd_diparti*) e *ogc_fid *perchè dovrò poi esportare questo
> database in SpatiaLite. SpatiaLite per le view "geometriche" chiede l'id
> della tabella associata alla view quanto si va ad usare:
>
> >
> >
> > * INSERT INTO views_geometry_columns (view_name, view_geometry,
> > view_rowid, f_table_name, f_geometry_column, read_only) VALUES
> ('geometria
> > creata', 'geom', 'chiave geometria sorgente', 'geometria sorgente',
> > 'geom',1)*
>
>
> Temo che nell'esportazione la view non venga attivata per questo vorrei che
> ci fosse *ogc_fid*.
>
> Forse concettualmente sbaglio qualcosa?
>
> La versione di PgAdmin che uso è la 4, quella di PostgreSQL è la 10 mentre
> PostGIS è 2.4. Il file se può servire è scaricabile da questo link:
> https://drive.google.com/open?id=14RX4k7oXO6zxrzgjBVuIYKVE6AVCaaxk
> _______________________________________________
> Gfoss a lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 801 iscritti al 19/07/2017


Maggiori informazioni sulla lista Gfoss