Interpolazione
Quando una serie nasce da dati (punti sparsi o griglie) anziché da una
formula, func3d la rende campionabile con un metodo di
interpolazione, scelto nel dataset (method) e regolabile dai parametri.
Qui i metodi disponibili, i loro limiti, e un confronto con quelli offerti da GRASS GIS.
Metodi disponibili
| Metodo | Idea | Parametri | Quando usarlo |
|---|---|---|---|
| nearest | il valore del punto dati più vicino (query esatta, non approssimata) | — | dati categorici o a celle; per vedere la struttura "a mosaico" (Voronoi) del campionamento |
| idw | media pesata con pesi 1/dp sui k vicini più prossimi | potenza p, numero di vicini k | metodo robusto di uso generale; p alto = superficie più "a isole" attorno ai punti |
| bilinear | interpolazione bilineare nella cella di una griglia regolare | — | dati già su griglia (raster, output di modelli); esatto sui nodi, continuo ovunque |
| rbf | funzioni di base radiali di tipo thin‑plate spline, con regolarizzazione diagonale e termine polinomiale di primo grado (piastra sottile vincolata ai punti) | regolarizzazione (smoothing) | superfici lisce da punti sparsi; il termine polinomiale garantisce la riproduzione esatta dei trend lineari, la regolarizzazione evita oscillazioni con dati rumorosi |
Proprietà comuni: le query spaziali (nearest e k‑NN dell'IDW) sono esatte, non euristiche; l'interpolazione avviene in coordinate dati e il risultato resta in z grezzo (le scale visive non toccano i valori).
Confrontare i metodi: nella card della serie, il selettore Al cambio di metodo decide se il nuovo interpolante aggiorna la serie corrente (default) o viene aggiunto come nuova serie, lasciando intatta l'originale. Nel secondo caso ogni cambio di metodo produce un layer in più (nominato col metodo usato), pronto per il confronto visivo, la sezione 2D multi‑serie o la Differenza (A − B) del pannello Analisi.
Confronto con GRASS GIS
Per orientarsi: i moduli di interpolazione più usati in GRASS e il loro equivalente (o assenza) in func3d.
| Modulo GRASS | Metodo | In func3d |
|---|---|---|
v.surf.idw, r.surf.idw |
inverse distance weighting | sì (idw, con k vicini e potenza regolabili) |
r.resamp.interp |
nearest / bilineare / bicubica / Lanczos su griglie | sì, tutti (nearest, bilineare, bicubica, Lanczos) |
v.surf.rst, r.fillnulls |
regularized spline with tension (RST, Mitášová–Mitáš) | sì (rst, con tensione e smoothing; il parente senza tensione resta rbf thin‑plate spline) |
v.surf.bspline |
B‑spline bilineari/bicubiche con regolarizzazione di Tykhonov | sì (bspline: LSQ bicubica + Tykhonov sulle differenze seconde) |
v.krige |
kriging ordinario (via R) | sì (krige: kriging ordinario locale, variogramma esponenziale auto‑fittato con nugget/sill/range sovrascrivibili) |
addon r.surf.nnbathy |
natural neighbor (Sibson) | sì (natural, Sibson esatto via Delaunay) |
I metodi nati da questo confronto
I tre candidati individuati qui sotto sono stati poi implementati e oggi sono selezionabili nella card della serie (il calcolo gira nel browser):
- RST (spline con tensione) — il metodo "firma" di GRASS
(
v.surf.rst): kernel di Mitášová–Mitáš E1(ρ)+ln ρ+γ con trend costante. La tensione (default 40, normalizzata sulla diagonale dei dati) fa passare con continuità da una piastra rigida a una membrana; lo smoothing allenta il passaggio esatto per i punti. - Bicubica (griglia regolare) — il parallelo di
r.resamp.interp method=bicubic: Hermite C¹ separabile con derivate alle differenze centrate pesate sul passo (funziona anche a passo variabile); esatta sulle quadratiche, ai bordi derivate unilatere del 2º ordine. - Natural neighbor (Sibson) — per punti sparsi non uniformi: triangolazione di Delaunay e pesi pari alle aree "rubate" alle celle di Voronoi dei vicini (inserimento virtuale del punto di query). Esatta sui punti, liscia, senza parametri; fuori dallo scafo convesso non estrapola (buco).
Nel secondo giro sono arrivati anche Lanczos (griglia uniforme, sinc finestrata 6×6, esatta nei nodi), B‑spline con smoothing (fit ai minimi quadrati su una rete di controllo bicubica + regolarizzazione di Tykhonov sulle differenze seconde: costanti e piani non penalizzati, il λ governa la lisciatura dei dati rumorosi) e il kriging ordinario locale (variogramma esponenziale fittato in automatico sul variogramma empirico; nugget, sill e range si possono imporre a mano — per la geostatistica seria, con varianza di stima e validazione, restano preferibili R/GRASS a monte). La tabella qui sopra è ora tutta a "sì".
La scelta dei punti base (RBF e RST)
RBF e RST risolvono un sistema denso M×M, dove M è il numero di punti base: con N punti di misura non si può prendere M = N, e il parametro Max punti base mette il tetto. Storicamente la selezione era «uno ogni k» nell'ordine dell'array — una scelta che dipende da come i dati sono stati raccolti, per transetti o per campagne successive, e che su dati a grappoli lascia zone senza alcuna base: lì l'interpolazione non ha appoggio e inventa.
Ora il metodo si scegle nella card:
| Metodo | Che cosa fa | Quando serve |
|---|---|---|
| uno ogni k (ordine dei dati) | prende un punto ogni k nell'ordine in cui stanno nel file | comportamento storico, resta il predefinito: cambiare in silenzio i risultati di chi ha già tarato un grafico sarebbe peggio che lasciargli scegliere |
| copertura massima (FPS) | farthest point sampling: a ogni passo aggiunge il punto più lontano da quelli già scelti, minimizzando il raggio di copertura | dati a grappoli o per transetti, dove conta che nessuna zona resti senza base; è deterministico |
| copertura casuale (k‑means++) | estrazione pesata su D² (la distanza al più vicino già scelto): copre bene ma senza inseguire sempre il massimo, quindi è meno sensibile ai punti isolati | quando un singolo outlier lontanissimo attirerebbe FPS; il seme rende la scelta riproducibile |
I due metodi geometrici stanno in js/local/func3d/campionamento.js, libreria
a sé con collaudo headless: il criterio di giudizio è il raggio di
copertura (la massima distanza fra un punto qualsiasi e la base più vicina),
che è esattamente quello che conta per una base radiale. Su una griglia
20×20 con 25 basi FPS arriva vicino al raggio teorico della griglia regolare,
mentre «uno ogni k» resta molto sopra; su dati a grappoli il distacco
è netto.
Interpolare una seconda grandezza
Quando il colore viene da una colonna diversa dalla quota (vedi dimensioni extra in Funzioni e serie dati) quella colonna va interpolata come la quota: stesso metodo, stessi parametri, stessa griglia. Il modo in cui è realizzato vale la pena di dirlo, perché è una scelta di manutenzione: non esiste una seconda macchina di interpolazione per i campi tematici, ma un dataset sintetico identico all'originale con la colonna scelta al posto di z, che passa per gli stessi undici metodi. Così non ci sono due strade da tenere allineate, e un metodo aggiunto domani vale subito anche per la tematizzazione. Il dataset sintetico è nascosto: non compare fra le funzioni scegliibili.
Esclusi e perché
- LOESS 2D / polinomi locali — per dati molto rumorosi produce trend leggibili; sovrapponibile però all'RBF regolarizzato e alla B‑spline con smoothing già disponibili. Priorità bassa.
Nota: per l'analisi geostatistica vera e propria (kriging con variografia, validazione incrociata, dati georiferiti) restano preferibili gli strumenti GIS dedicati; func3d punta all'esplorazione visuale interattiva.
Keywords: interpolazione, nearest, IDW, bilineare, RBF, thin plate spline, GRASS GIS, kriging