Gestione fonti dati
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→ 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
La maggior parte dei tipi di dati più comuni sono supportati da PostgreSQL: intero, numero in virgola mobile, dati stringa a lunghezza variabile, geometria, timestamp, array e hstore.
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 ha un plugin di base chiamato DB Manager. Si può utilizzare per caricare dati, e include il supporto per gli schemi. Vedi la sezionePlugin DB Managerper ulteriori informazioni.
shp2pgsql
PostGIS include una utility chiamata shp2pgsql che può essere utilizzata per importare i set di dati in formato Shapefile in un database PostGIS. Per esempio, per importare un set di dati in formato Shapefile chiamato lakes.
shp`in un database PostgreSQL chiamato gis_data, usare il seguente comando:
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 sezioneLavorare con le proiezioniper ulteriori informazioni sui sistemi di riferimento spaziali e sulle proiezioni.
Come lo strumento di importazione shp2pgsql, c’è anche uno strumento per esportare i set di dati PostGIS nel formato Shapefile: pgsql2shp. Questo viene fornito all’interno della tua distribuzione PostGIS.
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
Per importare un set di dati in formato Shapefile in PostGIS, procedere come segue:
ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp
Questo importerà il set di dati alaska.shp in formato Shapefile nel database PostGIS postgis usando l’utente postgrescon la password topsecret sul server host myhost.de.
Nota che OGR deve essere compilato con PostgreSQL per supportare PostGIS. Puoi verificare ciò digitando (in ) :
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 e ):
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 seguenteMigliorare le prestazioni).
Migliorare le prestazioni
Recuperare gli oggetti da un database PostgreSQL può richiedere molto tempo, specialmente in rete. Puoi miglio-rare le prestazioni di caricamento dei layer PostgreSQL assicurando l’esistenza di un indice spaziale PostGIS su ogni layer del database. PostGIS supporta la creazione di un indice GiST (Generalized Search Tree) per velo-cizzare le ricerche spaziali dei dati (le informazioni dell’indice GiST sono tratte dalla documentazione PostGIS disponibile all’indirizzohttps://postgis.net).
Suggerimento: Puoi utilizzare il DBManager per creare un indice del tuo layer. Dovresti prima selezionare il livello e cliccare su Tabella → Modifica tabella, andare nella scheda Indici e cliccare su Aggiungi indice spaziale.
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-PROJECTLetteratura e riferimenti web) per ulteriori informazioni.
Segue un esempio di come creare un indice GiST:
gsherman@madison:~/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
gsherman@madison:~/current$
Vettori a cavallo dei 180° di longitudine
Molti pacchetti GIS non prevedono mappe vettoriali con un sistema di riferimento geografico (lat/lon) che at-traversa la linea di longitudine a 180 gradi (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_ Longitude.html_Shift_Longitude.html). Come risultato, se apriamo una tale mappa in QGIS, vedremo due lu-oghi lontani e distinti, che dovrebbero apparire uno vicino all’altro. InFigure_vector_crossing, il piccolo punto all’estrema sinistra della mappa (Chatham Islands) dovrebbe essere all’interno della griglia, alla destra delle isole principali della Nuova Zelanda.
Figure 12.19: 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 coordi-nata di longitudine è < 0° , aggiunge 360°. Il risultato sarà una versione 0° - 360° dei dati, che verranno poi visualizzati su una mappa centrata a 180°.
Figure 12.20: Vettori a cavallo di 180° di longitudine usando la funzione ST_Shift_Longitude
• 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
Se vuoi salvare un layer vettoriale in formato SpatiaLite, puoi farlo cliccando con il tasto destro del mouse sul layer nella legenda. Quindi, fai clic su Salva come. . . , definisci il nome del file di output e seleziona “SpatiaLite” come formato e il SR. Inoltre, puoi selezionare “SQLite” come formato e poi aggiungere SPATIALITE=YES nel campo di opzione per la creazione dell’origine dati OGR. Questo dice a OGR di creare un database SpatiaLite. Vedi anchehttps://www.gdal.org/ogr/drv_sqlite.html_sqlite.html.
QGIS supporta anche viste modificabili in SpatiaLite.
Se vuoi creare un nuovo layer SpatiaLite, fai riferimento alla sezioneCreare 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 oDB Manager(plugin core, consigliato). Se necessario, possono essere scaricati e installati con il programma di installazione plugin.
Parametri specifici di GeoJSON
Quandoesportazione dei layerin GeoJSON, questo formato ha alcune specifiche Opzioni del Layer disponibili. Queste opzioni provengono in realtà da GDAL che è responsabile della scrittura del file:
• COORDINATE_PRECISION il numero massimo di cifre dopo il separatore decimale da inserire in coordi-nate. I valori predefiniti sono 15 (nota: per le coordinate Lat Lon 6 è considerato sufficiente). La troncatura si verifica per rimuovere gli zeri finali.
• WRITE_BBOX impostato su YES per scrivere una proprietà bbox con il rettangolo di delimitazione delle geometrie a livello di elemento e di collezione di elementi.
Layer 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 inDB2 z/OS KnowledgeCenter,DB2 LUW KnowledgeCentereDB2 DashDB KnowledgeCenter.
Per ulteriori informazioni sul funzionamento delle opzioni spaziali DB2, consulta il TutorialDB2 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
Per aprire un database DB2 in QGIS, si può fare riferimento alla sezione:ref:browser_panel oCaricare layer da Database.
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