[Gfoss] SpatiaLite e SnapAndSplit

a.furieri a lqt.it a.furieri a lqt.it
Dom 13 Giu 2021 11:27:24 CEST


On Sun, 13 Jun 2021 10:19:27 +0200, Totò Fiandaca wrote:
> Buongiorno,
> fino a ieri per dividere delle MultiLineString 32632 con dei punti
> utilizzavo, nel mio script SQL, due aggiornamenti della geometria:
> 1. per fare lo snap
> 2. per fare lo split
>
> ho scoperto la funziona SnapAndSplit [0] che dovrebbe fare tutto in 
> un
> unico passaggio, sembra funzionare ma da vari test l'uso di 
> SnapAndSplit mi
> genera un output con una riga in più rispetto al caso diviso (prima 
> snap e
> poi split).
>
> Esiste un motivo teorico oppure devo indagare sulla geometria di 
> input?
>

Toto',

la SnapAndSplit() si limita semplicemente a chiamare in sequenza
prima la Snap e poi la Split, non fa altro.

vedo pero' che nel tuo SQL c'e' una sottilissima differenza;
tu parti col la Snap, poi applichi la RemoveRepeatedPoints()
ed infine chiami la Split.

nell'altra versione chiami la SnapAndSplit() e poi la
RemoveRepeatedPoints(); non e' la stessa cosa, perche'
nel primo caso elimini i punti doppi _PRIMA_ della Split,
mentre nel secondo casi li elimini _DOPO_ la Split.

per evitare di confrontare le mele con le banane dovesti
provare a chiamare la RemoveRepeatedPoints() sempre come
ultimissimo passaggio.
cosi' a lume di naso potrebbe essere proprio quel passaggio
a fare la differenza, altrimenti trovo difficile spiegare
come facciano a venire fuori due risultati diversi.

domanda: ma non e' che per caso il tuo dataset e'
"sporco" e contiene gia' in partenza punti doppi ?
perche' allora parrebbe piu' saggio iniziare chiamando
la RemoveRepeatedPoints() al primissimo passaggio prima
ancora di procedere con Snap e Split.

ciao Sandro




Maggiori informazioni sulla lista Gfoss