Buongiorno a tutte/i
ho usato in passato i VirtualKNN di SpatiaLite soprattutto nei trigger, ma
ora volevo usarlo per risolvere il seguente quesito:

dati due tabelle, una con circa 3000 punti e un'altra con circa 10000 linee
(assi stradali); trovare, per ogni punto, l'asse stradale più vicino.

Per risolvere questo problema ho pensato di usare spatialite 5 e la tabella
KNN.

Ho importato i due vettori in un geodatabase sqlite (creato con QGIS 3.19
master, che ha implementato spatialite 5.0.1)  e ho lanciato la seguente
query:

SELECT a.fid as pk_strade, a.distance as distance, zz.pk as pk_punti
        FROM knn as a 
        JOIN 
        inc2k18Palermo as zz 
        WHERE f_table_name = 'strade_palermo' 
        AND f_geometry_column = 'geom' 
        AND ref_geometry = zz.geom 
        AND max_items = 1 

la query restituisce un output e quindi creo la relativa tabella (create
table as ..), ma impiega circa 200 secondi (sia da db manager di QGIS che da
spatialite_gui 2.1.0 beta 1);

volevo chiedere se faccio un uso corretto dei virtualKNN oppure ho scritto
male la query?

ho letto e approfondito i virtualKNN da qui [0] dove gli esempi sono
relativi a singola ricerca e non a un intero dataset come nel mio caso.

allego db sqlite.

https://drive.google.com/file/d/1wi1VJgzgB3tKSePyRkaJc45fdAw6d2wM/view?usp=sharing

[0] https://www.gaia-gis.it/fossil/libspatialite/wiki?name=KNN

saluti


-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: 
http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
Gfoss@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

Rispondere a