QGIS: fare il join di prossimità

Nella versione di QGIS 3.8 Zanzibar sono state introdotte ben 58 nuove feature e tra queste spicca un algoritmo molto potente Join attributes by nearest sviluppato da Nyall Dawson (North Road).

Cosa fa questo algoritmo

L’algoritmo permette di unire gli attributi dei k elementi prossimi più vicini; cioè permette, a partire da due layer vettoriali, di unire gli attributi dei due layer anche se non si toccano ma che si trovano nelle vicinanze. [qui maggiori dettagli]

Esempio pratico

Supponiamo di avere due layer vettoriali, uno lineare (le strade si Palermo) e uno puntuale (gli incidenti stradali, sempre di Palermo) e di voler associare ad ogni punto l’arco della rete stradale più vicina. I due layer, in generale, non si toccato e quindi occorre usare un algoritmo che tenga conto della vicinanza, in modo da associare gli incidenti al tratto di strada più vicino.

Screenshot QGIS
Screenshot QGIS

Dal menu menu Processing → Strumenti → Join attributes by nearest oppure ctrl + k e digitare a Join attributes by nearest e poi invio:

Algoritmo Join attributes by nearest
  1. layer di ingresso : i punti che rappresentano gli incidenti;
  2. vettore in ingresso 2: che rappresenta le strade;
  3. selezionare gli attributi da unire (dal layer delle strade);
  4. aggiungere un prefisso che si vedrà nella tabella attributi;
  5. numero massimo di elementi più vicini;
  6. distanza massima entro cui cercare [opzionale];
  7. percorso del nuovo file;
  8. Esegui.

questo è l’output:

tabella attributi nuovo layer
  • in blue: la tabella originale, layer di ingresso;
  • in verde: attributi del secondo layer unito;
  • in giallo: attributi calcolati dall’algoritmo:
    • n: indica il numero di archi più vicini;
    • distance: indica la distanza tra le feature;
    • feature_x: coordinata x del punto più vicino della feature layer di ingresso;
    • feature_y: coordinata y del punto più vicino della feature layer di ingresso;
    • nearest_x: coordinata x del punto (closest_point) più vicino al secondo layer;
    • nearest_y: coordinata x del punto (closest_point) più vicino al secondo layer;

gli attributi feature_x, feature_y, nearest_x e nearest_y possono essere utilizzati per creare e visualizzare il segmento di minima distanza tra gli oggetti dei due layer, per esempio tramite una tematizzazione e la seguente espressione:

make_line(
make_point( "feature_x" , "feature_y"  ) ,
make_point( "nearest_x" , "nearest_y" )
)
Screenshot QGIS

NOTE FINALI: Questo algoritmo utilizza calcoli puramente cartesiani per la distanza e non considera le proprietà geodetiche o ellissoidali nel determinare la prossimità delle caratteristiche.

Riferimenti


Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!

Se il post vi è stato utile contribuite a mantenerlo aggiornato PayPal

4 pensieri su “QGIS: fare il join di prossimità

  1. Buongiorno Salvatore e grazie per le tue spiegazioni sempre utilissime e molto chiare.

    Mi domandavo se è possibile utilizzare questo algoritmo anche tra un layer puntuale e uno poligonale, al fine di attribuire ad un layer poligonale gli attributi del layer puntuale più prossimo.

    Qualora sia fattibile, l’algoritmo quale “parte” (centroide, vertice, etc) del poligono utilizza per calcolare la distanza rispetto al layer puntuale, in modo da individuare quello più vicino?

    Grazie mille

    Piace a 1 persona

      1. Buongiorno Salvatore e grazie mille per la risposta.

        Avrei bisogno ancora di un chiarimento: è corretto quindi dire che l’algoritmo riesce ad individuare nel layer puntuale l’elemento più prossimo al layer poligonale, in quanto calcola la distanza tra tutti gli elementi del layer puntuale e tutti i vertici del perimetro del layer poligonale individuando, quindi, l’elemento puntuale che risulta più prossimo al perimetro della geometria?

        Grazie ancora di tutto

        "Mi piace"

  2. Buongiorno,
    la distanza minima tra i punti e i perimetri dei poligoni considera la vera forma del poligono, quindi la distanza minima potrebbe essere anche rispetto un lato del perimetro, non necessariamente il vertice del poligono più vicino.
    N

    Piace a 1 persona

Scrivi una risposta a Maria Raffaella Ortolani Cancella risposta

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