[Gfoss] VirtualKNN in SpatiaLite 5
pigreco
pigrecoinfinito a gmail.com
Lun 19 Apr 2021 12:20:37 CEST
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/
Maggiori informazioni sulla lista
Gfoss