IT | EN

Monitoraggio dell'impatto delle mareggiate con sensori LiDAR permanenti


La morfologia della spiaggia e la sua misura

La spiaggia non è una superficie statica: cambia continuamente di forma sotto l'azione delle onde, delle correnti, del vento e degli eventi di mareggiata. Alcune zone accumulano sedimento e avanzano verso il mare, altre si abbassano progressivamente fino a sparire. Misurare con precisione la quota della sabbia lungo un transetto perpendicolare alla riva, ripetendo la misura nel tempo, permette di ricostruire la storia morfologica del sito, quantificare l'impatto delle mareggiate sul profilo di spiaggia e individuare in anticipo i settori a maggior rischio di erosione costiera.

Il sistema LiDAR della rete RVMC acquisisce automaticamente il profilo altimetrico della spiaggia con un laser scanner fisso installato in quota. A partire da queste scansioni, una procedura automatica calcola la quota media del profilo, quantifica le variazioni cumulative rispetto allo stato iniziale di monitoraggio e classifica ogni punto del transetto in base al suo comportamento morfologico nel tempo.


Schema della procedura

Il processo si articola in tre stadi sequenziali, eseguiti in cascata su ogni insieme di acquisizioni disponibili per una stazione.

1. Preprocessing — ogni scansione grezza viene corretta geometricamente per l'inclinazione residua del sensore, filtrata dagli outlier e interpolata su una griglia spaziale regolare.

2. Analisi multi-temporale — l'insieme di tutte le scansioni elaborate viene analizzato per produrre il profilo medio, le deviazioni cumulative rispetto alla prima acquisizione e la classificazione morfologica in quattro tipi comportamentali.

3. Validazione DGPS-RTK — periodicamente, misure di quota al suolo acquisite con strumentazione DGPS-RTK di alta precisione vengono confrontate con i profili LiDAR per verificare l'accuratezza assoluta del sistema e, se necessario, calibrare i parametri geometrici del sensore.


Stadio 1 — Preprocessing delle scansioni

Il concetto

Ogni volta che il sensore laser acquisisce una scansione, il risultato è una nuvola di punti: per ciascun raggio emesso, il sistema registra la distanza dall'ostacolo colpito. Prima di poter confrontare scansioni diverse tra loro, è necessario “pulire” questi dati grezzi: eliminare i punti chiaramente erronei, correggere le piccole imprecisioni di installazione del sensore e riportare tutti i profili sulla stessa griglia spaziale.

Questo stadio è paragonabile alla preparazione del campione prima di una misura di laboratorio: senza di esso, i risultati dell'analisi successiva sarebbero difficilmente confrontabili tra acquisizioni diverse.

Approfondimento tecnico

Il preprocessore (lidar_analyzer.py) applica in sequenza quattro operazioni su ogni file CSV grezzo del sensore (colonne: time, x, y, z, angle_deg, distance_cm):

1. Correzione pitch — rotazione rigida del profilo attorno al centro ottico del sensore per compensare l'inclinazione verticale residua del supporto di montaggio. L'angolo di correzione (θpitch) è determinato per ogni stazione tramite regressione lineare sui residui della validazione DGPS (vedi Stadio 3).

2. Filtro outlier adattivo — basato sull'intervallo interquartile (IQR) con moltiplicatore configurabile (default 0.5). La soglia adattiva è più tollerante nelle zone a bassa densità angolare (punti distanti dal sensore) dove la dispersione naturale è maggiore.

3. Interpolazione su griglia regolare — i punti filtrati vengono riproiettati sull'asse x_grid del transetto e ricampionati a passo fisso (default 0.5 m) tramite interpolazione lineare.

4. Linear fit diagnostico — stima del piano di regressione lineare sul profilo, utile per il monitoraggio della pendenza media nel tempo.

La configurazione geometrica di ciascuna stazione (quota sensore, angolo pitch, estremi del transetto, soglia sabbia) è centralizzata nel file lidar_config.yaml.

Nota sul centro ottico dei sensori SICK LD-LRS. Nei sensori SICK LD-LRS il centro ottico (specchio rotante che emette il laser) si trova circa 14 cm più in basso rispetto alla flangia meccanica di fissaggio. Le misure di quota del sensore effettuate in campo si riferiscono alla flangia meccanica e devono essere corrette con l'offset appropriato (offset_y) per ottenere la corretta geometria di misura. Trascurare questa correzione introduce un bias sistematico costante su tutto il profilo.


