[Gfoss] SQL ed aggiornamento delle geometrie. Più una domanda un po' strana!
Massimiliano Moraca
massimilianomoraca a gmail.com
Gio 22 Feb 2018 18:46:33 CET
Si i tipi sono gli stessi
Ho provato con la tua indicazione creando un vettore e riproducendo il caso
mio. Lo script è questo:
* WITH nuova_tabella_dissolvenza AS (*
* SELECT ST_Union(geom) as geom, tipo FROM*
* update_dissolve GROUP BY tipo*
* )*
* UPDATE update_dissolve o*
* SET o.geom = n.geom*
* FROM nuova_tabella_dissolvenza n*
* WHERE o.tipo = n.tipo;*
Mi compare questo errore però:
*ERROR: ERRORE: la colonna "o" della relazione "update_dissolve" non
esiste*
*LINE 6: SET o.geom = n.geom*
* ^*
*SQL state: 42703*
*Character: 157*
Il giorno 22 febbraio 2018 17:56, Sandro Santilli <strk a kbt.io> ha scritto:
> On Thu, Feb 22, 2018 at 08:57:37AM -0700, Massimiliano Moraca wrote:
>
> > /UPDATE tabella_dissolvenza
> > SET gemetry = (SELECT ST_Union(geometry) as gemetry, tipo FROM
> > tabella_dissolvenza GROUP BY tipo);/
>
> >
> > Giustamente mi compare questo messaggio /ERRORE: la sottoquery deve
> > restituire solo una colonna/ Il messaggio è chiarissimo e ci sarei dovuto
> > arrivare prima.
> >
> > La mia domanda è(finalmente!): c'è un modo per aggiornare in automatico
> le
> > geometrie del vettore in cui ho applicato la dissolvenza o mi tocca
> rifare
> > le tabella(che tramuterei in view a questo punto)?
>
> Se il numero dei tipi e' lo stesso di prima puoi aggiornare
> la tabella cosi':
>
> WITH nuova_tabella_dissolvenza AS (
> SELECT ST_Union(geometry) as gemetry, tipo FROM
> tabella_dissolvenza GROUP BY tipo
> )
> UPDATE tabella_dissolvenza o
> SET o.geometry = n.geometry
> FROM nuova_tabella_dissolvenza n
> WHERE o.tipo = n.tipo.
>
> PostgreSQL supporta le "materialized view" se vuoi tramutare la
> tabella in qualcosa di piu' stabile di una view ma piu' facilmente
> aggiornabile di una tabella. Occhio che usare ST_Union in una view
> puo' precluderti la possibilita' di aggiornare PostGIS nel caso
> in cui l'aggregato ST_Union cambi il nome di un attributo o qualcosa
> di simile.
>
> --strk;
>
Maggiori informazioni sulla lista
Gfoss