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. basic 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 è:

  1. Enunciare il problema

  2. Trovare i dati

  3. Analizzare il problema

  4. Presentare i risultati

6.2.2. basic 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:

  1. Deve essere in Swellendam

  2. Deve essere ad una distanza, in automobile, ragionevole da una scuola (diciamo 1km)

  3. Deve avere una dimensione maggiore di 100m quadrati

  4. Entro 50m da una strada principale

  5. Entro 500m da un ristorante

6.2.3. basic I dati

Per rispondere a queste domande, avremo bisogno dei seguenti dati:

  1. Le proprietà residenziali (edifici) nell’area

  2. Le strade dentro e attorno alla città

  3. La posizione di scuole e ristoranti

  4. 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. basic Follow Along: Iniziare un progetto e prendere di dati

Prima dobbiamo caricare i dati con cui lavorare.

  1. Inizia un nuovo progetto QGIS

  2. Se vuoi, puoi aggiungere una mappa di sfondo. Apri il Browser e carica la mappa di sfondo OSM dal menu XYZ Tiles.

    ../../../_images/osm_swellendam.png
  3. Nel database Geopackage training_data.gpkg, troverai la maggior parte dei dati che useremo in questo capitolo:

    1. buildings

    2. roads

    3. restaurants

    4. schools

    Caricali, ed anche landuse.sqlite.

  4. 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 and footway. 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.

  5. Clicca col tasto destro sul layer roads e scegli Filtro….

  6. 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 e IN esclude tutti gli elementi che hanno questi valori nel campo highway.

    IS NOT NULL combinato con l’operatore AND esclude le strade con nessun valore nel campo highway.

    Nota l’icona indicatore indicatorFilter 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:

../../../_images/osm_swellendam_2.png

6.2.5. basic 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.

  1. Clicca col tasto destro il layer roads nel pannello Layers

  2. Clicca Esporta –> Salva Elementi Come…

  3. Nella finestra di dialogo Salva Vettore Come scegli il Formato GeoPackage

  4. Per il Nome File clicca su , e chiama il nuovo GeoPackage vector_analysis

  5. Cambia il Nome vettore in roads_34S

  6. Cambia il SR in WGS 84 / UTM zone 34S

  7. Clicca su OK:

    ../../../_images/save_roads_34S.png

    Questo creerà il nuovo database GeoPackage e aggiungerà il layer roads_34S.

  8. Ripeti questo processo per ogni layer, creando un nuovo layer nel file vector_analysis.gpkg GeoPackage con _34S aggiunto al nome originale.

    Su macOS, premi il pulsante Sostituire nella finestra di dialogo che si apre per consentire a QGIS di sovrascrivere il GeoPackage esistente.

    Nota

    Quando scegli di salvare un layer in un GeoPackage esistente, QGIS aggiunge quel layer insieme ai layer esistenti nel GeoPackage, se non esiste già un layer con lo stesso nome.

  9. Rimuovi tutti i vecchi layer dal progetto

  10. 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. basic Follow Along: Analisi del problema: distanze da scuole e strade