Stadio 2 — Analisi multi-temporale e classificazione morfologica

Il concetto

Una volta raccolte abbastanza scansioni nel tempo, il sistema le confronta tutte insieme per capire come si è evoluta la spiaggia. Per ogni punto del transetto calcola due informazioni: quanto è cambiata la quota rispetto all'inizio del monitoraggio (il cambiamento cumulativo) e quanto instabile è stato quel punto nel corso del tempo (la volatilità). Combinando queste due misure, ogni punto del profilo viene classificato in una di quattro categorie.

I settori in accumulo costante mostrano una quota crescente e stabile nel tempo: la sabbia si deposita progressivamente. I settori in erosione irregolare sono i più critici: la quota scende nel medio periodo, ma con fluttuazioni ampie che indicano un sistema instabile e soggetto a impatti ricorrenti delle mareggiate.

Grafico di volatilita morfologica con classificazione TIPO 1-4

Fig. 1 — Grafico di volatilità morfologica: ogni punto rappresenta una posizione lungo il transetto. L'asse orizzontale misura il cambiamento cumulativo netto rispetto alla prima acquisizione; l'asse verticale la volatilità nel tempo. I quattro quadranti identificano i tipi comportamentali TIPO 1–4.

Approfondimento tecnico

Il processore multi-temporale (optimized_lidar_processor_v2_3_FIXED.py) carica l'intero archivio di profili interpolati per una stazione e calcola, per ogni posizione x_grid:

Media temporale z̄(x) — quota media osservata su tutte le acquisizioni disponibili, prodotta nel file *_media_temporale.csv.

Deviazione cumulativa Δz(x, t) = z(x, t) − z(x, t0) — variazione di quota rispetto alla prima acquisizione t0, prodotta nel file *_deviazioni_cumulative.csv.

Valore finale cumulativo fc(x) = Δz(x, tN) — variazione netta tra l'ultima e la prima acquisizione.

Volatilità σ(x) = std(Δz(x, t)) — deviazione standard delle deviazioni cumulative nel tempo.

La combinazione di fc(x) e σ(x) determina la classificazione di ciascun punto:

TipoEtichettafc(x)VolatilitàInterpretazione
TIPO 1 Accumulo costante > 0 Bassa Deposizione progressiva e stabile
TIPO 2 Accumulo irregolare > 0 Alta Bilancio positivo con forti fluttuazioni
TIPO 3 Erosione costante < 0 Bassa Abbassamento progressivo e regolare
TIPO 4 Erosione irregolare ◆ < 0 Alta Perdita netta con alta instabilità

Il TIPO 4 identifica i settori a maggiore vulnerabilità: ambienti soggetti sia a perdita netta di sedimento sia a fluttuazioni ampie nel tempo. È il segnale di risposta più forte ai cicli di erosione e accrezione indotti dalle mareggiate. I punti TIPO 4 sono evidenziati con simbolo a diamante rosso nel grafico di volatilità.


Stadio 3 — Validazione DGPS-RTK e calibrazione geometrica

Il concetto

Per sapere quanto ci si può fidare delle misure LiDAR, periodicamente un operatore percorre fisicamente la spiaggia con un ricevitore GPS di alta precisione (DGPS-RTK), registrando la quota della sabbia in una serie di punti lungo il transetto monitorato. Questi dati di campo, precisi al centimetro, vengono poi confrontati automaticamente con i profili LiDAR: la differenza residua — l'errore del sistema — viene misurata e, se necessario, utilizzata per correggere la geometria del sensore.

Il processo è simile alla taratura periodica di uno strumento di misura: anche un sensore ben installato può accumulare piccoli errori nel tempo, e la comparazione con misure indipendenti è l'unico modo per rilevarli e correggerli.

Confronto profilo LiDAR vs misure DGPS-RTK

Fig. 2 — Confronto tra il profilo LiDAR (linea continua) e le misure DGPS-RTK (punti). L'accordo è valutato tramite RMSE, bias sistematico e distribuzione spaziale dei residui.

Approfondimento tecnico

