QGIS virtual layer e spatialIndex

I Virtual Layer sono stati introdotti, per la prima volta nel 2016, in QGIS 2.14 (mio blog post), oggi vediamo come velocizzare le query utilizzando il supporto Index implementato per i virtual layer da Hugo Mercier .

Il miglior modo per spiegarlo è facendo un esempio concreto.

Supponiamo di avere uno strato poligonale (circoscrizioni) e uno puntuale (point2), vogliamo calcolare il numero di punti su ogni poligono; la query base è la seguente:

SELECT pl.fid, count (*) AS numero
FROM point2 pt, circoscrizioni pl
WHERE st_intersects (pt.geometry, pl.geometry) = 1
GROUP BY 1;
QGIS – virtual layer

tempo impiegato (il mio PC è del 2015) 38 secondi circa.

Utilizzando il supporto allo spatialIndex, implementato per i virtual layer, la query sarà:

SELECT pl.fid, count (*) AS numero
FROM point2 pt, circoscrizioni pl
WHERE pt._search_frame_ = pl .geometry
                AND st_intersects (pt.geometry, pl.geometry) = 1
GROUP BY 1;
QGIS virtual layer 2 con supporto Index

tempo impiegato (il mio PC è del 2015) 13 secondi circa.

QGIS

Approfondimenti:

GitHub : https://github.com/mhugo/qgis_vlayers

QGIS virtual layer: https://docs.qgis.org/2.14/en/docs/user_manual/working_with_vector/virtual_layers.html

Buon lavoro con QGIS!

Pubblicità

4 pensieri su “QGIS virtual layer e spatialIndex

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.