Outdated version of the documentation. Find the latest one here.

` `

Esplorare i formati dati e i campi

Dati Raster

I dati raster sono matrici di celle discrete che rappresentano oggetti della superficie terrestre o dell’ambiente al di sopra o al di sotto di essa. Ogni cella nella matrice ha la stessa dimensione e le celle sono solitamente rettangolari (in QGIS sono sempre rettangolari). Esempi tipici di dati raster sono quelli provenienti dal telerilevamento come le fotografie aeree, le immagini da satellite e i dati modellati come le matrici dell’elevazione.

Unlike vector data, raster data typically do not have an associated database record for each cell. They are geocoded by pixel resolution and the x/y coordinate of a corner pixel of the raster layer. This allows QGIS to position the data correctly in the map canvas.

QGIS per posizionare e visualizzare correttamente i dati utilizza le informazioni di georeferenziazione incorporate direttamente nel file raster (ad es. GeoTiff) o quelle contenute in un apposito world file.

Dati vettoriali

Many of the features available in QGIS work the same, regardless the vector data source. However, because of the differences in formats specifications (ESRI shapefiles, MapInfo and MicroStation file formats, AutoCAD DXF, PostGIS, SpatiaLite, DB2, Oracle Spatial and MSSQL Spatial databases, and many more), QGIS may handle differently some of their properties. This section describes how to work with these specificities.

Nota

QGIS supporta geometrie con formati (multi)point, (multi)line, (multi)polygon, CircularString, CompoundCurve, CurvePolygon, MultiCurve, tutti con valori Z e/o M.

Devi tener presente che alcuni driver non supportano alcuni di questi formati come CircularString, Compound-Curve, CurvePolygon, MultiCurve, MultiSurface. QGIS li convertirà in geometrie multi-poligono.

ESRI Shapefiles

The ESRI shapefile is still one of the most used vector file format in QGIS. However, this file format has some limitation that some other file format have not (like Geopackage, spatialite). Support is provided by the OGR Simple Feature Library.

A shapefile actually consists of several files. The following three are required:

  1. .shp file contenente le geometrie

  2. .dbf file contenente gli attributi in formato dBase

  3. .shx file indici

Shapefiles also can include a file with a .prj suffix, which contains the projection information. While it is very useful to have a projection file, it is not mandatory. A shapefile dataset can contain additional files. For further details, see the ESRI technical specification at http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.

Improving Performance for Shapefiles

To improve the performance of drawing a shapefile, you can create a spatial index. A spatial index will improve the speed of both zooming and panning. Spatial indexes used by QGIS have a .qix extension.

Segui questi passi per creare un indice spaziale:

  • Load a shapefile (see Il Pannello Browser);
  • Open the Layer Properties dialog by double-clicking on the shapefile name in the legend or by right-clicking and choosing Properties from the context menu.
  • In the General tab, click the [Create Spatial Index] button.

Problem loading a shape .prj file

If you load a shapefile with a .prj file and QGIS is not able to read the coordinate reference system from that file, you will need to define the proper projection manually within the General tab of the Layer Properties dialog of the layer by clicking the [Specify...] button. This is due to the fact that .prj files often do not provide the complete projection parameters as used in QGIS and listed in the CRS dialog.

For the same reason, if you create a new shapefile with QGIS, two different projection files are created: a .prj file with limited projection parameters, compatible with ESRI software, and a .qpj file, providing the complete parameters of the used CRS. Whenever QGIS finds a .qpj file, it will be used instead of the .prj.

Files Testo Limitato

Tabular data is a very common and widely used format because of its simplicity and readability – data can be viewed and edited even in a plain text editor. A delimited text file is an attribute table with each column separated by a defined character and each row separated by a line break. The first row usually contains the column names. A common type of delimited text file is a CSV (Comma Separated Values), with each column separated by a comma.

Such data files can also contain positional information in two main forms:

  • As point coordinates in separate columns
  • As well-known text (WKT) representation of geometry

QGIS allows you to load a delimited text file as a layer or ordinal table. But first check that the file meets the following requirements:

  1. The file must have a delimited header row of field names. This must be the first line in the text file.
  2. The header row must contain field(s) with geometry definition. These field(s) can have any name.
  3. The X and Y coordinates (if geometry is defined by coordinates) must be specified as numbers. The coordinate system is not important.
  4. Se hai dati che non sono una stringa (testo) e il file è un file CSV, devi avere un file CSVT (vedi sezione CSVT Files).

Come esempio di un file di testo valido, importa il file di punti quotati elevp.csv presente nell’insieme di dati campione di QGIS (vedi sezione Sample Data):

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

