postgis Tutorial
Iniziare con PostGIS
Ricerca…
Osservazioni
PostGIS è un insieme di estensioni per il database PostgreSQL. Con PostGIS è possibile memorizzare dati geospaziali ed eseguire query spaziali su un database postgres.
A differenza dei tipi di dati predefiniti su un normale database Postgres, i dati spaziali devono essere gestiti in modo diverso. Le query che è possibile eseguire su un database spaziale sono generalmente definite da bounding box in 2 o 3 dimensioni. Per archiviare, indicizzare e gestire questi tipi di dati postGIS utilizza un concetto chiamato R-Trees , che non fa parte dell'installazione postgres predefinita.
Con un database postGIS, sei in grado di:
- memorizzare i dati spaziali
- eseguire query spaziali, per recuperare ed estrarre informazioni (punti, aree).
- gestire le informazioni spaziali e i metadati sulle tabelle (come: sistema di riferimento coorinato usato).
- convertire le geometrie da un sistema di coordinate a un altro
- confronta le geometrie ed estrai le proprietà (come: lunghezza del bordo di una strada o di un edificio)
- generare nuove geometrie da altri.
Versioni
| Ultime versioni di feature | Documentazione ufficiale | Data di rilascio |
|---|---|---|
| 2.3.0 | HTML , PDF | 2016/09/26 |
| 2.2.0 | HTML , PDF | 2015/10/07 |
| 2.1.0 | HTML , PDF | 2013/08/17 |
| 2.0.0 | HTML , PDF | 2012-04-03 |
| 1.5.0 | 2010-02-04 | |
| 1.4.0 | 2009-07-24 | |
| 1.3.0 | 2007-08-09 | |
| 1.2.0 | 2006-12-08 | |
| 1.1.0 | 2005-12-21 | |
| 1.0.0 | 2005-04-19 |
Installazione tramite Package Manager
Arco:
È disponibile un pacchetto pacman ufficiale. Installa il pacchetto come root, usando:
pacman -S postgis
OpenSuse:
Per utilizzare i repository openSuse per le applicazioni geospaziali, abilitare il repository geografico come root:
zypper ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_[RELEASE]/ GEO
dove [RELEASE] è il numero di rilascio ufficiale della tua distribuzione Suse. Dopo questo, puoi installare postgis con:
zypper install postgis
Installazione dalla fonte (con Postgres 9.1 o successivo)
Questa guida è esplicitamente per PostgreSQL 9.1 o versioni successive su macchine Linux. Usa la funzione di estensione postgres che migliorerà notevolmente l'importazione di estensioni a un'installazione postgres esistente. Se devi lavorare con una versione precedente di postgres, fai riferimento alle documentazioni ufficiali .
Risolvi le dipendenze
PostGIS è un progetto complesso che ha un numero di dipendenze. Per procedere con la configurazione manuale e la procedura di compilazione, dovrai risolvere queste dipendenze e installare i seguenti pacchetti manualmente o tramite i gestori di pacchetti.
Requisiti minimi
- PostgreSQL 9.1 o successivo. E 'importante, che si installa il database tra cui intestazioni di server, di solito trovati nelle -packages dev del pacchetto-manager del repository.
- Il GNU C Compiler gcc .
- Fare GNU. Per completare il processo di costruzione.
- Proj4 . Una libreria di proiezione, per le trasformazioni coordinate.
- GEOS . Una libreria di geometria, che implementa descrizioni di funzioni e geometrie semplici. Si consiglia la versione 3.5 o superiore per utilizzare le nuove funzioni come ST_ClipByBox2D e ST_Subdivide .
- GDAL , versione 1.9 o successiva. Una libreria che implementa formati di dati astratti per dati geospaziali basati su raster e vettori.
- LibXML2 , versione 2.5 o successiva. Un libraray per lavorare con XML, XSLT e DTD.
- JSON-C , versione 0.9 o successiva. Una libreria per creare output in formato JSON
Requisiti opzionali
- GTK (richiede GTK + 2.0, 2.8+) per compilare shp2pgsql-gui.
- SFCGAL , versione 1.1 (o successiva) potrebbe essere utilizzato per fornire ulteriori funzioni di analisi avanzate 2D e 3D a PostGIS.
- PCRE . Una libreria per la corrispondenza di modelli di espressioni regolari che utilizza la sintassi Perl 5. Questa libreria è necessaria se si desidera lavorare con lo Standard di modifica .
- CUnit . Un'utilità di test delle unità, necessaria per i test di regressione.
- DocBook (xsltproc) è richiesto per la creazione della documentazione.
- DBLatex è necessario per creare la documentazione in formato PDF.
- ImageMagick è necessario per generare le immagini utilizzate nella documentazione.
Ottieni le fonti
Per ottenere il codice sorgente, scarica l'ultimo tarball:
wget http://postgis.net/stuff/postgis-2.3.2dev.tar.gz
tar -xvzf postgis-2.3.2dev.tar.gz
oppure utilizzare il repository SVN ufficiale:
svn checkout http://svn.osgeo.org/postgis/trunk/ postgis-2.3.2dev
Configurazione
Se hai ottenuto i sorgenti tramite SVN, puoi preparare lo script di configurazione con:
./autogen.sh
Per configurare il processo di compilazione per la tua macchina specifica, esegui nella cartella del progetto:
./configure
Ci sono diversi parametri opzionali per il passo di configurazione. Fare riferimento alla documentazione ufficiale per istruzioni dettagliate, di solito facoltativo e solo per server che utilizzano installazioni non predefinite.
Costruire
Una volta completato il passaggio di configurazione, verrà creato un makefile. Per avviare l'esecuzione del processo di generazione:
make
L'ultima uscita dovrebbe essere:
"PostGIS was built successfully. Ready to install."
A partire dalla versione 1.4.0, tutte le funzioni hanno commenti generati dalla documentazione. Se si desidera installare questi commenti nei database spaziali in un secondo momento, eseguire il comando che richiede il docbook.
make comments
Installazione
Installa tutte le estensioni con:
make install
Le estensioni PostGIS vengono create e installate automaticamente se si utilizza PostgreSQL 9.1 o versioni successive. È possibile installare manualmente le estensioni necessarie, se si dispone di impostazioni diverse.
Nella cartella del progetto:
cd extensions
cd postgis
make clean
make
make install
cd ..
cd postgis_topology
make clean
make
make install
cd ..
cd postgis_sfcgal
make clean
make
make install
cd ..
cd address_standardizer
make clean
make
make install
make installcheck
cd ..
cd postgis_tiger_geocoder
make clean
make
make install
make installcheck
Se si desidera installare manualmente le estensioni su una macchina diversa, copiare i seguenti file dalla cartella delle extensions in PostgreSQL/share/extension -folder della destinazione. Per ogni estensione:
scp extensions/[EXTENSION]/sql/*.sql user@target:[POSTGIS_PATH]/share/extension
dove [ESTENSIONE] è l'estensione selezionata (postgis, postgis_topology, postgis_sfcgal, address_standardizer, postgis_tiger_geocoder) e [POSTGIS_PATH] è il percorso di installazione PostGIS sulla macchina di destinazione.
Verifica l'installazione
Se non si dispone di un servizio di database postgres in esecuzione, impostare prima il database Postgres . Connettiti al database, usando:
su postgres -c psql
Per verificare che le estensioni siano accessibili, esegui le seguenti query in una sessione psql:
SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
L'output dovrebbe assomigliare a questo:
name | default_version | installed_version
------------------------------+-----------------+-------------------
address_standardizer | 2.3.2dev | 2.3.2dev
address_standardizer_data_us | 2.3.2dev | 2.3.2dev
postgis | 2.3.2dev | 2.3.2dev
postgis_sfcgal | 2.3.2dev |
postgis_tiger_geocoder | 2.3.2dev | 2.3.2dev
postgis_topology | 2.3.2dev |
(6 rows)
Per eseguire un test post-installazione approfondito, eseguire il seguente comando nella cartella del progetto:
make check
Questo verrà eseguito attraverso vari controlli e test utilizzando la libreria generata rispetto a un vero database PostgreSQL.
Impostazione di un database geospaziale
Per creare un nuovo database vuoto, esegui come postgres-user:
createdb [yourdatabase]
Connessione al database con una sessione psql:
psql -d [yourdatabase]
Nell'esecuzione di sessione psql:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
per creare le estensioni geospaziali necessarie. Una volta fatto, il database è un database abilitato per il geospaziale ed è pronto per l'uso.
Un "Hello World" geospaziale
In questo esempio, configureremo un database geospaziale, importeremo i dati da 2 fonti diverse e visualizzeremo i risultati in un'applicazione chiamata QGIS. Questa guida è scritta esplicitamente per macchine Linux, se si opera su un'altra piattaforma, alcuni comandi o percorsi potrebbero non funzionare come previsto.
Per visualizzare i dati importati useremo un'applicazione chiamata QGIS . Se non si dispone di questa applicazione, installarla prima , se si desidera utilizzare un altro visualizzatore o un'applicazione geografica (come ArcGIS), è possibile saltare l'installazione di QGIS.
Le nostre fonti saranno i distretti di assemblaggio dello stato della città di New York e la banca dati di LION della città di New York . Si prega di scaricare i file appropriati dalle posizioni collegate. Dovresti anche dare un'occhiata alla sezione Metadata del materiale, poiché ti fornisce informazioni su quale sistema di riferimento di coordinate usano questi file.
Per iniziare, creare una cartella di lavoro "nycgis", copiare i file scaricati nella posizione e decomprimere gli archivi.
mkdir nycgis
cd nycgis
cp ~/Downloads/nyad_16d.zip .
unzip ~/Downloads/nyad_16d.zip
cp ~/Downloads/nylion_16d.zip .
unzip ~/Downloads/nylion_16d.zip
Nella cartella "nycgis" ora dovresti avere 2 cartelle: "nyad_16d", "lion" con diversi file.
Quando si lavora con dati geografici è di vitale importanza conoscere il sistema di riferimento di coordinate (CRS) dei dati di origine e i dati di output finali. Nelle sezioni Metadata delle località collegate obverse ( Metadati: Distretti di assemblaggio , Metadati: Database LION ), scoprirai che il CRS per entrambi i file è EPSG: 2263, un sistema di coordinate utilizzato per fare riferimento agli Stati Uniti nordorientali.
Supponiamo che vogliamo utilizzare un CRS diverso nel nostro database. Questo può avere diversi motivi, potremmo voler lavorare con un'applicazione geo basata sul web sul database, per esempio. Un CRS comune per questo tipo di applicazione è WGS: 84 (EPSG: 4326).
Per convertire i sistemi di coordinate usiamo uno strumento chiamato ogr2ogr che fa parte del pacchetto GDAL. Nella cartella di lavoro, prima creiamo 2 cartelle che rappresentano i dati riproiettati, quindi convertiamo i nostri dati.
mkdir nyad_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nyad_16d_proj_4326/nyad_4326.shp ./nyad_16d/nyad_16d.shp -s_srs EPSG:2263 -t_srs EPSG:4326
mkdir nylion_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nylion_16d_proj_4326/ny_str_4326.shp ./nylion_16d/lion/lion.gdb/a0000000d.gdbtable -s_srs EPSG:2263 -t_srs EPSG:4326
Si noti che utilizziamo solo il file denominato "a0000000d.gdbtable" del database LION per i nostri scopi. La sintassi del ogr2ogr ogr2ogr è la seguente:
ogr2ogr -f [output-format] [output-file] [input-file] -s_srs [source crs] -t_srs [target crs]
Ora abbiamo 2 shapefile, proiettati nel CRS corretto. Per utilizzare i dati nel nostro database, dobbiamo convertire gli shapefile in sql-statemens. Per questo usiamo uno strumento chiamato shp2pgsql . Nella directory di lavoro esegui i seguenti comandi:
shp2pgsql ./nyad_16d_proj_4326/nyad_4326.shp > nyad_4326.sql
shp2pgsql ./nylion_16d_proj_4326/ny_str_4326.shp > ny_streets_4326.sql
I file nyad_4326.sql e ny_streets_4326.sql sono ora pronti per l'uso in postgis. Per procedere, e importare i dati, creare un database abilitato spazialmente.
sudo su - postgres
createdb nycgis
psql -d nycgis
Nella sessione psql, esegui:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
Chiudere le sessioni psql- e postgres-user con (CTRL + D). E importa i file con:
psql -f nyad_4326.sql -d nycgis
psql -f ny_streets_4326.sql -d nycgis
Il database nycgis ha ora 2 tabelle in cui sono state importate con successo le fonti nycgis .
Per verificare ciò: aprire QGIS
- usa Livello > Aggiungi livello > PostGIS-Layer
- connettersi al tuo database
- seleziona le tue tabelle
- (facoltativo) imposta lo stile dei livelli appena creati.
Et voilà: ora disponi di un database abilitato spazialmente, con geodati di riproiezione importati.