QGIS ti permette di calcolare le distanze tra qualunque oggetto vettore.

  1. Assicurati che solo i layer roads_34S e buildings_34S siano visibili (per semplificare la mappa mentre ci lavoriamo)

  2. Clicca su Processing ► Strumenti per aprire il nucleo analitico di QGIS. Fondamentalmente, tutti gli algoritmi (per analisi vettoriale e raster) sono disponibili in questa raccolta di strumenti.

  3. Inizieremo calcolando l’area a roads_34S usando l’algoritmo Buffer. Puoi trovarlo nel gruppo Geometria vettore.

    ../../../_images/processing_buffer_1.png

    Oppure puoi scrivere buffer nel menu di ricerca nella parte alta della raccolta:

    ../../../_images/processing_buffer_2.png
  4. Fai doppio click su di esso per aprire il dialogo dell’algoritmo

  5. Seleziona roads_34S come Layer in ingresso, imposta Distanza a 50 e usa i valori predefiniti per gli altri parametri.

    ../../../_images/vector_buffer_setup.png
  6. 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.

  7. Normalmente, Processing crea dei layer temporanei e li aggiunge al pannello Layer. Puoi aggiungere il risultato al database GeoPackage con:

    1. Cliccando sul pulsante:guilabel: e scegliere Salva come GeoPackage…

    2. Nominando il nuovo layer roads_buffer_50m

    3. Salvandolo nel file vector_analysis.gpkg

    ../../../_images/buffer_saving.png
  8. Clicca su Esegui, e poi chiudi il dialogo Buffer

    Ora la tua mappa dovrebbe apparire come questa:

    ../../../_images/roads_buffer_result.png

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:

  1. Deseleziona il layer roads_buffer_50m e ricrea il buffer con Dissolvi il resultato abilitato.

    ../../../_images/dissolve_buffer_setup.png
  2. Salva il risultato come roads_buffer_50m_dissolved

  3. Clicca su Esegui e chiudi il dialogo Buffer

Una volta aggiunto il layer al pannello Layers, dovrebbe apparire come questo:

../../../_images/dissolve_buffer_results.png

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. basic 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.

6.2.8. basic 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 Sovrapposizione Vettore in Strumenti di Processing.

  1. Usa i due layer buffer come Layer in ingresso e Layer di sovrapposizione, scegli il GeoPackage vector_analysis.gpkg in Intersezione con Layer name road_school_buffers_intersect. Lascia il resto come suggerito (predefinito).

    ../../../_images/school_roads_intersect.png
  2. Clicca su Esegui.

    Nell’immagine di seguito, le aree blu sono quelle dove entrambi i criteri di distanza sono soddisfatti.

    ../../../_images/intersect_result.png
  3. Puoi rimuovere i due layer buffer e tenere solo quello che mostra dove si sovrappongono, dato che è quello che vogliamo sapere:

    ../../../_images/final_intersect_result.png

6.2.9. basic Follow Along: Estrarre gli edifici

Ora abbiamo l’area da sovrapporre agli edifici. Ora, vogliamo estrarre gli edifici in quell’area.

  1. Cerca la voce di menu Selezione eettore ► Estrai per posizione in Strumenti di Processing

  2. Seleziona 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 in vector_analysis.gpkg, e nomina il layer well_located_houses.

    ../../../_images/location_select_dialog.png
  3. Clicca Esegui e chiudi il dialogo

  4. Probabilmente troverai che non sembra cambiato molto. Se è così, muovi il layer well_located_houses in cima alla lista dei layer e poi ingrandisci.

    ../../../_images/select_zoom_result.png

    Gli edifici rossi sono quelli che corrispondono ai nostri criteri, mentre gli edifici in verde non li soddisfano.

  5. Ora abbiamo due layer separati e possiamo rimuovere buildings_34S dall’elenco dei layer.

6.2.10. moderate 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.

6.2.11. basic Follow Along: Selezionare gli edifici della giusta dimensione

Per vedere gli edifici della giusta dimensione (più di 100 metri quadrati), dobbiamo calcolarne la dimensione.

  1. Seleziona il layer houses_restaurants_500m ed apri il Calcolatore di Campi cliccando sul pulsante calculateField Apri Calcolatore di Campi nella barra strumenti principale o nella tabella attributi

  2. 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 Geometria.

    ../../../_images/buildings_area_calculator.png

    Il nuovo campo area conterrà l’area di ogni edificio in metri quadrati

  3. Clicca OK. Il campo AREA è stato aggiunto alla fine della tabella degli attributi.

  4. Clicca il pulsante toggleEditing Attiva Modifiche per finire la modifica, e salva quando ti viene chiesto.

  5. Nella scheda Sorgente delle proprietà del layer, imposta Filtro delle geometrie della sorgente dati in "AREA" >= 100.

    ../../../_images/buildings_area_query.png
  6. 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. basic 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.