Buongiorno, non so se è il modo giusto e la ML corretta per chiedere, forse, una Feature Request per SpatiaLite, in caso negativo chiedo scusa per il runore.
Ko studiato e usato le favolose VirtualKNN presenti in spatialite [0] per calcoli di distanze minime tra punti e linee su grandi dataset (milioni di righe) e ho notato che l'approccio classico dell'uso degli indici spaziali è enormemente più performante rispetto all'uso dei VirtualKNN (2 sec contro 100 secondi) questo è dovuto anche al fatto che non esiste, nelle virtualKNN, l'opzione max_distance e quindi calcola le distanze su tutte le righe. queste le due query a confronto, stessi dati in input e stessi output: - geo-tabella `route` linestring 32632 con 116674 feature - geo-tabella `scuole` point 32632 con 5529 feature uso VirtualKNN: CREATE TABLE t_scuole_100mKNN AS SELECT d.chiave_uni, d.fid as id_route, d.distance as distance, ST_shortestline(d.geometry, s.geometry) as geom FROM (SELECT a.fid as fid, a.distance as distance, zz.chiave_uni as chiave_uni,zz.geometry FROM knn as a JOIN scuole as zz WHERE f_table_name = 'route' AND f_geometry_column = 'geometry' AND ref_geometry = zz.geometry AND max_items = 1) d, route s WHERE ST_Distance(s.geometry, d.geometry) <= 100 and id_route = s.ogc_fid ORDER BY d.chiave_uni; SELECT RecoverGeometryColumn('t_scuole_100mKNN','geom',32632,'LINESTRING','XY'); output 1737 righe impiega circa 100 secondi uso spatialIndex classico CREATE TABLE t_scuole_100mMBR AS SELECT a.ogc_fid as id_route, Min(ST_Distance(a.geometry, zz.geometry)) AS distance, zz.chiave_uni as chiave_uni, st_shortestline (a.geometry, zz.geometry) as geom FROM route as a, scuole as zz WHERE ST_Distance(a.geometry, zz.geometry) <= 100 AND a.ogc_fid IN ( SELECT rowid FROM SpatialIndex WHERE f_table_name = 'route' AND search_frame = BuildCircleMbr(ST_X(zz.geometry), ST_Y(zz.geometry), 100)) GROUP by zz.chiave_uni; SELECT RecoverGeometryColumn('t_scuole_100mMBR','geom',32632,'LINESTRING','XY'); output 1737 righe impiega circa 2 secondi Forse le query non sono scritte in modo ottimale, ma secondo me un parametro max_distance nelle virtualKNN aiuterebbe molto grazie [0] https://www.gaia-gis.it/fossil/libspatialite/wiki?name=KNN ----- 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