13.2. Creare Layer
I layer possono essere creati in molti modi, tra cui:
vuoti da zero
layer da layer esistenti
layer dagli appunti
layer come risultato di una query di tipo SQL basata su uno o più layer (virtual layers)
QGIS fornisce anche strumenti per importare/esportare da/a diversi formati.
13.2.1. Creare nuovi layer Vettore
QGIS permette di creare nuovi layer in diversi formati. Fornisce strumenti per la creazione di layer GeoPackage, Shapefile, SpatiaLite, formato GPX e Layer Temporaneo (anche detto layer in memoria). La creazione di un new GRASS layer è supportata dal plugin GRASS.
13.2.1.1. Creare un nuovo vettore GeoPackage
Per creare un nuovo layer GeoPackage, premi il pulsante nel menu o dalla barra degli strumenti Barra degli Strumenti per la Gestione della Sorgente Dati. La finestra di dialogo Nuova Layer GeoPackage verrà visualizzata come mostrato in Fig. 13.15.
Il primo passo è indicare la posizione del file del database. Questo può essere fatto premendo il pulsante … a destra del campo Database e selezionare un file GeoPackage esistente o crearne uno nuovo. QGIS aggiungerà automaticamente la giusta estensione al nome fornito.
Dare un nome al nuovo layer / tabella (Nome tabella)
Definisci il Tipo di geometria. Se non è un layer senza geometria, puoi anche specificare Includi dimensione Z e/o Includi valori M.
Specifica il sistema di riferimento delle coordinate usando il pulsante
Per aggiungere campi al layer che stai creando:
Inserisci il Nome del campo
Seleziona il Tipo. I tipi supportati sono Dati testo, Numero intero (sia intero che intero64), Numero decimale, Data e Data e Ora, Binario (BLOB) e Booleano.
A seconda del formato di dati selezionato, inserisci la Lunghezza massima dei valori.
Ripeti i passi precedenti per ogni campo che vuoi aggiungere
Una volta che sei soddisfatto degli attributi, clicca su OK. QGIS aggiungerà il nuovo layer alla legenda, e potrai modificarlo come descritto nella sezione Modifica di un layer esistente.
Per impostazione predefinita, quando si crea un layer GeoPackage, QGIS genera una colonna Colonna id elemento chiamata fid
che agisce come chiave primaria del layer. Il nome può essere cambiato. Il campo geometria, se disponibile, è chiamato geomety
, e puoi scegliere Crea un indice spaziale su di esso. Queste opzioni possono essere trovate sotto Opzioni Avanzate insieme al Identificatore Layer (nome breve e leggibile del layer) e alla Descrizione Layer.
Un’ulteriore gestione dei layer di GeoPackage può essere fatta con il DB Manager.
13.2.1.2. Creare un nuovo layer Shapefile
Per creare un nuovo layer in formato ESRI Shapefile, premi il pulsante nel menu o dalla barra degli strumenti Barra degli Strumenti per la Gestione della Sorgente Dati. Viene visualizzata la finestra di dialogo Nuovo Layer Shapefile come mostrato in Fig. 13.16.
Fornisci un percorso e un nome di file usando il pulsante … accanto a Nome del file. QGIS aggiungerà automaticamente la giusta estensione al nome fornito.
Poi, indica la Codifica file dei dati
Scegli il Tipo di geometria del layer: Nessuna geometria ( si ottiene un file in formato
.DBF
), punto, multipunto, linea o poligonoSpecifica se la geometria deve avere dimensioni aggiuntive: Nessuna, Z (+ valori M) o valori M.
Specifica il sistema di riferimento delle coordinate usando il pulsante
Per aggiungere campi al layer che stai creando:
Inserisci il Nome del campo
Seleziona il Tipo dei dati. Sono supportati solo gli attributi Numero Decimale, Numero Intero, Dati testo e Data.
A seconda del formato di dati selezionato, inserisci Lunghezza e Precisione.
Ripeti i passi precedenti per ogni campo che vuoi aggiungere
Una volta che sei soddisfatto degli attributi, clicca su OK. QGIS aggiungerà il nuovo layer alla legenda, e potrai modificarlo come descritto nella sezione Modifica di un layer esistente.
Per impostazione predefinita, viene aggiunta una prima colonna numero intero id
, ma può essere rimossa.
13.2.1.3. Creare un nuovo layer SpatiaLite
Per creare un nuovo layer SpatiaLite, premi il pulsante nel menu o dalla barra degli strumenti Barra degli Strumenti per la Gestione della Sorgente Dati. La finestra di dialogo Nuovo Layer SpatiaLite verrà visualizzata come mostrato in Fig. 13.17.
Il primo passo è indicare la posizione del file del database. Questo può essere fatto premendo il pulsante … a destra del campo Database e selezionare un file SpatiaLite esistente o crearne uno nuovo. QGIS aggiungerà automaticamente la giusta estensione al nome fornito.
Fornisci un nome (Nome Layer) per il nuovo layer
Definisci il Tipo di geometria. Se non è un layer senza geometria, puoi anche specificare Includi dimensione Z e/o Includi valori M.
Specifica il sistema di riferimento delle coordinate usando il pulsante .
Per aggiungere campi al layer che stai creando:
Inserisci il Nome del campo
Seleziona il Tipo dei dati. Sono supportati solo gli attributi Numero Decimale, Numero Intero, Dati testo e Data.
Ripeti i passi precedenti per ogni campo che vuoi aggiungere
Una volta che sei soddisfatto degli attributi, clicca su OK. QGIS aggiungerà il nuovo layer alla legenda, e potrai modificarlo come descritto nella sezione Modifica di un layer esistente.
Se vuoi puoi selezionare Crea una chiave primaria autoincrementale nella sezione Opzioni Avanzate. Puoi anche rinominare la Colonna Geometria (geometry
per impostazione predefinita).
Un’ulteriore gestione dei layer di SpatiaLite può essere fatta con DB Manager.
13.2.1.4. Creare un nuovo layer GPX
Per creare un nuovo file GPX, devi prima caricare il plugin GPS. apre la finestra di dialogo Plugin. Attiva la casella di controllo Strumenti GPS.
Quando questo plugin è caricato, scegli dal menu . Nella finestra di dialogo, scegli dove salvare il nuovo file e premi Salva. Tre nuovi layer vengono aggiunti al Pannello Layer: waypoints
, routes
e tracks
.
13.2.1.5. Creare un nuovo Vettore Temporaneo
I Vettori Temporanei sono layer in-memoria, il che significa che non vengono salvati su disco e verranno eliminati quando QGIS viene chiuso. Possono essere utili per memorizzare gli elementi di cui hai bisogno temporaneamente o come layer intermedi durante le operazioni di geoprocessing.
Per creare un nuovo layer Vettore Temporaneo, scegli la voce nel menu o nella barra degli strumenti Barra degli Strumenti per la Gestione della Sorgente Dati. La finestra di dialogo Nuovo Layer Temporaneo verrà visualizzata come mostrato in Fig. 13.18. Poi:
Fornisci il Nome Layer.
Seleziona il Tipo di geometria. Qui puoi creare un:
layer di tipo
Nessuna geometria
, utilizzato come semplice tabella,layer
Punto
oMulti punto
,layer
LineString/CurvaComposta
oMultiLineString/MultiCurve
,layer
Poligono/CurvePolygon
oMultiPoligono/MultiSurface
.
Per tipologie geometria, specifica le dimensioni del dataset: controlla se scegliere Includi dimensione Z e/o Includi valori M.
Specifica il sistema di riferimento delle coordinate usando il pulsante .
Aggiungi campi al layer. Nota che a differenza di molti formati, i layer temporanei possono essere creati senza alcun campo. Questo passo è quindi opzionale.
Inserisci il Nome del campo
Seleziona il Tipo dei dati: sono supportati Testo, Numero Intero, Numero Decimale, Booleano, Data, Ora, Data e Ora e Binario (BLOB).
A seconda del formato di dati selezionato, inserisci Lunghezza e Precisione.
Ripeti i passi precedenti per ogni campo che vuoi aggiungere
Una volta che sei soddisfatto delle impostazioni, clicca su OK. QGIS aggiungerà il nuovo layer al pannello Layer, e potrai modificarlo come descritto nella sezione Modifica di un layer esistente.
Puoi anche creare layer temporanei prepopolati usando ad esempio gli appunti (vedi Creare nuovi layer dagli appunti) o come risultato di un Processing algorithm.
Suggerimento
Salvataggio permanente di un vettore temporaneo su disco
Per evitare la perdita di dati quando si chiude un progetto con layer temporanei, puoi salvare questi layer in qualsiasi formato vettoriale supportato da QGIS:
selezionando Rendi permanente nel menu contestuale del layer;
usando la voce
dal menu contestuale o il menu .
Ciascuno di questi comandi apre la finestra di dialogo Salva Elementi Come… descritta nella sezione Creare nuovi layer da layer esistente e il file salvato sostituisce quello temporaneo nel pannello Layer.
13.2.2. Creare nuovi layer da layer esistente
Sia i layer raster che vettoriali possono essere salvati in un formato diverso e/o riproiettati in un diverso sistema di riferimento di coordinate (SR) usando il menu Layer e selezionando:
o facendo clic destro sul layer nel pannelloper layer raster
o per vettori.
Trascina il layer dall’albero dei layer alla voce PostGIS nel Pannello Browser. Nota che devi avere una connessione PostGIS nel Pannello Browser.
13.2.2.1. Parametri comuni
La finestra di dialogo Salva Layer come…. mostra diversi parametri per cambiare il risultato con il salvataggio del layer. Tra i parametri comuni per raster e vettori ci sono:
Nome file: la posizione del file sul disco. Può riferirsi al layer risultato o a un contenitore che memorizza il layer (per esempio formati del tipo database come GeoPackage, SpatiaLite o Open Document Spreadsheets).
SR: può essere cambiato per riproiettare i dati.
Estensione (i valori possibili sono Estensione del Layer, Estensione della mappa o Estensione definita dall’utente)
Aggiungi il file salvato sulla mappa per aggiungere il nuovo layer alla mappa
Tuttavia, alcuni parametri sono specifici per i formati raster e vettoriali
13.2.2.2. Parametri specifici per i Raster
A seconda del formato di esportazione, alcune di queste opzioni potrebbero non essere disponibili:
Modalità uscita (può essere Dati grezzi o Immagine visualizzata)
Formato: esportazioni in qualsiasi formato raster che GDAL può scrivere, come GeoTiff, GeoPackage, MBTiles, Geospatial PDF, SAGA GIS Binary GIS Grid, Intergraph Raster, ESRI .hdr Labelled…..
Risoluzione
Opzioni di creazione: utilizzare le opzioni avanzate (compressione file, dimensioni dei blocchi, colorimetria….) quando si generano file, o da predefined create profiles relativi al formato di output o impostando ciascun parametro.
Pyramids creation
Valori nulli
13.2.2.3. Parametri specifici per i Vettori
A seconda del formato di esportazione, alcune di queste opzioni possono essere disponibili:
Formato: esporta in un qualsiasi formato vettoriale in cui GDAL può scrivere, come GeoPackage, GML, ESRI Shapefile, AutoCAD DXF, ESRI FileGDB, Mapinfo TAB o MIF, SpatiaLite, CSV, KML, ODS, …
Nome Layer: disponibile quando il Nome file si riferisce a un formato tipo contenitore, questa voce rappresenta il layer di uscita.
Codifica
Salva solo le geometrie selezionate
Seleziona i campi da esportare e le loro opzioni di esportazione. Nel caso in cui imposti i comportamenti dei campi con alcuni Edit widgets 1 ad esempio
value map
, puoi mantenere i valori visualizzati nel layer scegliendo Sostituisci tutti i valori grezzi selezionati dai valori mostrati.Esporta simbologia: opzione che puoi utilizzare principalmente per l’esportazione del formato DXF e per tutti i formati di file che gestiscono le tipologie di file OGR (vedi nota di seguito) come i formati DXF, KML, i formati tabelle:
Nessuna simbologia: stile di default dell’applicazione che legge i dati
Simbologia geometrie: salva lo stile utilizzando gli stili OGR (vedi la nota di seguito)
Simbologia simboli vettore: salva con gli stili OGR (vedi nota di seguito) ma esporta la stessa geometria più volte se sono utilizzati più simboli
Un valore di Scala può essere applicato alle ultime opzioni
Nota
OGR Feature Styles sono un modo per memorizzare lo stile direttamente nei dati come attributo nascosto. Solo alcuni formati possono gestire questo tipo di informazioni. I formati di file KML, DXF e TAB sono tali. Per dettagli avanzati, puoi leggere il documento OGR Feature Styles specification.
Geometria: puoi definire le caratteristiche geometriche del layer in output
Tipo di geometria: mantiene la geometria originale degli elementi quando è impostata su Automatico, altrimenti la rimuove o la sostituisce con qualsiasi tipo. Si può aggiungere una colonna geometria vuota ad una tabella di attributi e rimuovere la colonna geometria di un layer spaziale.
Forza multi-tipo: forza la creazione di features multi-geometry nel layer
Includi dimensione z alle geometrie.
Suggerimento
Modificare il tipo di geometria di un layer consente di eseguire cose come salvare una tabella senza geometrie (ad esempio file .csv
) in uno shapefile con qualsiasi tipo di geometria (punto, linee, poligono), in modo che le geometrie possano essere aggiunte manualmente a righe con lo strumento Aggiungi parte.
Sorgente Dati, Opzioni Layer o Opzioni personalizzate che ti permettono di configurare parametri avanzati a seconda del formato in uscita. Alcuni sono descritti in Esplorare i formati dati e i campi ma per tutti i dettagli, vedi la documentazione del driver GDAL. Ogni formato di file ha i suoi parametri personalizzati, ad esempio per il formato
GeoJSON
dai un’occhiata alla documentazione di GDAL GeoJSON.
Quando si salva un layer vettoriale in un file esistente, a seconda delle capacità del formato di output (Geopackage, SpatiaLite, FileGDB …), l’utente può decidere se:
sovrascrivere l’intero file
sovrascrivere solo il layer di destinazione (il nome del layer è configurabile)
aggiungere geometrie ad un layer esistente
aggiungere geometrie, aggiungere nuovi campi se ce ne sono.
Sono disponibili opzioni per aggiungere geometrie ai formati come ESRI Shapefile, MapInfo .tab,.
13.2.3. Creazione di nuovi file DXF
Oltre alla finestra di dialogo Salva Come… che fornisce opzioni per esportare un singolo layer in un altro formato, incluso *.DXF
, QGIS fornisce un altro strumento per esportare più layer come un singolo layer DXF. E” accessibile nel menu .
Nella finestra di dialogo Esportazione DXF:
Fornisci il file di destinazione.
Scegli la modalità e la scala della simbologia (vedi la nota OGR Feature Styles), se applicabile.
Seleziona la Codifica dei dati.
Seleziona il SR da applicare: i layer selezionati verranno riproiettati nel SR indicato.
Seleziona i layer da includere nei file DXF spuntandoli nel widget della tabella o scegliendoli automaticamente da un map theme esistente. I pulsanti Seleziona Tutto e Deseleziona Tutto possono aiutare a impostare rapidamente i dati da esportare.
Per ogni layer, puoi scegliere se esportare tutte gli elementi in un singolo layer DXF o fare affidamento su un campo i cui valori sono usati per dividere gli elementi in layer nel DXF in uscita.
Opzionalmente puoi anche scegliere di:
13.2.4. Creare nuovi layer dagli appunti
Le geometrie che si trovano negli appunti possono essere incollate in un nuovo layer. Seleziona alcune geometrie e poi copiale in un nuovo layer usando
e scegliendo:Nuovo Vettore…: appare la finestra di dialogo Salva Vettore Come… (per i parametri vedi Creare nuovi layer da layer esistente)
oppure Layer Temporaneo…: devi fornire un nome per il layer
Viene creato un nuovo layer, popolato con gli elementi selezionati e relativi attributi (e aggiunto alla mappa).
Nota
La creazione di layer dagli appunti è possibile con elementi selezionati e copiati all’interno di QGIS, nonché elementi di un’altra applicazione, a condizione che siano definiti utilizzando il formato stringa well-known text (WKT).
13.2.5. Creazione di layer virtuali
I layer virtuali sono una tipologia speciale di layer vettoriale. Permettono di definire un layer come il risultato di una query SQL che coinvolge un qualsiasi numero di altri layer vettoriali che QGIS è in grado di aprire. I layer virtuali non hanno dati propri e possono essere considerati come viste.
Per creare un layer virtuale, apri la finestra di dialogo per la creazione di un layer virtuale:
scegliendo la voce Aggiungi/Modifica Layer Virtuale nel menu ;
abilitando la scheda Nuovo Layer Virtuale nella finestra di dialogo Barra degli Strumenti per la Gestione della Sorgente Dati;
o usando la finestra di dialogo DB Manager….
La finestra di dialogo ti consente di specificare un Nome vettore e una Interrogazione SQL. Questa interrogazione può utilizzare il nome (o id) dei vettori esistenti, così come i nomi dei campi del layer.
Ad esempio, se hai un layer chiamato airports
, puoi creare un nuovo layer virtuale da denominare public_airports
con una query SQL del tipo:
SELECT *
FROM airports
WHERE USE = "Civilian/Public"
La query SQL verrà eseguita, qualunque sia la struttura di base del vettore airports
e anche se questa fonte dati non supporta direttamente le query SQL.
È inoltre possibile creare join e query complesse, ad esempio, per unire aeroporti e informazioni sui paesi:
SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name
Nota
Layer virtuali possono essere creati anche usando la finestra di dialogo SQL di Plugin DB Manager.
13.2.5.1. Layer nidificati da usare nelle query
Oltre ai layer vettoriali disponibili nella mappa, l’utente può aggiungere layer alla lista Layer nidificati, che possono essere usati nelle query senza bisogno di averli visualizzati nella mappa o nel pannello Layer.
Per incorporare un layer, fai clic su Aggiungi e inserisci Nome locale, Sorgente dati, Codifica e il percorso della Sorgente dati.
Il pulsante Importa permette di aggiungere i layer nella mappa nella lista dei layer incorporati. Questi layer possono poi essere rimossi dal pannello Layer senza interrompere le query esistenti.
13.2.5.2. Linguaggi query supportati
Il motore incorporato utilizza SQLite e SpatiaLite per operare.
Ciò significa che puoi utilizzare tutto l’SQL che l’installazione locale di SQLite comprende.
Funzioni di SQLite e funzioni spaziali di SpatiaLite possono anche essere utilizzate in una query di layer virtuale. Ad esempio, la creazione di un layer di punti da un layer di solo attributo può essere fatto con una query simile a:
SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates
Functions of QGIS expressions possono essere utilizzate anche in una query di layer virtuale.
Per fare riferimento alla colonna geometrica di un layer, utilizzare il nome geometry
.
Al contrario di una query SQL pura, tutti i campi di una query di un layer virtuale devono avere un nome. Non dimenticare di usare la parola chiave as
per nominare le tue colonne se sono il risultato di un calcolo o di una chiamata di funzione.
13.2.5.3. Problemi relativi alle prestazioni
Con i parametri predefiniti, il motore del layer virtuale farà del suo meglio per rilevare il tipo delle diverse colonne della query, incluso il tipo della colonna geometria se presente.
Questo viene fatto analizzando la query quando possibile o recuperando la prima riga della query (LIMIT 1) come ultima risorsa. Recuperare la prima riga del risultato solo per creare il layer può essere indesiderabile per ragioni di prestazioni.
La finestra di dialogo per la creazione dei parametri:
Colonna identificativa univoca: specifica un campo della query che rappresenta valori interi unici che QGIS può usare come identificatori di riga. Per impostazione predefinita, viene usato un valore intero autoincrementante. La definizione di una colonna identificatore unico velocizza la selezione delle righe per id.
Nessuna geometria: forza il layer virtuale a ignorare qualsiasi campo geometria. Il layer risultante sarà solamente un layer tabella attributi.
Geometria Colonna: specifica il nome della colonna della geometria.
Geometria Tipo: specifica il tipo della geometria.
Geometria SR: specifica il sistema di riferimento delle coordinate del layer virtuale.
13.2.5.4. Commenti speciali
L’interprete del layer virtuale tenta di determinare il tipo di ogni colonna della query. Se non riesce, viene eseguita la prima riga della query per determinare i tipi colonna.
Il tipo di una particolare colonna può essere specificato direttamente nella query utilizzando alcuni commenti speciali.
La sintassi è la seguente: /*: type*/
. Deve essere inserita subito dopo il nome di una colonna. il tipo può essere int
per interi, real
per numeri a virgola mobile o text
.
Ad esempio:
SELECT id+1 as nid /*:int*/
FROM table
Il tipo e il sistema di riferimento della colonna geometrica può essere impostato anche grazie a speciali commenti con la seguente sintassi /*:gtype: srid*/
dove gtype
è il tipo geometrico (point
, linestring
, polygon
, multipoint
, multilinestring
o multipolygon
) e srid
un intero che rappresenta il codice EPSG di un sistema di riferimento di coordinate.
13.2.5.5. Uso degli indici
Quando si richiama un layer attraverso un layer virtuale, gli indici dei layer di origine saranno utilizzati nei seguenti modi:
se viene usato
=
nella colonna chiave primaria del layer, al fornitore di dati sottostante verrà richiesto un id particolare (FilterFid)per tutti gli altri predicati (
>
,<=
,!=
, etc.) o per richiesta su una colonna senza chiave primaria, verrà utilizzata una richiesta costruita da una espressione per il driver attivo. Ciò significa che gli indici possono essere utilizzati sui drivers di database, se esistono.
Esiste una sintassi specifica per gestire le predicazioni spaziali nelle richieste e innescare l’utilizzo di un indice spaziale: una colonna nascosta denominata _search_frame_
esiste per ogni layer virtuale. Questa colonna può essere paragonata per l’uguaglianza con un riquadro di limitazione. Ad esempio:
SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)
I predicati binari spaziali come ST_Intersects
consentono significative accelerazioni quando utilizzati in combinazione con questa sintassi dell’indice spaziale.