postgis Tutorial
Erste Schritte mit Postgis
Suche…
Bemerkungen
PostGIS ist eine Reihe von Erweiterungen für die PostgreSQL-Datenbank. Mit PostGIS können Sie Geodaten speichern und räumliche Abfragen in einer Postgres-Datenbank durchführen.
Im Gegensatz zu den Standarddatentypen einer normalen Postgres-Datenbank müssen räumliche Daten unterschiedlich behandelt werden. Die Abfragen, die Sie für eine räumliche Datenbank ausführen können, werden normalerweise durch Begrenzungsrahmen in 2 oder 3 Dimensionen definiert. Um diese Datentypen zu speichern, zu indizieren und zu handhaben, verwendet postGIS ein Konzept namens R-Trees , das nicht Bestandteil der Standard-Postgres-Installation ist.
Mit einer postGIS-Datenbank können Sie:
- räumliche Daten speichern
- räumliche Abfragen durchführen, um Informationen (Punkte, Bereiche) abzurufen und zu extrahieren.
- Verwalten von räumlichen Informationen und Metadaten in Tabellen (z. B. verwendetes Coorinate-Referenzsystem).
- Geometrien von einem Koordinatensystem in ein anderes konvertieren
- Geometrien vergleichen und Eigenschaften extrahieren (wie: Kantenlänge einer Straße oder eines Gebäudes)
- Generieren Sie neue Geometrien von anderen.
Versionen
| Neueste Feature Releases | Offizielle Dokumentation | Veröffentlichungsdatum |
|---|---|---|
| 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 |
Installation über Package Manager
Bogen:
Ein offizielles Pacman-Paket ist verfügbar. Installieren Sie das Paket als root mit:
pacman -S postgis
OpenSuse:
Um die openSuse-Repositories für Geodatenanwendungen zu verwenden, aktivieren Sie das Geo-Repository als root:
zypper ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_[RELEASE]/ GEO
Dabei ist [RELEASE] die offizielle Release-Nummer Ihrer Suse-Distribution. Danach können Sie postgis mit installieren:
zypper install postgis
Installation von Source (mit Postgres 9.1 oder höher)
Dieses Handbuch gilt explizit für PostgreSQL 9.1 oder höher auf Linux-Computern. Es verwendet die Postgres-Erweiterungsfunktion, die den Import von Erweiterungen in eine vorhandene Postgres-Installation erheblich verbessert. Wenn Sie mit einer älteren Version von Postgres arbeiten müssen, lesen Sie bitte die offiziellen Dokumentationen .
Abhängigkeiten auflösen
PostGIS ist ein komplexes Projekt mit einer Reihe von Abhängigkeiten. Um mit der manuellen Konfiguration und Erstellung fortzufahren, müssen Sie diese Abhängigkeiten auflösen und die folgenden Pakete entweder manuell oder über die Paketmanager installieren.
Mindestanforderungen
- PostgreSQL 9.1 oder höher. Es ist wichtig, dass Sie die Datenbank einschließlich der Serverheader installieren, die sich normalerweise in den dev- Paketen des Paket-Managers Ihres Repositorys befinden.
- Der GNU C-Compiler gcc .
- GNU machen . Um den Build-Prozess abzuschließen.
- Proj4 . Eine Projektionsbibliothek für koordinierte Transformationen.
- GEOS . Eine Geometriebibliothek, die Funktionsbeschreibungen und einfache Geometrien implementiert. Version 3.5 oder höher wird empfohlen, um neuere Funktionen wie ST_ClipByBox2D und ST_Subdivide verwenden zu können .
- GDAL , Version 1.9 oder höher. Eine Bibliothek, die abstrakte Datenformate für raster- und vektorbasierte Geodaten implementiert.
- LibXML2 , Version 2.5 oder höher. Eine Bibliothek zur Arbeit mit XML, XSLT und DTD.
- JSON-C , Version 0.9 oder höher. Eine Bibliothek zum Erstellen von Ausgaben im JSON-Format
Optionale Anforderungen
- GTK (erfordert GTK + 2.0, 2.8+) zum Kompilieren der shp2pgsql-gui.
- SFCGAL , Version 1.1 (oder höher) könnte verwendet werden, um zusätzliche erweiterte 2D- und 3D-Analysefunktionen für PostGIS bereitzustellen.
- PCRE . Eine Bibliothek für Mustervergleich mit regulären Ausdrücken unter Verwendung der Perl 5-Syntax. Diese Bibliothek wird benötigt, wenn Sie mit dem Adress Standardizer arbeiten möchten.
- CUnit . Ein Dienstprogramm zum Testen von Einheiten, das für Regressionstests benötigt wird.
- DocBook (xsltproc) ist zum Erstellen der Dokumentation erforderlich.
- DBLatex ist zum Erstellen der Dokumentation im PDF-Format erforderlich.
- ImageMagick ist erforderlich, um die in der Dokumentation verwendeten Bilder zu generieren.
Holen Sie sich die Quellen
Laden Sie das neueste Archiv herunter, um den Quellcode zu erhalten:
wget http://postgis.net/stuff/postgis-2.3.2dev.tar.gz
tar -xvzf postgis-2.3.2dev.tar.gz
oder benutze das offizielle SVN-Repository:
svn checkout http://svn.osgeo.org/postgis/trunk/ postgis-2.3.2dev
Aufbau
Wenn Sie die Quellen über SVN erhalten haben, können Sie das Konfigurationsskript vorbereiten mit:
./autogen.sh
Um den Build-Prozess für Ihre bestimmte Maschine zu konfigurieren, führen Sie den Projektordner aus:
./configure
Es gibt verschiedene optionale Parameter für den Konfigurationsschritt. Detaillierte Anweisungen finden Sie in der offiziellen Dokumentation . Dies ist in der Regel optional und gilt nur für Server, die keine Standardinstallationen verwenden.
Bauen
Wenn der Konfigurationsschritt erfolgreich abgeschlossen wurde, wird ein Makefile erstellt. So starten Sie den Buildprozess-Lauf:
make
Die letzte Ausgabe sollte sein:
"PostGIS was built successfully. Ready to install."
Ab Version 1.4.0 verfügen alle Funktionen über Kommentare, die aus der Dokumentation generiert wurden. Wenn Sie diese Kommentare später in Ihre räumlichen Datenbanken installieren möchten, führen Sie den Befehl aus, der docbook erfordert.
make comments
Installation
Installieren Sie alle Erweiterungen mit:
make install
Die PostGIS-Erweiterungen werden automatisch erstellt und installiert, wenn Sie PostgreSQL 9.1 oder höher verwenden. Sie können die erforderlichen Erweiterungen manuell installieren, wenn Sie ein anderes Setup verwenden.
Im Projektordner:
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
Wenn Sie die Erweiterungen manuell auf einem anderen Computer installieren möchten, kopieren Sie die folgenden Dateien aus dem extensions in den PostgreSQL/share/extension -Ordner des Ziels. Für jede Erweiterung:
scp extensions/[EXTENSION]/sql/*.sql user@target:[POSTGIS_PATH]/share/extension
Dabei ist [EXTENSION] die ausgewählte Erweiterung (postgis, postgis_topology, postgis_sfcgal, address_standardizer, postgis_tiger_geocoder) und [POSTGIS_PATH] der PostGIS-Installationspfad auf Ihrem Zielrechner.
Überprüfung der Installation
Wenn Sie keinen Postgres-Datenbankdienst haben, richten Sie zuerst Ihre Postgres-Datenbank ein . Verbinden Sie sich mit der Datenbank mit:
su postgres -c psql
Um zu überprüfen, ob auf die Erweiterungen zugegriffen werden kann, führen Sie die folgenden Abfragen in einer psql-session aus:
SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
Die Ausgabe sollte so aussehen:
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)
Um einen ausführlichen Test nach der Installation durchzuführen, führen Sie den folgenden Befehl in Ihrem Projektordner aus:
make check
Dabei werden verschiedene Prüfungen und Tests mit der generierten Bibliothek anhand einer tatsächlichen PostgreSQL-Datenbank durchgeführt.
Einrichten einer Geodatenbank
Um eine neue leere Datenbank zu erstellen, führen Sie den Postgres-Benutzer aus:
createdb [yourdatabase]
Stellen Sie mit einer psql-Sitzung eine Verbindung zur Datenbank her:
psql -d [yourdatabase]
In der psql-session ausführen:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
um die notwendigen geospatialen Erweiterungen zu erstellen. Sobald dies geschehen ist, handelt es sich bei der Datenbank um eine geografisch aktivierte Datenbank, und sie kann verwendet werden.
Ein Geospatial "Hello World"
In diesem Beispiel werden wir eine Geodatenbank einrichten, Daten aus zwei verschiedenen Quellen importieren und die Ergebnisse in einer Anwendung namens QGIS anzeigen. Dieses Handbuch ist explizit für Linux-Maschinen geschrieben. Wenn Sie auf einer anderen Plattform arbeiten, funktionieren einige Befehle oder Pfade möglicherweise nicht wie erwartet.
Um die importierten Daten anzuzeigen, verwenden wir eine Anwendung namens QGIS . Wenn Sie diese Anwendung nicht haben, installieren Sie sie zuerst . Wenn Sie einen anderen Viewer oder eine andere Geo-Anwendung (wie ArcGIS) verwenden möchten, können Sie die Installation von QGIS überspringen.
Unsere Quellen sind die Bezirke der New York City State Assembly und die LION Street Map Database von New York City . Laden Sie die entsprechenden Dateien von den verknüpften Speicherorten herunter. Schauen Sie sich auch den Metadaten-Abschnitt des Materials an, da Sie Informationen darüber erhalten, welches Koordinatenreferenzsystem diese Dateien verwenden.
Erstellen Sie zunächst einen Arbeitsordner "nycgis", kopieren Sie die heruntergeladenen Dateien an den Speicherort und entpacken Sie die Archive.
mkdir nycgis
cd nycgis
cp ~/Downloads/nyad_16d.zip .
unzip ~/Downloads/nyad_16d.zip
cp ~/Downloads/nylion_16d.zip .
unzip ~/Downloads/nylion_16d.zip
Im Ordner "nycgis" sollten Sie nun 2 Ordner haben: "nyad_16d", "lion" mit mehreren Dateien.
Bei der Arbeit mit Geodaten ist es wichtig, das Koordinatenreferenzsystem (CRS) Ihrer Quelldaten und Ihre endgültigen Ausgabedaten zu kennen. In den Metadaten-Abschnitten der oben verlinkten Standorte ( Metadaten: Assembly Districts , Metadata: LION Database ) finden Sie, dass das CRS für beide Dateien EPSG: 2263 ist, ein Koordinatensystem, das verwendet wird, um den Nordosten der USA zu referenzieren.
Nehmen wir an, wir möchten ein anderes CRS in unserer Datenbank verwenden. Dies kann verschiedene Gründe haben, beispielsweise möchten wir mit einer webbasierten Geo-Anwendung für die Datenbank arbeiten. Ein allgemeines CRS für diese Art von Anwendung ist WGS: 84 (EPSG: 4326).
Zur Konvertierung der Koordinatensysteme verwenden wir ein Werkzeug namens ogr2ogr , das Teil des GDAL-Pakets ist. Im Arbeitsordner erstellen wir zuerst 2 Ordner, die die wiedergeworfenen Daten darstellen, und konvertieren dann unsere Daten.
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
Beachten Sie, dass wir für unsere Zwecke nur die Datei "a0000000d.gdbtable" der LION-Datenbank verwenden. Die Syntax des ogr2ogr lautet wie folgt:
ogr2ogr -f [output-format] [output-file] [input-file] -s_srs [source crs] -t_srs [target crs]
Wir haben jetzt 2 Shapefiles, die im richtigen CRS projiziert werden. Um die Daten in unserer Datenbank verwenden zu können, müssen wir die Shapefiles in sql-statemens konvertieren. Dafür verwenden wir ein Werkzeug namens shp2pgsql . Führen Sie im Arbeitsverzeichnis die folgenden Befehle aus:
shp2pgsql ./nyad_16d_proj_4326/nyad_4326.shp > nyad_4326.sql
shp2pgsql ./nylion_16d_proj_4326/ny_str_4326.shp > ny_streets_4326.sql
Die Dateien nyad_4326.sql und ny_streets_4326.sql jetzt in postgis verwendet werden. Um fortzufahren und die Daten zu importieren, erstellen Sie eine räumlich aktivierte Datenbank.
sudo su - postgres
createdb nycgis
psql -d nycgis
Führen Sie in der psql-session Folgendes aus:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
Beenden Sie die psql- und postgres-user-session mit (STRG + D). Und importiere die Dateien mit:
psql -f nyad_4326.sql -d nycgis
psql -f ny_streets_4326.sql -d nycgis
Die Datenbank nycgis verfügt jetzt über 2 Tabellen, in die die neu projizierten Quellen erfolgreich importiert wurden.
Um dies zu überprüfen, öffnen Sie QGIS
- Verwenden Sie Ebene > Ebene hinzufügen > PostGIS-Ebene
- Verbinden Sie sich mit Ihrer Datenbank
- Wählen Sie Ihre Tische aus
- (optional) Festlegen der Gestaltung der neu erstellten Ebenen.
Et voilà: Sie haben jetzt eine räumlich aktivierte Datenbank mit importierten, neu abgelegten Geodaten.
