[Gfoss] Intersezione Spaziale MOLTO Pesante

aperi2007 aperi2007 a gmail.com
Mar 15 Nov 2011 19:25:50 CET


 >Vorrei sapere se c'è qualche guida/sito su internet in grado di 
 >aiutarmi a migliorare
 >Qualche consiglio?

La migliore guida che io conosco è il libro
"postgis_in_action"

Purtroppo non e' disponibile open su internet.

 >Ho provato a scrivere questa queri in Postgis ma mi restituisce un 
 >errore (vado a memoria su quanto ho scritto)
 >
 >SELECT *
 >FROM vector1
 >WHERE ST_Intersections('vector1.the_geom','vector2.the_geom')


Va un po' risistemata,
cosi' non va bene,

La condizione va dichiarata con
ST_Intersects(vector1.geom,vector2.geom)=true

ricordati di dichiarare degli indici spaziali sulle tabelle vector1 e 
vector2 cosi e' piu' veloce.

Poi per estrarre il taglio sulle singole celle,
io userei qualcosa tipo questa:

ST_Multi(ST_CollectionExtract(ST_Force_Collection(ST_Intersection(a.geom,b.geom)),2)) 


La ST_Intersection(), in punti sfortunati puo' generare una collection. 
Non sempre succede, ma a volte si' e questo genera delle eccezioni che 
"complicano" la vita.
Non e' un errore, ma una "magia nera" insita nella matematica "finita" 
dei computers.
Fatto sta' che per compensarlo senza farsi troppi patemi una strada 
comoda e' quella sopra indicata.

Lo forzi a generare sempre una collection, poi estrai la componente 
lineare della collection e la forzi a essere Multi.
Questo ultimo è essenziale perche' a volte viene multi a volte no, e te 
devi sempre avere il medesimo tipo (multi appunto).

Alla fine di quella strana formula avrai buttato via tutti i valori 
spuri generati dalla aritmetica finita e rimarra solo in cuore della 
geometria. Quello buono.

Caso mai se hai tempo, prova a farlo anche sul tuo software commerciale
e confronta i risultati, il confronto potrebbe fornire
spunti interessanti :)


Saluti,

Andrea.


Maggiori informazioni sulla lista Gfoss