Vai al contenuto

Spatial join con condizione

L’unione spaziale di attributi è un problema frequente in ambito GIS - si tratta di trasferire attributi da un layer ad un altro basandosi solo sulle loro reciproche relazioni spaziali, in questo esempio aggiungiamo una difficoltà in più, ovvero, una condizione.

Il quesito nasce da questa challenge, proposta da Ujaval Gandhi e chiede:

Collegare ciascuna scuola (schools) all'università (college) più vicina nella stessa regione amministrativa. Vedere l'immagine allegata per l'output desiderato.

qui i dati: https://t.co/SyCbIQWnAy

Soluzione proposta da Ujaval Gandhi


nel linguaggio umano:

video youtube: <>

Soluzione proporta da Totò Fiandaca

nel linguaggio umano:
Crea una variabile e la popola con il valore massimo della popolazione dei punti che ricadono dentro ogni poligono (ma non so ancora il nome della città), quindi ripeto la ricerca creando una mappa (map("name","pop_max")) e tra le varie mappe, prendo quella con popolazione maggiore (quest'ultima ricerca la fa array_find).

make_line(
  eval('overlay_nearest(\'colleges\',$geometry,filter:=IDp='||"IDp"||')')[0],$geometry)

Issue https://github.com/qgis/QGIS/issues/43146


Funzioni e variabili utilizzate: