Con questo articolo rispondo al quesito posto su GIS Italia:
Buongiorno a tutti!
sono alle prese con il seguente dilemma:
Ho una serie di punti ed una serie di linee: voglio calcolare la distanza ortogonale tra ogni punto e la linea più’ vicina.
Un modo rapido per risolvere il problema all’interno di QGIS è attraverso l’uso dei virtual layer (occorre conoscere le basi del SQL e di SpatiaLite).
Prenderò come esempio gli assi stradali (layer: grafo_stradale) e dei punti della pubblica illuminazione (layer: punti):

dopo aver importati i due i layer in QGIS, aggiungere un virtual layer:

si aprirà una maschera, importare i due layer presenti nella TOC e scrivere il seguente script SQL (NB: occorre personalizzare ID, che nel caso specifico è pk_uid):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
select p.pk_uid, ST_ShortestLine (l.geometry, p.geometry) as geometry ,st_length (ST_ShortestLine (l.geometry, p.geometry)) as lungh_m | |
from punti as p, grafo_stradale as l | |
group by p.pk_uid | |
having min ( st_length(shortestline (p.geometry, l.geometry))) |
la maschera:

fare una ‘Prova‘, se compare un messaggio ‘NO error‘ cliccare su OK; ‘magicamente’ QGIS creerà, per ogni punto, un segmento di minima distanza (in rosso) tra punto e linea più vicina:

nello script di sopra viene calcolata anche la lunghezza del segmento minimo (cosa superflua, in quanto QGIS lo fa anche etichettando) che comparirà nella tabella attributi del virtual layer:


video:
Note finali: il virtual layer è uno strumento molto utile ma necessita la conoscenza di SQL, dialetto Spatialite o PostGIS. Esso rappresenta quello che in un DBMS viene chiamato vista o view, cioè una tabella virtuale che risiede solo in memoria e non nel disco fisso: questo ha dei vantaggi e svantaggi: uno per tutti, è un vettore dinamico che si aggiorna automaticamente al cambiar della geometria dei layer che usa; svantaggio più evidente, è lento se le feature sono molte.
Buon lavoro.
conQGIStando!!!
L’ha ribloggato su Geosabere ha commentato:
Ligação de Ramais à Rede de Distribuição
"Mi piace""Mi piace"