/LRS_with_virtual_layer_QGIS

Linear Reference System (LRS) utilizzando i Virtual Layer di QGIS

Creative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0

LRS con virtual layer in QGIS

Linear Reference System (LRS) utilizzando i Virtual Layer di QGIS

©2019 CC-BY-SA 4.0 Salvatore Fiandaca pigrecoinfinito@gmail.com

Che cosa è LRS

Il riferimento lineare (chiamato anche sistema di riferimento lineare o LRS ), è un metodo di riferimento spaziale in ingegneria e costruzione, in cui le posizioni delle caratteristiche fisiche lungo un elemento lineare sono descritte in termini di misure da un punto fisso, come una pietra miliare lungo una strada. Ogni funzione è localizzata da un punto (ad esempio un cartello) o da una linea (ad esempio una zona di divieto di passaggio). Se viene modificato un segmento dell'elemento lineare o della rotta, è necessario aggiornare solo le posizioni sul segmento modificato. WikiPedia

LRS a cosa serve

Il riferimento lineare è adatto per la gestione di dati relativi a caratteristiche lineari come strade, ferrovie, oleodotti e gasdotti, linee elettriche e di trasmissione dati e fiumi. WikiPedia

Esempio d'uso

Immagioniamo di dover gestire gli assi stradali principali del centro storico di Palermo e di tenere aggiornata la manutenzione usando QGIS.

img

Dati

  1. creo un GeoPackage con:

  2. tabella manutenzione (alfanumerica) lrs_manutenzione

img

  1. geo-tabella con gli assi stradali strade_centro_storico

img

Virtual Layer

Un tipo speciale di vettore che consente di definire un layer come il risultato di un’interrogazione avanzata, utilizzando il linguaggio SQL su tutti i vettori che QGIS è in grado di aprire. Questi layer sono chiamati layer virtuali: non caricano dati propri e possono essere visti come una visualizzazione di altri layer. Doc QGIS

ecco i tre Virtual Layer necessari per questo esempio:

  1. Punto Inizo
SELECT f.fid, st_line_interpolate_point (f.geometry, t.inizio/st_length(f.geometry)) AS geom /*point:32633*/, t.inizio
FROM strade_centro_storico f, lrs_manutenzione t
WHERE f.nome = t.strada;

img

  1. Punto Fine
SELECT f.fid, st_line_interpolate_point (f.geometry, t.fine/st_length(f.geometry)) AS geom /*point:32633*/,  t.fine
FROM strade_centro_storico f, lrs_manutenzione t
WHERE f.nome = t.strada;

img

  1. Linea intervento
SELECT f.fid,t.intervento,st_Line_Substring (f.geometry,t.inizio/st_length(f.geometry) ,t.fine/st_length(f.geometry)) AS geom /*linestring:32632*/
FROM strade_centro_storico f, lrs_manutenzione t
WHERE f.nome = t.strada;

img

Maschera inserimento dati

img

Risultato

img

Video DEMO:

video

Prova tu

GeoPackage e Progetto QGIS -> scarica qui

Torna su

Riferimenti