Alcune cose da tenere in considerazione in merito al file di testo:

  1. Il file di testo usato come esempio usa ; (punto e virgola) come delimitatore. Ma qualsiasi carattere può essere usato per delimitare i campi.

  2. La prima riga è la riga di intestazione. Questa contiene i campi X, Y e ELEV.

  3. Nessun tipo di virgoletta (") dev’essere usata per delimitare i campi di testo.

  4. Le coordinate X sono contenute nel campo X.

  5. Le coordinate Y sono contenute nel campo Y.

CSVT Files

Quando carichi i file CSV, il driver OGR presuppone che tutti i campi siano stringhe (cioè tipo testo) a meno che non sia detto diversamente. Puoi creare un file CSVT per indicare a OGR (e QGIS) quali tipi di dati ci sono nelle diverse colonne:

Type Name Example
Whole number Integer 4
Decimal number Real 3.456
Date Date (YYYY-MM-DD) 2016-07-28
Time Time (HH:MM:SS+nn) 18:33:12+00
Date & Time DateTime (YYYY-MM-DD HH:MM:SS+nn) 2016-07-28 18:33:12+00

Il file CSVT è un file di testo normale di UNA sola riga con i tipi di dati racchiusi da virgolette e separati da virgole, ad esempio:

"Integer","Real","String"

Puoi anche specificare la larghezza e la precisione di ogni colonna, ad esempio:

"Integer(6)","Real(5.5)","String(22)"

Questo file viene salvato nella stessa cartella del file .csv, con lo stesso nome, ma con .csvt come estensione.

You can find more information at GDAL CSV Driver.

Others valuable informations for advanced users

Features with curved geometries (CircularString, CurvePolygon and CompoundCurve) are supported. Here are three examples of such geometry types as a delimited text with WKT geometries:

Label;WKT_geom
CircularString;CIRCULARSTRING(268 415,227 505,227 406)
CurvePolygon;CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))
CompoundCurve;COMPOUNDCURVE((5 3, 5 13), CIRCULARSTRING(5 13, 7 15,
  9 13), (9 13, 9 3), CIRCULARSTRING(9 3, 7 1, 5 3))

Il formato testo delimitato supporta anche geometrie che hanno coordinate Z e M:

LINESTRINGM(10.0 20.0 30.0, 11.0 21.0 31.0)

Layers PostGIS

I vettori PostGIS sono memorizzati in un database PostgreSQL. PostGIS ha diversi vantaggi: creazione dell’indice spaziale, capacità di filtraggio e di interrogazione molto potenti. Usando PostGIS, le funzioni vettoriali come la selezione e l’identificazione sono più precise che con i vettori OGR in QGIS.

Suggerimento

Layer PostGIS

Normalmente, un vettore PostGIS è definito da una voce nella tabella geometry_columns. QGIS può caricare layers che non dispongono di una voce nella tabella geometry_columns. Ciò include sia tabelle che viste. La definizione di una vista spaziale fornisce un potente mezzo per visualizzare i tuoi dati. Consulta il tuo manuale PostgreSQL per informazioni sulla creazione di viste.

Questa sezione contiene alcuni dettagli su come QGIS accede ai vettori PostgreSQL. La maggior parte delle volte QGIS dovrebbe semplicemente fornirti un elenco di tabelle del database che possono essere caricate e dovrebbe poi caricarle in base alla tua richiesta. Comunque se hai difficoltà a caricare una tabella di PostgreSQL in QGIS, le informazioni seguenti ti possono aiutare a capire tutti i messaggi di QGIS e ti possono dare un’indicazione di come cambiare le tabelle o le definizioni delle viste di PostgreSQL in modo che QGIS le possa caricare.

Chiave primaria

QGIS richiede che i vettori PostgreSQL contengano una colonna che possa essere usata come chiave univoca per il vettore. Le tabelle devono contenere una chiave primaria o una colonna con un vincolo univoco. Questa colonna deve essere di tipo int4 (un numero intero di 4 byte). Alternativamente, la colonna ctid può essere usata come chiave primaria. Se a una tabella mancano queste informazioni, verrà usata la colonna oid. Le prestazioni saranno migliori se la colonna è indicizzata (le chiavi primarie sono indicizzate automaticamente in PostgreSQL).

QGIS prevede una casella di controllo Seleziona all’ID che viene attivata per impostazione predefinita. Questa opzione ottiene gli id senza gli attributi il che è più veloce nella maggior parte dei casi.

Viste

