[Gfoss] QGis, postgres e le viste

Andrea Peri aperi2007 a gmail.com
Sab 23 Gen 2010 00:01:12 CET


Salve,

Dopo una serata passata a cercare di convincere qgis ad accettare una
complicata vista impostata su postgres,
sono giunto ad alcune conclusioni , e a una soluzione tampone che ritengo
sia utile da condividere.

Una piccola premessa:

Come si sa' il buon qgis per visualizzare una tabella (o vista) vuole un
campo intero con valori univoci.

Per cui una tabella siffatta

ID, GEOMETRY
1, geom1
1, geom2
1, geom3
2, geom4,
2, geom5,
2, geom6

A lui non va' bene.

D'altronde qgis accetta di visualizzare anche da una vista ,
per cui in teoria dovrebbe accettare , e non avrebbe alcuna ragione per
rifiutare una vista cosi' definita:

create view as
select id as new_id, ST_Union(geometry) as new_geom from table group by id

Infatti il risultato di questa vista sarebbe:

new_id, new_geom
1, (geom1 + geom2 + geom3)
2, (geom4 + geom5 + geom6)

e quindi perfettamente compatibile con le aspettative di qgis.

Il buon qgis, pero' , tanto per complicare la vita, anziche' limitarsi a
pesare i valori che riceve dalla vista, vuole andare a pesare i singoli
componenti che la compongono,
e nel fare questo pero' si dimentica di considerare che nella vista e'
presente un costrutto "group-b" che potrebbe rendere univoci i valori.
Per cui , dato che i componenti della vista , ovvero, nell'esempio
riportato, la tabella suddetta, non presentano un campo con valori univoci,
per qgis e' una vista da rifiutare.
Sebbene la presenza del costrutto "group by" in realta' renderebbe univoci i
valori del campo ID.

Esiste pero' una strada per "gabbare" qgis, ovvero definire una vista di una
vista.
Si definisce una prima vista che effettua il group-by, e poi si definisce
una seconda vista che peschi dalla prima

create view1 as
select id as new_id, ST_Union(geometry) as new_geom from table group by id

create view2 as
select new_id, new_geom from view1;

A questo punto si dice a qgis di visualizzare il contenuto della vista2 e il
gioco e' fatto.


Saluti,


-- 
-----------------
Andrea Peri
. . . . . . . . .
qwerty אטלעש
-----------------
-------------- parte successiva --------------
Un allegato HTML ט stato rimosso...
URL: <http://lists.faunalia.it/pipermail/gfoss/attachments/20100123/4c321e4f/attachment.htm>


Maggiori informazioni sulla lista Gfoss