[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