Lo script di validazione (validate_lidar_dgps_v2.py) riceve in input il profilo medio LiDAR della stazione e un file CSV con le misure DGPS di campo (formato: ID, Est, Nord, H_geoid, UTM 33N, quota geoidica). Per ogni punto DGPS:

1. Proiezione sul transetto — la posizione UTM del punto DGPS viene convertita in coordinata x_grid lungo l'asse del transetto tramite prodotto scalare con il versore direzionale (azimuth configurato per stazione).

2. Matching spaziale — associazione con il punto LiDAR più vicino, entro una tolleranza configurabile (default 0.5 m).

3. Calcolo residui — differenza di quota LiDAR − DGPS per ogni coppia matched.

Le metriche calcolate sono:

MetricaFormulaInterpretazione
RMSE √[Σ(zLiDAR − zDGPS)2 / N] Errore quadratico medio: misura globale dell'accuratezza
Bias Σ(zLiDAR − zDGPS) / N Errore sistematico medio: indica offset verticale residuo
MAE Σ|zLiDAR − zDGPS| / N Errore assoluto medio: meno sensibile agli outlier dell'RMSE
Std Dev σ(residui) Dispersione casuale: indica variabilità non sistematica

I livelli di qualità operativa definiti per il sistema RVMC sono:

LivelloSoglia RMSEAzione
EXCELLENT< 3 cmSistema operativo, nessun intervento necessario
GOOD< 8 cmOperativo; calibrazione pitch opzionale
ACCEPTABLE< 10 cmOperativo con monitoraggio ravvicinato
FAILED≥ 10 cmCalibrazione obbligatoria prima dell'uso operativo

Quando i residui mostrano un andamento sistematico crescente con la distanza dal sensore (errore lineare in x_grid), la causa è un errore di pitch del sensore piuttosto che un semplice offset verticale. In questo caso lo script calculate_pitch_from_dgps.py stima l'angolo correttivo tramite regressione lineare:

residuo(x) = a · x + b   →   θpitch = arctan(a)

L'angolo stimato viene inserito nel file lidar_config.yaml della stazione e l'intera pipeline viene rieseguita dal preprocessing. La frequenza di validazione pianificata è ogni 6 mesi in condizioni normali, e dopo ogni evento straordinario (manutenzione del sensore, mareggiata intensa, anomalie nei dati).


Risultati di validazione delle stazioni pilota

Attualmente, due stazioni sono state validate con dati DGPS-RTK di campo. I risultati documentano documentalo la progressione del processo di calibrazione.

StazioneDataRMSEBiasPitch corr.Livello
Kufra 2025-12-02 7.2 cm -6.2 cm −0.61° GOOD
TorreSole01 2025-12-02 8.3 cm +2.8 cm 0.00° GOOD

La stazione Kufra ha richiesto un processo di calibrazione completo in due passi: la correzione dell'offset_y per tenere conto della differenza tra centro meccanico e centro ottico del sensore SICK, seguita dalla correzione pitch di −0.61° stimata per regressione lineare sui residui DGPS (R2 = 0.88, p < 10−7).

Le restanti 3 stazioni LIDAR (Senigallia, Viareggio, Marina di Castagneto Carducci) sono in attesa delle rispettive campagne di rilievo in campo.


Rete di stazioni e sistema operativo

La rete conta attualmente 11 stazioni di cui 5 equipaggiate con sensori SICK LD-LRS, distribuite lungo le coste adriatica e tirrenica. I dati grezzi vengono archiviati in formato CSV sul server di elaborazione ISPRA e processati periodicamente attraverso la pipeline descritta in questa pagina. I risultati — profili medi, mappe di variazione cumulativa e grafici di volatilità — sono consultabili nell' Analizzatore Multitemporale LiDAR e nell'Analizzatore Scansioni LiDAR.

La configurazione centralizzata in lidar_config.yaml raccoglie per ogni stazione i parametri geometrici calibrati (quota sensore, angolo pitch, estremi del transetto), lo stato di validazione DGPS e la storia delle calibrazioni effettuate. Il sistema è progettato per l'integrazione futura con il portale web videomonitoraggio.isprambiente.it tramite export JSON standardizzato.



Continua alla pagina succesiva: monitoraggio della risalita ondosa sulla spiaggia