Se il layer di PostgreSQL è una vista sussistono gli stessi requisiti, ma non sempre necessitano chiavi primarie o colonne con vincoli univoci. Devi definire un campo della chiave primaria (deve essere un intero) nella finestra di dialogo di QGIS prima di caricare la vista. Se non c’è una colonna adatta nella vista, QGIS non caricherà il vettore. Se succede la soluzione è di modificare la vista in modo che contenga una colonna adatta (un intero e una chiave primaria con un vincolo univoco, preferibilmente indicizzato).

Come per le tabelle, una casella di controllo Seleziona all’ID è attiva per impostazione predefinita (vedere sopra per il significato della casella di controllo). Può aver senso disattivare questa opzione quando si utilizzano viste impegnative.

Stili di default dei layer QGIS e backup del database

If you want to make a backup of your PostGIS database using the pg_dump and pg_restore commands, and the default layer styles as saved by QGIS fail to restore afterwards, you need to set the XML option to DOCUMENT and the restore will work.

SET XML OPTION DOCUMENT;

Filtro lato server

QGIS consente di filtrare le geometrie già sul lato server. Per fare ciò attiva Impostazioni ‣ Opzioni ‣ Origine dati ‣ checkbox Esegui le espressioni sul lato server sul lato server se possibile. Saranno accettate solo le espressioni supportate dal database. Le espressioni che utilizzano operatori o funzioni non supportati saranno restituite alla esecuzione in locale.

Supporto di PostgreSQL alle diverse tipologie di dati

Most of common data types are supported by the PostgreSQL provider: integer, float, varchar, geometry and timestamp.

Array data types are not supported.

Importare dati in PostgreSQL

I dati possono essere importati in PostreSQL/PostGIS usando diversi strumenti, come il plugin DB Manager e gli strumenti da riga di comando shp2pgsql e ogr2ogr

DB Manager

QGIS comes with a core plugin named dbManager DB Manager. It can be used to load shapefiles and other data formats, and it includes support for schemas. See section Plugin DB Manager for more information.

shp2pgsql

PostGIS includes an utility called shp2pgsql that can be used to import shapefiles into a PostGIS-enabled database. For example, to import a shapefile named lakes.shp into a PostgreSQL database named gis_data, use the following command:

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

Questo comando crea un nuovo vettore, chiamato lakes_new , nel database gis_data. Il nuovo vettore avrà un identificatore del sistema di riferimento (SRID) corrispondente a 2964. Vedi la sezione Lavorare con le proiezioni per ulteriori informazioni sui sistemi di riferimento spaziali e sulle proiezioni.

Suggerimento

Esportare dati da PostGIS

Like the import tool shp2pgsql, there is also a tool to export PostGIS datasets as shapefiles: pgsql2shp. This is shipped within your PostGIS distribution.

ogr2ogr

Oltre a shp2pgsql e DB Manager c’è un altro strumento per caricare dati in PostGIS: ogr2ogr. Questo strumento fa parte dell’installazione di GDAL

To import a shapefile into PostGIS, do the following:

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp

This will import the shapefile alaska.shp into the PostGIS database postgis using the user postgres with the password topsecret on host server myhost.de.

Nota che OGR deve essere compilato con PostgreSQL per supportare PostGIS. Puoi verificare ciò digitando (in nix) :

ogrinfo --formats | grep -i post

Se preferisci utilizzare il comando COPY di PostgreSQL invece del metodo predefinito INSERT INTO, puoi esportare la seguente variabile d’ambiente (disponibile almeno in nix e osx):

export PG_USE_COPY=YES

ogr2ogr non crea indici spaziali come shp2pgsl. Devi crearli manualmente, usando come passo aggiuntivo il comando SQL CREATE INDEX dopo l’importazione, come passo aggiuntivo (come descritto nella sezione seguente Migliorare le prestazioni).

Migliorare le prestazioni

