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 àèìòù ----------------- _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. |
> 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. hai provato a vedere che succede con una subquery? ad es: create view 1 as select * from (select id as new_id, ST_Union(geometry) as new_geom from table group by id) as tab1 se va come credo, magari ti risparmi una vista... ciao Paolo -- Paolo Corti GIS Architect and Developer mobile: +39 335 7635561 web: http://www.paolocorti.net twitter: @capooti _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. |
Si, avevo provato , sia con il group-by nella prima select che con il group-by nella sub-query.
Alla fine l'unica soluzione che ha funzionato e' fare due viste. Farne due e' molto fastidioso, anche perche' obbliga ad avere una impostazione server-side. Comunque l'importante e' che alla fine esista una strada per farlo funzionare. Andrea. Il giorno 23 gennaio 2010 00.10, Paolo Corti <[hidden email]> ha scritto:
-- ----------------- Andrea Peri . . . . . . . . . qwerty àèìòù ----------------- _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. |
Free forum by Nabble | Edit this page |