>SELECT * La query che esegui dice a postgis di restituire tutti e sottolineo tutti gli elementi che tra loro si intersecano. Se per sfortuna i tuoi due archivi sono molto sovrapponibili questo implica che i dati verranno restituiti quasi tutti (se non tutti), causando una ridondanza enorme di valori. ovvero la medesima geometria ti viene rispedita tutte le volte che si interseca con una qualunque delle altre. inoltre chiedendo select * te chiedi tutti gli attributi sia di tabella A che di tabella B. infine: hai creato gli indici spaziali sui campi geometrici di entrambe le tabelle ? -- ----------------- 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. |
se fai:
SELECT * FROM A, B WHERE A.THE_GEOM && B.THE_GEOM sfrutti gli indici spaziali (sempre siano correttamente creati) francesco Citando Andrea Peri <[hidden email]>: >> SELECT * >> FROM A, B >> WHERE ST_INTERSECTS (A.THE_GEOM, B.THE_GEOM) >> >> che secondo me dovrebbe corrispondere a fare un intersezione con il plugin >> di Geoprocessing (Qgis). >> >> Se la mia ipotesi è giusta, la cosa che trovo strana è che la query impiega >> circa 20 minuti per restituirmi il risultato (le due tabelle sono piuttosto >> voluminose) mentre l'intersezione fatta da qgis ci mette un paio di minuti. > > > La query che esegui dice a postgis di restituire tutti e sottolineo tutti > gli elementi che tra loro si intersecano. > > Se per sfortuna i tuoi due archivi sono molto sovrapponibili questo implica > che i dati verranno restituiti quasi tutti (se non tutti), > causando una ridondanza enorme di valori. > > ovvero la medesima geometria ti viene rispedita tutte le volte che si > interseca con una qualunque delle altre. > > inoltre chiedendo > > select * > > te chiedi tutti gli attributi sia di tabella A che di tabella B. > > infine: > > hai creato gli indici spaziali sui campi geometrici di entrambe le tabelle ? > > > -- > ----------------- > 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. |
On Tue, Jan 26, 2010 at 09:56:31AM +0100, francesco marucci wrote:
> > SELECT * > FROM A, B > WHERE A.THE_GEOM && B.THE_GEOM La funzione && sfrutta gli indici spaziali sulle geometrie (se li hai creati), quindi è veloce. Ma non è l'intersezione "esatta", è solo l'intersezione delle bounding box delle geometrie: http://postgis.refractions.net/docs/ST_Geometry_Overlap.html Invece la ST_Intersects() fa l'intersezione esatta. Io mi ricordavo che questa non sfruttava gli indici, quindi usavo una specie di trucco combinando le due funzioni con una AND per ottenere risultati veloci. Però ora leggo sul manuale che la ST_Intersects() sfrutta gli indici: http://postgis.refractions.net/docs/ST_Intersects.html Qualcuno mi sa dire se è vero e se à sempre stato così? -- Niccolo Rigacci Firenze - Italy _______________________________________________ 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. |
La funzione && sfrutta gli indici spaziali sulle geometrie (se Non mi ricordo in che punto del manuale sta scritto ma sono sicuro di aver letto da qualche parte che nelle ultime versioni di PostGIS la funzione ST_Intersects prima confronta i BBOX e solo se questi si intersecano passa al confronto esatto, in sostanza hanno incorporato il trucchetto del AND. Se ritrovo il riferimento giro il link. Ciao, Stefano _______________________________________________ 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. |
Stefano Salvador ha scritto:
> Non mi ricordo in che punto del manuale sta scritto ma sono sicuro di > aver letto da qualche parte che nelle ultime versioni di PostGIS la > funzione ST_Intersects prima confronta i BBOX e solo se questi si > intersecano passa al confronto esatto, in sostanza hanno incorporato il > trucchetto del AND. Se ritrovo il riferimento giro il link. esatto: la nuova ST_Intersect e' un wrapper per _ST_Intersect, piu' gli indici. Saluti. -- Paolo Cavallini: http://www.faunalia.it/pc _______________________________________________ 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. |
e qui è dove lo dicono (nella nota): _______________________________________________ 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. |
In reply to this post by Andrea Peri
Gli indici sono praticamente obbligatori se vuoi fare analisi spaziale,
un esempio per esemplificare: Prendo una tabella con 288 records e un altra con 5.992 records. facendo l'operazione che citi te st_intersects in presenza di indici mi ritorna 7.531 elementi in 5 secondi. rimuovendo gli indici spaziali da entrambe, i tempi passano a 3 minuti e 28 secondi Prova a creare gli indici spaziali su entrambe le tabelle, sui campi con geometria e poi riprova. Ciao, Il giorno 26 gennaio 2010 09.59, ACQUATI CLAUDIO <[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 |