6.2. Lesson: Analisi vettoriale
I dati vettoriali possono anche essere analizzati per rivelare come elementi differenti interagiscono nello spazio. Ci sono molte funzioni relative all’analisi, quindi non le vedremo tutte. Invece, porremo una domanda e proveremo a rispondere utilizzando gli strumenti forniti da QGIS.
Scopo della lezione: Porre una domanda e rispondere utilizzando gli strumenti di analisi.
6.2.1. Il procedimento GIS
Prima di iniziare, è utile fare una breve introduzione sul procedimento che può essere utilizzato per risolvere un problema. Il modo di procedere è:
Enunciare il problema
Trovare i dati
Analizzare il problema
Presentare i risultati
6.2.2. Il problema
Iniziamo il procedimento stabilendo il problema da risolvere. Per esempio, sei un agente immobiliare e stai cercando una proprietà immobiliare in Swellendam per dei clienti con i seguenti requisiti:
Deve essere in Swellendam
Deve essere ad una distanza, in automobile, ragionevole da una scuola (diciamo 1km)
Deve avere una dimensione maggiore di 100m quadrati
Entro 50m da una strada principale
Entro 500m da un ristorante
6.2.3. I dati
Per rispondere a queste domande, avremo bisogno dei seguenti dati:
Le proprietà residenziali (edifici) nell’area
Le strade dentro e attorno alla città
La posizione di scuole e ristoranti
Le dimensioni degli edifici
Questi dati sono disponibili tramite OSM, e dovresti scoprire che i dati utilizzati per questo manuale possono essere utilizzati per questa lezione.
Se vuoi scaricare i dati di un’altra area, vai a Introduction Chapter per leggere come fare.
Nota
Anche se i dati scaricati da OSM hanno campi dati consistenti, la copertura ed i dettagli variano. Se trovi che la regione scelta non contiene informazioni sui ristoranti, per esempio, puoi dover scegliere una regione diversa.
6.2.4. Follow Along: Iniziare un progetto e prendere di dati
Prima dobbiamo caricare i dati con cui lavorare.
Inizia un nuovo progetto QGIS
Se vuoi, puoi aggiungere una mappa di sfondo. Apri il Browser e carica la mappa di sfondo OSM dal menu XYZ Tiles.
Nel database Geopackage
training_data.gpkg
, troverai la maggior parte dei dati che useremo in questo capitolo:buildings
roads
restaurants
schools
Caricali, ed anche
landuse.sqlite
.Ingrandisci per vedere Swellendam, South Africa
Prima di procedere filtreremo il layer roads, in modo da avere solo alcuni tipi specifici di strade con cui lavorare.
Alcune strade in OSM sono indicate come
unclassified
,tracks
,path
andfootway
. Vogliamo escluderle dal nostro insieme di dati e concentrarci sugli altri tipi di strade, più adatte per questo esercizio.Inoltre, i dati OSM potrebbero non essere ovunque aggiornati, escluderemo anche i valori
NULL
.Clicca col tasto destro sul layer
roads
e scegli Filtro….Nel dialogo che appare filtriamo questi elementi con la seguente espressione:
"highway" NOT IN ('footway', 'path', 'unclassified', 'track') AND "highway" IS NOT NULL
La concatenazione dei due operatori
NOT
eIN
esclude tutti gli elementi che hanno questi valori nel campohighway
.IS NOT NULL
combinato con l’operatoreAND
esclude le strade con nessun valore nel campohighway
.Nota l’icona indicatore vicino al layer roads. Ti aiuta a ricordare che questo layer ha un filtro attivo, così alcuni elementi potrebbero non essere disponibili per il progetto.
La mappa con tutti i dati dovrebbe apparire come questa:
6.2.5. Try Yourself Convertire il SR dei layer
Dato che andremo a misurare distanze all’interno dei nostri layer, dobbiamo cambiare il sistema di riferimento SR dei layer. Per fare questo, abbiamo bisogno di selezionare ogni layer a turno, salvare il layer in uno nuovo con la nostra nuova proiezione, poi importare quel nuovo layer nella nostra mappa.
Ci diverse opzioni, p.e. puoi esportare ogni layer come uno shapefile nel formato ESRI, puoi aggiungere i layer ad un file GeoPackage esistente, oppure puoi creare un altro file GeoPackage e riempirlo con i nuovi layer riproiettati. Vedremo l’ultima opzione, quindi il file training_data.gpkg
rimarrà pulito. Sentiti libero di scegliere l’opzione che preferisci.
Nota
In questo esempio, useremo il SR WGS 84 / UTM zone 34S, ma potresti usare un SR UTM più appropriato per la tua regione.
Clicca col tasto destro il layer roads nel pannello Layers
Clicca Esporta –> Salva Elementi Come…
Nella finestra di dialogo Salva Vettore Come scegli il Formato GeoPackage
Per il Nome File clicca su …, e chiama il nuovo GeoPackage
vector_analysis
Cambia il Nome vettore in
roads_34S
Cambia il SR in WGS 84 / UTM zone 34S
Clicca su OK:
Questo creerà il nuovo database GeoPackage e aggiungerà il layer
roads_34S
.Ripeti il procedimento per gli altri layer, creando un nuovo layer nel file GeoPackage
vector_analysis.gpkg
appendendo_34S
al nome originale e rimuovendo ogni altro layer dal progetto.Nota
Quando scegli di aggiungere un layer ad un GeoPackage esistente, QGIS appenderà il layer al GeoPackage.
Una volta completato il procedimento per ogni layer, clicca col tasto destro su ogni layer e clicca su Zoom sul layer per focalizzare la mappa sull’area di interesse.
Ora che abbiamo converito i dati OSM ad una proiezione UTM, possiamo iniziare i nostri calcoli.
6.2.6. Follow Along: Analisi del problema: distanze da scuole e strade
QGIS ti permette di calcolare le distanze tra qualunque oggetto vettore.
Assicurati che solo i layer
roads_34S
ebuildings_34S
siano visibili (per semplificare la mappa mentre ci lavoriamo)Clicca su
per aprire il nucleo analitico di QGIS. Fondamentalmente, tutti gli algoritmi (per analisi vettoriale e raster) sono disponibili in questa raccolta di strumenti.Inizieremo calcolando l’area a
roads_34S
usando l’algoritmo Buffer. Puoi trovarlo nel gruppo .Oppure puoi scrivere
buffer
nel menu di ricerca nella parte alta della raccolta:Fai doppio click su di esso per aprire il dialogo dell’algoritmo
Seleziona
roads_34S
come Layer in ingresso, imposta Distanza a 50 e usa i valori predefiniti per gli altri parametri.L’unità di misura predefinita per Distanza è metri perché l’insieme dei dati di partenza è in un Sistema di Coordinate Proiettate che utilizza il metro come unità di misura. Puoi usare la lista a scomparsa per scegliere altre unità di misura come chilometri, yards, ecc.
Nota
Se stai tentando di creare un buffer su un layer con un Sistema di Coordinate Geografiche, Processing ti avviserà e suggerirà di riproiettare il layer su un Sistema di Coordinate metriche.
Normalmente, Processing crea dei layer temporanei e li aggiunge al pannello Layer. Puoi aggiungere il risultato al database GeoPackage con:
Cliccando sul pulsante:guilabel:… e scegliere Salva come GeoPackage…
Nominando il nuovo layer
roads_buffer_50m
Salvandolo nel file
vector_analysis.gpkg
Clicca su Esegui, e poi chiudi il dialogo Buffer
Ora la tua mappa dovrebbe apparire come questa:
Se il nuovo layer è in cima alla lista Layer, probabilmente oscurerà la maggior parte della mappa, ma questo ti dà tutte le aree nella regione che sono entro 50m da una strada.
Nota che ci sono aree distinte all’interno del buffer, che corrispondono ad ogni singola strada. Per eliminare questo problema:
Deseleziona il layer roads_buffer_50m e ricrea il buffer con Dissolvi il resultato abilitato.
Salva il risultato come roads_buffer_50m_dissolved
Clicca su Esegui e chiudi il dialogo Buffer
Una volta aggiunto il layer al pannello Layers, dovrebbe apparire come questo:
Ora non ci sono suddivisioni inutili.
Nota
La Guida breve alla destra del dialogo spiega come lavora l’algoritmo. Se vuoi maggiori informazioni, clicca sul pulsante Aiuto nella parte bassa per aprire una guida più dettagliata dell’algoritmo.
6.2.7. Try Yourself Distanza dalle scuole
Usa l’approccio appena visto per creare un buffer per le scuole.
Deve avere un raggio di 1 km
. Salva il nuovo layer nel file vector_analysis.gpkg
come schools_buffer_1km_dissolved
.
Soluzione
La tua finestra di dialogo del buffer dovrebbe assomigliare a questa:
La Distanza del buffer è 1 chilometro.
Il valore in Segmenti è impostato a 20. Questo è opzionale, ma è raccomandato, perché rende i buffer di uscita più uniformi. Confronta qui:
Per fare ciò:
La prima immagine mostra il buffer con il valore Segmenti impostato a 5 e la seconda mostra il valore impostato a 20. Nel nostro esempio, la differenza è minima, ma si può vedere che i bordi del buffer sono più lisci con il valore più alto.
6.2.8. Follow Along: Intersecare le aree
Ora abbiamo identificato le aree dove le strade sono a meno di 50 metri e le aree dove ci sono scuole entro 1 km (in linea d’aria, non tramite strade). Ma ovviamente, vogliamo solo le aree dove entrambi questi criteri sono soddisfatti. Per fare questo, dobbiamo usare lo strumento Intersezione. Puoi trovarlo nel gruppo in Strumenti di Processing.
Usa i due layer buffer come Layer in ingresso e Layer di sovrapposizione, scegli il GeoPackage
vector_analysis.gpkg
in Intersezione con Layer nameroad_school_buffers_intersect
. Lascia il resto come suggerito (predefinito).Clicca su Esegui.
Nell’immagine di seguito, le aree blu sono quelle dove entrambi i criteri di distanza sono soddisfatti.
Puoi rimuovere i due layer buffer e tenere solo quello che mostra dove si sovrappongono, dato che è quello che vogliamo sapere:
6.2.9. Follow Along: Estrarre gli edifici
Ora abbiamo l’area da sovrapporre agli edifici. Ora, vogliamo estrarre gli edifici in quell’area.
Cerca la voce di menu
in Strumenti di ProcessingSeleziona
buildings_34S
in Estrai elementi da. Abilita interseca in Dove gli elementi (predicato geometrico), seleziona il layer buffer di intersezione in Rispetto agli elementi da. Salva invector_analysis.gpkg
, e nomina il layerwell_located_houses
.Clicca Esegui e chiudi il dialogo
Probabilmente troverai che non sembra cambiato molto. Se è così, muovi il layer well_located_houses in cima alla lista dei layer e poi ingrandisci.
Gli edifici rossi sono quelli che corrispondono ai nostri criteri, mentre gli edifici in verde non li soddisfano.
Ora abbiamo due layer separati e possiamo rimuovere
buildings_34S
dall’elenco dei layer.
6.2.10. Try Yourself Ulteriore selezione degli edifici
Ora abbiamo un layer che ci mostra tutti gli edifici entro 1km da una scuola ed entro 50m da una strada. Ora dobbiamo ridurre questa selezione per vedere solo gli edifici entro 500m da un ristorante.
Usando il procedimento prima descritto, crea un nuovo layer chiamato houses_restaurants_500m che poi filtrerà il layer well_located_houses per mostrare solo gli edifici entro 500m da un ristorante.
Soluzione
Per creare il nuovo layer houses_restaurants_500m, passiamo attraverso un processo in due fasi:
Per prima cosa, crea un buffer di 500m intorno ai ristoranti e aggiungi il layer alla mappa:
Successivamente, estrai gli edifici all’interno di quell’area buffer:
La tua mappa dovrebbe ora mostrare solo gli edifici che si trovano entro 50 m da una strada, 1 km da una scuola e 500 m da un ristorante:
6.2.11. Follow Along: Selezionare gli edifici della giusta dimensione
Per vedere gli edifici della giusta dimensione (più di 100 metri quadrati), dobbiamo calcolarne la dimensione.
Seleziona il layer houses_restaurants_500m ed apri il Calcolatore di Campi cliccando sul pulsante Apri Calcolatore di Campi nella barra strumenti principale o nella tabella attributi
Seleziona Crea un nuovo campo, imposta il Nome campo di uscita in
AREA
, scegli Numero decimale (real) come Tipo campo in uscita, e scegli$area
dal gruppo .Il nuovo campo area conterrà l’area di ogni edificio in metri quadrati
Clicca OK. Il campo
AREA
è stato aggiunto alla fine della tabella degli attributi.Clicca il pulsante Attiva Modifiche per finire la modifica, e salva quando ti viene chiesto.
Nella scheda Filtro delle geometrie della sorgente dati in
delle proprietà del layer, imposta"AREA" >= 100
.Clicca OK.
La mappa dovrebbe ora mostrarti quegli edifici che soddisfano i nostri criteri iniziali e che sono di dimensione maggiore di 100 metri quadrati.
6.2.12. |base| Try Yourself
Salva la soluzione come nuovo layer, usando lo stesso metodo imparato poco fa. Il file dovrebbe essere salvato nel database GeoPackage, con nome solution
.
6.2.13. In Conclusion
Usando l’approccio alla soluzione dei problemi GIS assieme agli strumenti di analisi vettoriale di QGIS, sei stato in grado di risolvere un problema con molteplici criteri in modo facile e veloce.
6.2.14. What’s Next?
Nella prossima lezione, vedremo come calcolare la distanza minore tra un punto e l’altro lungo le strade.