[Gfoss] SpatiaLite e SnapAndSplit

Totò Fiandaca pigrecoinfinito a gmail.com
Dom 13 Giu 2021 12:57:21 CEST


Maurizio, sto lavorando con dataset enormi (almeno per me) con quasi 3 M di
righe (MultiLineString),
devo fare una cosa apparentemente semplice, *split line with line* usando
la stessa tabella e dividere le linee nei casi X e T (con nodo e senza nodo)

Per semplificare faccio test con un sottoinsieme della tabella originale,
con una tabella di circa 120k righe,
il mio vecchio laptop impiega circa 3 minuti utilizzando spatialIndex e
variabili (stored procedure);
oltre ad acchiappare i casi X (crosses) e i casi T (che risolvo estraendo i
vertici e filtrando per distanza) il mio compito è di ottimizzazione,
perché su milioni di righe potrebbe impiegare molto tempo.

saluti





Il giorno dom 13 giu 2021 alle ore 12:39 Maurizio Trevisani <
maurizio.trevisani a gmail.com> ha scritto:

> Totò,
> a cosa stai lavorando?
> Piano piano stai scoprendo tutte le ultime meraviglie di Spatialite!!!!
>
> Poi scoprirai la topologia.....
>
> Spatialite è il DBMS spaziale più interessante del momento.
>
> Ciao,
> Grazie,
> Maurizio
>
> Il dom 13 giu 2021, 11:27 <a.furieri a lqt.it> ha scritto:
>
> > 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
> >
> >
> > _______________________________________________
> > Gfoss a lists.gfoss.it
> > http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> > Questa e' una lista di discussione pubblica aperta a tutti.
> > I messaggi di questa lista non hanno relazione diretta con le posizioni
> > dell'Associazione GFOSS.it.
> > 764 iscritti al 23/08/2019
> _______________________________________________
> Gfoss a lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 764 iscritti al 23/08/2019



-- 
*Ing. Salvatore Fiandaca*
*mobile*.:+39 327.493.8955
*m*: *pigrecoinfinito a gmail.com <pigrecoinfinito a gmail.com>*
*C.F*.: FNDSVT71E29Z103G
*P.IVA*: 06597870820
*membro QGIS Italia - http://qgis.it/ <http://qgis.it/>*
*socio GFOSS.it - *http://gfoss.it/
*blog:*
* https://pigrecoinfinito.com/ <https://pigrecoinfinito.com/> FB: Co-admin
- https://www.facebook.com/qgis.it/ <https://www.facebook.com/qgis.it/>**
<https://www.facebook.com/qgis.it/> *
*TW:  <http://goog_95411464>**https://twitter.com/totofiandaca
<https://twitter.com/totofiandaca>*

43°51'0.54"N  10°34'27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di
FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario
in relazione alle finalità per le quali è stato ricevuto. E' vietata
qualsiasi forma di riproduzione o divulgazione senza l'esplicito consenso
di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di
informare tempestivamente il mittente e distruggere la copia in proprio
possesso.


Maggiori informazioni sulla lista Gfoss