Retrieving features from a PostgreSQL database can be time-consuming, especially over a network. You can improve the drawing performance of PostgreSQL layers by ensuring that a PostGIS spatial index exists on each layer in the database. PostGIS supports creation of a GiST (Generalized Search Tree) index to speed up spatial searches of the data (GiST index information is taken from the PostGIS documentation available at http://postgis.net).

Suggerimento

You can use the DBManager to create an index to your layer. You should first select the layer and click on Table ‣ Edit table, go to Indexes tab and click on [Add spatial index].

La sintassi per creare un indice GIST è:

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

Nota che per tabelle molto grandi, la creazione dell’indice può richiedere parecchio tempo. Non appena l’indice è stato creato, dovresti effettuare un VACUUM ANALYZE. Vedi la documentazione di PostGIS (POSTGIS-PROJECT Letteratura e riferimenti web) per ulteriori informazioni.

Segue un esempio di come creare un indice GiST:

[email protected]:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
[email protected]:~/current$

Vettori a cavallo dei 180° di longitudine

Many GIS packages don’t wrap vector maps with a geographic reference system (lat/lon) crossing the 180 degrees longitude line (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html). As result, if we open such a map in QGIS, we will see two far, distinct locations, that should appear near each other. In Figure_vector_crossing, the tiny point on the far left of the map canvas (Chatham Islands) should be within the grid, to the right of the New Zealand main islands.

../../../_images/vectorNotWrapping.png

Mappa in lat/lon a cavallo dei 180° di longitudine

Una soluzione consiste nel trasformare i valori di longitudine utilizzando PostGIS e la funzione ST_Shift_Longitude. Questa funzione legge i punti/vertici di ogni elemento di una geometria e se la coordinata di longitudine è < 0° , aggiunge 360°. Il risultato sarà una versione 0° - 360° dei dati, che verranno poi visualizzati su una mappa centrata a 180°.

../../../_images/vectorWrapping.png

Vettori a cavallo di 180° di longitudine usando la funzione ST_Shift_Longitude

Guida all’uso

  • Importa i dati in PostGIS (Importare dati in PostgreSQL) usando, per esempio, il plugin DB Manager.

  • Usa l’interfaccia da linea di comando di PostGIS per dare il seguente comando (nell’esempio “TABLE” è il nome della tua tabella PostGIS): gis_data=# update TABLE set the_geom=ST_Shift_Longitude(the_geom);

  • Se tutto è andato a buon fine, riceverai la conferma sul numero di geometrie che sono state aggiornate. Potrai cosi caricare la mappa e vedere le differenze (Figure_vector_crossing_map).

Vettori SpatiaLite

If you want to save a vector layer to SpatiaLite format, you can do this by right clicking the layer in the legend. Then, click on Save as..., define the name of the output file, and select ‘SpatiaLite’ as format and the CRS. Also, you can select ‘SQLite’ as format and then add SPATIALITE=YES in the OGR data source creation option field. This tells OGR to create a SpatiaLite database. See also http://www.gdal.org/ogr/drv_sqlite.html.

QGIS supporta anche viste modificabili in SpatiaLite.

Se vuoi creare un nuovo layer SpatiaLite, fai riferimento alla sezione Creare un nuovo layer SpatiaLite.

Suggerimento

SpatiaLite data management Plugins

Per la gestione dei dati di SpatiaLite puoi utilizzare anche diversi plugin Python: QSpatiaLite, SpatiaLite Manager o DB Manager (plugin core, consigliato). Se necessario, possono essere scaricati e installati con il programma di installazione plugin.

Layers DB2 Spatial

IBM DB2 per Linux, Unix e Windows (DB2 LUW), i prodotti IBM DB2 per z/OS (mainframe) e IBM DashDB consentono agli utenti di memorizzare e analizzare i dati spaziali nelle colonne della tabella relazionale. La funzione DB2 per QGIS supporta la gamma completa di visualizzazione, analisi e manipolazione dei dati spaziali in questi database.

La documentazione utente su queste funzionalità può essere trovata in DB2 z/OS KnowledgeCenter, DB2 LUW KnowledgeCenter e DB2 DashDB KnowledgeCenter.

Per ulteriori informazioni sul funzionamento delle opzioni spaziali DB2, consulta il Tutorial DB2 Spatial Tutorial su IBM DeveloperWorks.

La funzionalità DB2 attualmente supporta solo l’ambiente Windows tramite il driver ODBC di Windows.

Il client che esegue QGIS deve disporre di uno dei seguenti componenti installati:

  • DB2 LUW
  • IBM Data Server Driver Package
  • IBM Data Server Client

Se stai accedendo a un database DBW LUW sulla stessa macchina o che utilizza DB2 LUW come client, i file di esecuzione e i files di supporto DB2 devono essere inclusi nel percorso di Windows. Ciò può essere fatto creando una file batch come seguire con il nome db2.bat e includendolo nella directory %OSGEO4W_ROOT%/etc/ini.

@echo off
REM Point the following to where DB2 is installed
SET db2path=C:\Program Files (x86)\sqllib
REM This should usually be ok - modify if necessary
SET gskpath=C:\Program Files (x86)\ibm\gsk8
SET Path=%db2path%\BIN;%db2path%\FUNCTION;%gskpath%\lib64;%gskpath%\lib;%path%