Chapter 2. PostGIS Installation

Table of Contents
2.1. Kurzfassung
2.2. Raster konfigurieren
2.3. Systemvoraussetzungen
2.4. Verwendung des Quellcodes
2.5. Kompilierung und Installation des Quellcodes: Detaillierte Beschreibung
2.5.1. Konfiguration
2.5.2. Build-Prozess
2.5.3. Build-Prozess für die PostGIS Extensions und deren Bereitstellung
2.5.4. Softwaretest
2.5.5. Installation
2.6. Eine Geodatenbank mit EXTENSIONS anlegen
2.7. Ersellung einer Geodatenbank ohne Extensions
2.8. Installation und Verwendung des Adressennormierers
2.8.1. Installation von Regex::Assemble
2.9. Installation, Aktualisierung des Tiger Geokodierers und Daten laden
2.9.1. Aktivierung des Tiger Geokodierer in Ihrer PostGIS Datenbank: Verwendung von Extension
2.9.2. Den Tiger Geokodierer in der PostGIS Datenbank aktivieren: ohne die Verwendung von Extensions
2.9.3. Die Adressennormierer-Extension zusammen mit dem Tiger Geokodierer verwenden
2.9.4. Tiger-Daten laden
2.9.5. Upgrade Ihrer Tiger Geokodierer Installation
2.10. Erzeugung einer Geodatenbank mit einem Template
2.11. Upgrading
2.11.1. Soft upgrade
2.11.2. Hard upgrade
2.12. Übliche Probleme bei der Installation
2.13. Loader/Dumper

Dieses Kapitel erläutert die notwendigen Schritte zur Installation von PostGIS.

2.1. Kurzfassung

Zum Kompilieren müssen die Abhängigkeiten im Suchpfad eingetragen sein:

tar xvfz postgis-3.0.1.tar.gz
cd postgis-3.0.1
./configure
make
make install

Nachdem PostGIS installiert ist, muss es in jeder Datenbank-Instanz, in der es verwendet werden soll, aktiviert werden.

[Note]

Die Verwendung der Erweiterung wird bevorzugt und ist benutzerfreundlicher. So aktivieren Sie Ihre Datenbank räumlich:

psql -d ihredatenbank -c "CREATE EXTENSION postgis;"

- wenn Sie mit Raster-Unterstützung kompiliert haben und sie installieren möchten -
psql -d ihredatenbank -c "CREATE EXTENSION postgis_raster;"

- wenn Sie die Topologieunterstützung installieren möchten -
psql -d ihredatenbank -c "CREATE EXTENSION postgis_topology;"

- wenn Sie mit Unterstützung von sfcgal erstellt haben und sie installieren möchten -
psql -d ihredatenbank -c "CREATE EXTENSION postgis_sfcgal;"

- wenn Sie eine Tiger-Geokodierung installieren möchten -
psql -d ihredatenbank -c "CREATE EXTENSION fuzzystrmatch"
psql -d ihredatenbank -c "CREATE EXTENSION postgis_tiger_geocoder;"

- wenn Sie mit pcre installiert haben
- sollten Sie auch die Erweiterung zur Adressstandardisierung hinzufügen
psql -d ihredatenbank -c "CREATE EXTENSION address_standardizer;"

Unter Section 2.5.3, “Build-Prozess für die PostGIS Extensions und deren Bereitstellung” sind die Details beschrieben, wie man die installierten/vorhandenen Erweiterungen abfragen und aktualisieren kann, bzw. wie man von einer Installation ohne Erweiterungen zu einer Erweiterungsinstallation kommt.

Für diejenigen, die sich aus irgendeinem Grund entschieden haben, nicht die Erweiterungsinstallation zu verwenden, sind hier die längeren schmerzvolleren Anweisungen:

Nach der Installation befinden sich alle .sql Dateien unter dem Ordner "share/contrib/postgis-3.0" der PostgreSQL Installation.

createdb ihredatenbank
createlang plpgsql ihredatenbank
psql -d ihredatenbank -f postgis.sql
psql -d ihredatenbank -f postgis_comments.sql
psql -d ihredatenbank -f spatial_ref_sys.sql

- wenn Sie die Topologie aktivieren möchten
psql -d ihredatenbank -f topologie.sql
psql -d ihredatenbank -f topology_comments.sql

- wenn Sie Raster aktivieren möchten
- und nur wenn Sie mit Raster (GDAL) kompiliert haben
psql -d ihredatenbank -f rtpostgis.sql
psql -d ihredatenbank -f raster_comments.sql

- wenn Sie das sfcgal-Backend aktivieren möchten
- und nur wenn Sie mit sfcgal Unterstützung kompiliert haben -
psql -d ihredatenbank -f sfcgal.sql
psql -d ihredatenbank -f sfcgal_comments.sql

2.2. Raster konfigurieren

Wenn Sie die Raster-Unterstützung aktiviert haben, sollten Sie im Folgenden nachlesen, wie Sie sie richtig konfigurieren.

Ab PostGIS 2.1.3 sind out-of-db Raster und alle Raster Treiber standardmäßig ausgeschaltet. Um diese zu aktivieren müssen folgende Umgebungsvariablen POSTGIS_GDAL_ENABLED_DRIVERS and POSTGIS_ENABLE_OUTDB_RASTERS am Server gesetzt werden. Für PostGIS 2.2 kann ein plattformübergreifender Ansatz gewählt werden, indem der entsprechende Section 8.22, “Grand Unified Custom Variables (GUCs)” gesetzt wird.

Falls Offline-Raster ermöglicht werden sollen:

POSTGIS_ENABLE_OUTDB_RASTERS=1

Jede andere Einstellung oder keine Einstellung deaktiviert out-of-db Raster.

Um alle in der jeweiligen GDAL Installation verfügbaren Treiber zu aktivieren, muss folgende Umgebungsvariable gesetzt werden:

POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL

Falls nur bestimmte Treiber aktiviert werden sollen, kann die Umgebungsvariable auf diese beschränkt werden:

POSTGIS_GDAL_ENABLED_DRIVERS="GTiff PNG JPEG GIF XYZ"
[Note]

Unter Windows darf die Treiberliste nicht unter Anführungszeichen gesetzt werden.

Die Zuweisung von Umgebungsvariablen wechselt je nach Betriebssystem. Für PostgreSQL Installationen auf Ubuntu oder Debian via apt-postgresql, ist der bevorzugte Weg /etc/postgresql/10/main/environment zu editieren, wobei 10 auf die PostgreSQL Version verweist und main auf den Cluster hinweist.

Als Service unter Windows können Sie die Systemvariablen setzen; diese befinden sich bei Windows 7 mit Rechtsklick auf Computer->Properties Advanced System Settings oder im Explorer unter Control Panel\All Control Panel Items\System. Anschließend auf Advanced System Settings ->Advanced->Environment Variables und die neuen Systemvariablen hinzufügen.

Nachdem die Umgebungsvariablen gesetzt sind, ist ein Neustart des PostgreSQL-Dienstes notwendig, damit die Änderungen wirksam werden.

2.3. Systemvoraussetzungen

Zur Kompilation und Anwendung stellt PostGIS die folgenden Systemanforderungen:

Notwendige Systemvoraussetzungen

  • PostgreSQL 9.5 oder höher. Es wird eine vollständige PostgreSQL Installation (inklusive Server headers) benötigt. PostgreSQL steht unter http://www.postgresql.org zur Verfügung.

    Welche PostgreSQL Version von welcher PostGIS Version unterstützt wird und welche PostGIS Version von welcher GEOS Version unterstützt wird findet sich unter http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

  • GNU C Compiler (gcc). Es können auch andere ANSI C Compiler zur PostGIS Kompilation verwendet werden, aber die Kompilation mit gcc macht die geringsten Probleme.

  • GNU Make (gmake oder make). Für viele Systeme ist GNU make die Standardversion von make. Überprüfe die Version durch make -v. Andere Versionen von make können das PostGIS Makefile nicht richtig ausführen.

  • Proj4 Projektionsbibliothek, Version 4.6.0 oder höher. Die Proj4 4.9 oder höher wird benötigt um Koordinatentransformationen in PostGIS zu ermöglichen. Proj4 kann von http://trac.osgeo.org/proj/ heruntergeladen werden.

  • Die Geometriebibliothek GEOS, Version 3.6 oder höher. Um die neuen Funktionen und Features in vollem Ausmaß nutzen zu können wird allerdings GEOS 3.7+ benötigt . GEOS kann unter http://trac.osgeo.org/geos/ heruntergeladen werden.

  • LibXML2, Version 2.5.x oder höher. LibXML2 wird derzeit für einige Import Funktionen genutzt (ST_GeomFromGML und ST_GeomFromKML). LibXML2 steht unter http://xmlsoft.org/downloads.html zur Verfügung.

  • JSON-C, Version 0.9 oder höher. JSON-C wird zurzeit benutzt um GeoJSON über die Funktion ST_GeomFromGeoJson zu importieren. JSON-C kann unter https://github.com/json-c/json-c/releases/ bezogen werden.

  • GDAL, Version 1.8 oder höher (Version 1.9 oder höher wird dringend empfohlen, da niedrigere Versionen in manchen Bereichen nicht gut funktionieren oder zu unvorhergesehenen Verhalten führen können). Es ist für die Rasterunterstützung erforderlich. http://trac.osgeo.org/gdal/wiki/DownloadSource.

  • Wenn mit PostgreSQL+JIT kompiliert wird, ist die LLVM-Version >=6 erforderlich https://trac.osgeo.org/postgis/ticket/4125 .

Optionale Systemanforderungen

  • GDAL (pseudo optional) nur wenn Sie kein Rasterunterstützung möchten, können Sie es weglassen. Sorgen Sie außerdem dafür das Treiber, die Sie brauchen wie in Section 2.2, “Raster konfigurieren” beschrieben, aktiviert sind.

  • GTK (benötigt GTK+2.0, 2.8+) um den "shp2pgsql-gui shape file loader" zu kompilieren. http://www.gtk.org/ .

  • SFCGAL, Version 1.1 (oder höher) bietet zusätzliche, hoch entwickelte 2D und 3D Analysefunktionen für PostGIS cf Section 8.19, “SFCGAL Funktionen”. Ermöglicht auch die Anwendung von SFCGAL anstatt von GEOS für einige 2D Funktionen, die von beiden Backends unterstützt werden (wie ST_Intersection oder ST_Area). Eine PostgreSQL Konfigurationsvariable postgis.backend ermöglicht es den Endanwendern zwischen dem Backend zu wählen, falls SFCGAL installiert ist (Standardwert ist GEOS). Anmerkung: SFCGAL 1.2 benötigt mindestens CGAL 4.3 und Boost 1.54 (cf: http://oslandia.github.io/SFCGAL/installation.html) https://github.com/Oslandia/SFCGAL.

  • Um den Chapter 12, Adressennormierer zu kompilieren wird http://www.pcre.org benötigt (ist normalerweise auf Unix-Systemen bereits vorinstalliert). Regex::Assemble perl CPAN package ist nur für eine Neukodierung der Daten in parseaddress-stcities.h erforderlich. Chapter 12, Adressennormierer wird selbsttätig erzeugt, wenn eine PCRE Bibliothek gefunden wird, oder ein gültiger --with-pcre-dir=/path/to/pcre im Konfigurationsschritt angegeben wird.

  • Um ST_AsMVT verwenden zu können, wird die protobuf-c Bibliothek (für die Anwendung) und der protoc-c Kompiler (für die Kompilation) benötigt. Weiters ist pgk-config erforderlich um die korrekte Minimumversion von protobuf-c zu bestimmen. Siehe protobuf-c. Standardmäßig verwendet PostGIS Wagyu um die MVT Polygone schneller validieren zu können, wofür ein c++11 Compiler benötigt wird. Es werden dabei CXXFLAGS und derselbe Compiler wie bei der PostgreSQL Installation verwendet. Um diesen zu deaktivieren und stattdessen GEOS zu verwenden muss beim Konfigurationsschritt --without-wagyu angegeben werden.

  • CUnit (CUnit). Wird für Regressionstest benötigt. http://cunit.sourceforge.net/

  • DocBook (xsltproc) ist für die Kompilation der Dokumentation notwendig. Docbook steht unter http://www.docbook.org/ zur Verfügung.

  • DBLatex (dblatex) ist zur Kompilation der Dokumentation im PDF-Format nötig. DBLatex liegt unter http://dblatex.sourceforge.net/ vor.

  • ImageMagick (convert) wird zur Erzeugung von Bildern für die Dokumentation benötigt. ImageMagick kann von http://www.imagemagick.org/ bezogen werden.

2.4. Verwendung des Quellcodes

Das PostGIS Quellarchiv kann von der Download Webseite http://download.osgeo.org/postgis/source/postgis-3.0.1.tar.gz bezogen werden.

wget http://download.osgeo.org/postgis/source/postgis-3.0.1.tar.gz
tar -xvzf postgis-3.0.1.tar.gz

Dadurch wird das Verzeichnis postgis-3.0.1 im aktuellen Arbeitsverzeichnis erzeugt.

Alternatively, checkout the source from the git repository https://git.osgeo.org/gitea/postgis/postgis/ .

git clone -b stable-3.0 https://git.osgeo.org/gitea/postgis/postgis.git postgis-3.0

PostGIS also offers several git mirrors.

Change into the newly created postgis-3.0 directory to continue the installation.

2.5. Kompilierung und Installation des Quellcodes: Detaillierte Beschreibung

[Note]

Viele Betriebssysteme stellen heute bereits vorkompilierte Pakete für PostgreSQL/PostGIS zur Verfügung. Somit ist eine Kompilation nur notwendig, wenn man die aktuellsten Versionen benötigt oder für die Paketverwaltung zustänig ist.

Dieser Abschnitt enthält die allgemeinen Installationsanweisungen. Für das Kompilieren unter Windows oder unter einem anderen Betriebssystem findet sich zusätzliche, detailliertere Hilfe unter PostGIS User contributed compile guides und PostGIS Dev Wiki.

Vorkompilierte Pakete für unterschiedliche Betriebssysteme sind unter PostGIS Pre-built Packages aufgelistet.

Wenn Sie ein Windowsbenutzer sind, können Sie stabile Kompilationen mittels Stackbuilder oder die PostGIS Windows download site erhalten. Es gibt auch die very bleeding-edge windows experimental builds, die ein oder zweimal pro Woche, bzw. anlassweise kompiliert werden. Damit können Sie mit im Aufbau befindlichen PostGIS Releases experimentieren.

PostGIS ist eine Erweiterung des PostgreSQL Servers. Daher benötigt PostGIS 3.0.1 vollen Zugriff auf die PostgreSQL server headers für die Kompilation. PostGIS kann in Abhängigkeit von PostgreSQL Versionen 9.5 oder höher kompiliert werden. Niedrigere Versionen von PostgreSQL werden nicht unterstützt.

Beziehen Sie sich auf die PostgreSQL Installationshilfe, falls Sie PostgreSQL noch nicht installiert haben. http://www.postgresql.org .

[Note]

Um die GEOS Funktionen nutzen zu können, muss bei der Installation von PostgreSQL explizit gegen die Standard C++ Bibliothek gelinkt werden:

LDFLAGS=-lstdc++ ./configure [IHRE OPTIONEN]

Dies dient als Abhilfe für C++ Fehler bei der Interaktion mit älteren Entwicklungswerkzeugen. Falls eigenartige Probleme auftreten (die Verbindung zum Backend bricht unerwartet ab oder ähnliches) versuchen Sie bitte diesen Trick. Dies verlangt natürlich die Kompilation von PostgreSQL von Grund auf.

Die folgenden Schritte bescheiben die Konfiguration und Kompilation des PostGIS Quellcodes. Sie gelten für Linux Anwender und funktionieren nicht für Windows oder Mac.

2.5.1. Konfiguration

Wie bei den meisten Installationen auf Linux besteht der erste Schritt in der Erstellung eines Makefiles, welches dann zur Kompilation des Quellcodes verwendet wird. Dies wird durch einen Aufruf des Shell Scripts erreicht.

./configure

Ohne zusätzliche Parameter legt dieser Befehl die Komponenten und Bibliotheken fest, welche für die Kompilation des PostGIS Quellcodes auf Ihrem System benötigt werden. Obwohl dies der häufigste Anwendungsfall von ./configure ist, akzeptiert das Skript eine Reihe von Parametern, falls sich die benötigten Bibliotheken und Programme nicht in den Standardverzeichnissen befinden.

Die folgende Liste weist nur die am häufigsten verwendeten Parameter auf. Für eine vollständige Liste benutzen Sie bitte --help oder --help=short .

--with-library-minor-version

Beginnend mit PostGIS 3.0, haben die standardmäßig erzeugten Bibliotheksdateien nicht länger die Minor-Version als Teil ihres Dateinamens. D.h. alle PostGIS 3 Bibliotheken enden mit postgis-3. Dies wurde unternommen, um das pg_upgrade zu erleichtern, mit dem Nachteil, dass Sie nur mehr eine Version der PostGIS 3 Serie auf Ihrem Server installieren können. Um die alte Verhaltensweise zu erhalten, wo der Dateiname die Minor-Version enthält, z.B. postgis-3.0, fügen Sie bitte diesen Switch zu Ihrer Configure-Anweisung hinzu:

--prefix=PREFIX

Das Verzeichnis, in dem die Loader-Programme und Systembibliotheken von PostGIS installiert werden. Standardmäßig ist dies das Verzeichnis in dem auch PostgreSQL installatiert wurde.

[Caution]

Dieser Parameter ist zur Zeit defekt; somit kann PostGIS nur in das PostgreSQL Installationsverzeichnis installiert werden. Dieser Bug kann auf http://trac.osgeo.org/postgis/ticket/635 verfolgt werden.

--with-pgconfig=FILE

PostgreSQL stellt das Dienstprogramm pg_config zur Verfügung um Extensions wie PostGIS die Auffindung des PostgreSQL Installationsverzeichnisses zu ermöglichen. Benutzen Sie bitte diesen Parameter (--with-pgconfig=/path/to/pg_config) um eine bestmmte PostgreSQL Installation zu definieren, gegen die PostGIS kompiliert werden soll.

--with-gdalconfig=FILE

GDAL, eine erforderliche Bibliothek, welche die Funktionalität zur Rasterunterstützung liefert. gdal-config um Software Installationen die Auffindung des GDAL Installationsverzeichnis zu ermöglichen. Benutzen Sie bitte diesen Parameter (--with-gdalconfig=/path/to/gdal-config) um eine bestimmte GDAL Installation zu definieren, gegen die PostGIS kompiliert werden soll.

--with-geosconfig=FILE

GEOS, eine erforderliche Geometriebibliothek, stellt geos-config zur Verfügung, um Software Installationen das Auffinden des GEOS Installationsverzeichnisses zu ermöglichen. Benutzen Sie bitte diesen Parameter (--with-geosconfig=/path/to/geos-config) um eine bestimmte GEOS Installation zu definieren, gegen die PostGIS kompiliert werden soll.

--with-xml2config=FILE

LibXML ist die Bibliothek, welche für die Prozesse GeomFromKML/GML benötigt wird. Falls Sie libxml installiert haben, wird sie üblicherweise gefunden. Falls nicht oder wenn Sie eine bestimmte Version verwenden wollen, müssen Sie PostGIS auf eine bestimmte Konfigurationsdatei xml2-config verweisen, damit Softwareinstallationen das Installationsverzeichnis von LibXML finden können. Verwenden Sie bitte diesen Parameter ( >--with-xml2config=/path/to/xml2-config) um eine bestimmte LibXML Installation anzugeben, gegen die PostGIS kompiliert werden soll.

--with-projdir=DIR

Proj4 ist eine Bibliothek, die von PostGIS zur Koordinatentransformation benötigt wird. Benutzen Sie bitte diesen Parameter (--with-projdir=/path/to/projdir) um ein bestimmtes Proj4 Installationsverzeichnis anzugeben, für das PostGIS kompiliert werden soll.

--with-libiconv=DIR

Das Verzeichnis in dem iconv installiert ist.

--with-jsondir=DIR

JSON-C ist eine MIT-lizensierte JSON Bibliothek, die von PostGIS für ST_GeomFromJSON benötigt wird. Benutzen Sie bitte diesen Parameter (--with-jsondir=/path/to/jsondir), um ein bestimmtes JSON-C Installationsverzeichnis anzugeben, für das PostGIS kompiliert werden soll.

--with-pcredir=DIR

PCRE ist eine BSD-lizensierte Perl compatible Bibliothek für reguläre Ausdrücke, die von der Erweiterung "address_standardizer" benötigt wird. Verwenden Sie diesen Parameter (--with-pcredir=/path/to/pcredir), um ein bestimmtes Installationsverzeichnis von PCRE anzugeben, gegen das PostGIS kompiliert werden soll.

--with-gui

Kompilieren Sie die Datenimport-GUI (benötigt GTK+2.0). Dies erzeugt die graphische Schnittstelle "shp2pgsql-gui" für shp2pgsql.

--without-raster

Ohne Rasterunterstützung kompilieren.

--without-topology

Ausschalten der Topologie Unterstützung. Es existiert keine entsprechende Bibliothek, da sich die gesamte benötigte Logik in der postgis-3.0.1 Bibliothek befindet.

--with-gettext=no

Standardmäßig versucht PostGIS gettext zu detektieren und kompiliert mit gettext Unterstützung. Wenn es allerdings zu Inkompatibilitätsproblemen kommt, die zu einem Zusammenbrechen des Loader führen, so können Sie das mit diesem Befehl zur Gänze deaktivieren. Siehe Ticket http://trac.osgeo.org/postgis/ticket/748 für ein Beispiel wie dieses Problem gelöst werden kann. Sie verpassen nicht viel, wenn Sie dies deaktivieren, da es für die internationale Hilfe zum GUI Loader/Label verwendet wird, welcher nicht dokumentiert und immer noch experimentell ist.

--with-sfcgal=PATH

Ohne diesen Switch wird PostGIS ohne sfcgal Unterstützung installiert. PATH ist ein optionaler Parameter, welcher einen alternativen Pfad zu sfcgal-config angibt.

--without-wagyu

Wenn mit MVT Unterstützung kompiliert wird, benützt PostGIS Wagyu zum Ausschneiden und Validieren der MVT-Polygone. Wagyu ist die performanteste Alternative und liefert korrekte Ergebnisse für diesen Fall, benötigt allerdings einen Compiler für C++11. Mit diesem optionalen Übergabewert können Sie die Verwendung dieser Bibliothek unterbinden und es wird stattdessen GEOS verwendet.

[Note]

Wenn Sie PostGIS vom Code Repository bezogen haben, müssen Sie zu allererst das Skript ausführen

./autogen.sh

Dieses Skript erzeugt das configure Skript, welches seinerseits zur Anpassung der Installation von PostGIS eingesetzt wird.

Falls Sie stattdessen PostGIS als Tarball vorliegen haben, dann ist es nicht notwendig ./autogen.sh auszuführen, da configure bereits erzeugt wurde.

2.5.2. Build-Prozess

Sobald das Makefile erzeugt wurde, ist der Build-Prozess für PostGIS so einfach wie

make

Die letzte Zeile der Ausgabe sollte "PostGIS was built successfully. Ready to install." enthalten

Seit PostGIS v1.4.0 haben alle Funktionen Kommentare, welche aus der Dokumentation erstellt werden. Wenn Sie diese Kommentare später in die räumliche Datenbank importieren wollen, können Sie den Befehl ausführen der "docbook" benötigt. Die Dateien "postgis_comments.sql", "raster_comments.sql" und "topology_comments.sql" sind im Ordner "doc" der "tar.gz"-Distribution mit paketiert, weshalb Sie bei einer Installation vom "tar ball" her, die Kommentare nicht selbst erstellen müssen. Die Kommentare werden auch als Teil der Installation "CREATE EXTENSION" angelegt.

make comments

Eingeführt in PostGIS 2.0. Erzeugt HTML-Spickzettel, die als schnelle Referenz oder als Handzettel für Studenten geeignet sind. Dies benötigt xsltproc zur Kompilation und erzeugt 4 Dateien in dem Ordner "doc": topology_cheatsheet.html,tiger_geocoder_cheatsheet.html, raster_cheatsheet.html, postgis_cheatsheet.html

Einige bereits Vorgefertigte können von PostGIS / PostgreSQL Study Guides als HTML oder PDF heruntergeladen werden

make cheatsheets

2.5.3. Build-Prozess für die PostGIS Extensions und deren Bereitstellung

Die PostGIS Erweiterungen/Extensions werden ab PostgreSQL 9.1+ automatisch kompiliert und installiert.

Wenn Sie aus dem Quell-Repository kompilieren, müssen Sie zuerst die Beschreibung der Funktionen kompilieren. Diese lassen sich kompilieren, wenn Sie docbook installiert haben. Sie können sie aber auch händisch mit folgender Anweisung kompilieren:

make comments

Sie müssen die Kommentare nicht kompilieren, wenn sie von einem Format "tar" weg kompilieren, da diese in der tar-Datei bereits vorkompilierten sind.

Die Erweiterungen sollten automatisch als Teil des Prozesses "make install" kompilieren. Falls notwendig, können Sie auch vom Ordner mit den Erweiterungen aus kompilieren, oder die Dateien auf einen anderen Server kopieren.

cd extensions
cd postgis
make clean
make
export PGUSER=postgres #overwrite psql variables
make check #to test before install
make install
# Erweiterungen überprüfen
make check RUNTESTFLAGS=--extension
[Note]

make check führt die Tests mit psql aus und kann daher die Umgebungsvariablen von psql verwenden. Die zweckdienlich am gängigsten Überschriebenen sind PGUSER, PGPORT und PGHOST. Siehepsql environment variables.

Die Erweiterungsdateien sind für dieselbe Version von PostGISund PostgreSQL immer ident, unabhängig vom Betriebssystem. Somit ist es in Ordnung, die Erweiterungsdateien von einem Betriebssystem auf ein anderes zu kopieren, solange die Binärdateien von PostGIS bereits installiert sind.

Falls Sie die Erweiterungen händisch auf einen anderen Server installieren wollen, müssen sie folgende Dateien aus dem Erweiterungsordner in den Ordner PostgreSQL / share / extension Ihrer PostgreSQL Installation kopieren. Ebenso die benötigten Binärdateien für das reguläre PostGIS, falls sich PostGIS noch nicht auf dem Server befindet.

  • Dies sind die Kontrolldateien, welche Information wie die Version der zu installierenden Erweiterung anzeigen, wenn diese nicht angegben ist. postgis.control, postgis_topology.control.

  • Alle Dateien in dem Ordner "/sql" der jeweiligen Erweiterung. Diese müssen in das Verzeichnis "share/extension" von PostgreSQL extensions/postgis/sql/*.sql, extensions/postgis_topology/sql/*.sql kopiert werden

Sobald Sie dies ausgeführt haben, sollten Sie postgis, postgis_topology als verfügbare Erweiterungen in PgAdmin -> extensions sehen.

Falls Sie psql verwenden, können Sie die installierten Erweiterungen folgendermaßen abfragen:

SELECT name, default_version,installed_version
FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';

             name             | default_version | installed_version
------------------------------+-----------------+-------------------
 address_standardizer         | 3.0.1         | 3.0.1
 address_standardizer_data_us | 3.0.1         | 3.0.1
 postgis                      | 3.0.1         | 3.0.1
 postgis_raster               | 3.0.1         | 3.0.1
 postgis_sfcgal               | 3.0.1         |
 postgis_tiger_geocoder       | 3.0.1         | 3.0.1
 postgis_topology             | 3.0.1         |
(6 rows)

Wenn Sie in der Datenbank, die Sie abfragen, eine Erweiterung installiert haben, dann sehen Sie einen Hinweis in der Spalte installed_version. Wenn Sie keine Datensätze zurückbekommen bedeutet dies, dass Sie überhaupt keine PostGIS Erweiterung auf dem Server installiert haben. PgAdmin III 1.14+ bietet diese Information ebenfalls in der Sparte extensions im Navigationsbaum der Datenbankinstanz an und ermöglicht sogar ein Upgrade oder eine Deinstallation über einen Rechtsklick.

Wenn die Erweiterungen vorhanden sind, können Sie die PostGIS-Extension sowohl mit der erweiterten pgAdmin Oberfläche als auch mittels folgender SQL-Befehle in einer beliebigen Datenbank installieren:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch; --von postgis_tiger_geocoder benötigt
--optional von postgis_tiger_geocoder verwendet, oder eigenständig nutzbar
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis_topology;

Sie können psql verwenden, um sich die installierten Versionen und die Datenbankschemen in denen sie installiert sind, anzeigen zu lassen.

\connect mygisdb
\x
\dx postgis*
List of installed extensions
-[ RECORD 1 ]-------------------------------------------------
Name        | postgis
Version     | 3.0.1
Schema      | public
Description | PostGIS geometry, geography, and raster spat..
-[ RECORD 2 ]-------------------------------------------------
Name        | postgis_raster
Version     | 3.0.0dev
Schema      | public
Description | PostGIS raster types and functions
-[ RECORD 3 ]-------------------------------------------------
Name        | postgis_tiger_geocoder
Version     | 3.0.1
Schema      | tiger
Description | PostGIS tiger geocoder and reverse geocoder
-[ RECORD 4 ]-------------------------------------------------
Name        | postgis_topology
Version     | 3.0.1
Schema      | topology
Description | PostGIS topology spatial types and functions
[Warning]

Die Erweiterungstabellen spatial_ref_sys. layer und topology können nicht explizit gesichert werden. Sie können nur mit der entsprechenden postgis oder postgis_topology Erweiterung gesichert werden, was nur geschieht, wenn Sie die ganze Datenbank sichern. Ab PostGIS 2.0.2 werden nur diejenigen Datensätze von SRID beim Backup der Datenbank gesichert, die nicht mit PostGIS paketiert sind. Sie sollten daher keine paketierte SRID ändern und Sie können erwarten, dass Ihre Änderungen gesichert werden. Wenn Sie irgendein Problem finden, reichen Sie bitte ein Ticket ein. Die Struktur der Erweiterungstabellen wird niemals gesichert, da diese mit CREATE EXTENSION erstellt wurde und angenommen wird, dass sie für eine bestimmten Version einer Erweiterung gleich ist. Dieses Verhalten ist in dem aktuellen PostgreSQL Extension Model eingebaut, weshalb wir daran nichts ändern können.

Wenn Sie 3.0.1 ohne unser wunderbares Extension System installiert haben, können Sie auf erweiterungsbasiert wechseln, indem Sie folgende Befehle ausführen, welche die Funktionen in ihre entsprechenden Erweiterungen paketieren.

CREATE EXTENSION postgis FROM unpackaged;
CREATE EXTENSION postgis_raster FROM unpackaged;
CREATE EXTENSION postgis_topology FROM unpackaged;
CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;

2.5.4. Softwaretest

Wenn Sie die Kompilation von PostGIS überprüfen wollen:

make check

Obiger Befehl durchläuft mehere Überprüfungen und Regressionstests, indem er die angelegte Bibliothek in einer aktuellen PostgreSQL Datenbank ausführt.

[Note]

Falls Sie PostGIS so konfiguriert haben, dass nicht die Standardverzeichnisse für PostgreSQL, GEOS oder Proj4 verwendet werden, kann es sein, dass Sie die Speicherstellen dieser Bibliotheken in der Umgebungsvariablen LD_LIBRARY_PATH eintragen müssen.

[Caution]

Zurzeit beruht make check auf die Umgebungsvariablen PATH undPGPORT beim Ausführen der Überprüfungen - es wird nicht die Version von PostgreSQL verwendet, die mit dem Konfigurationsparameter --with-pgconfig angegeben wurde. Daher stellen Sie sicher, dass die Variable PATH mit der während der Konfiguration dedektierten Installation von PostgreSQL übereinstimmt, oder seien Sie auf drohende Kopfschmerzen vorbereitet.

Wenn der Test erfolgreich war, sollte die Ausgabe etwa so aussehen:

CUnit - A unit testing framework for C - Version 2.1-3
     http://cunit.sourceforge.net/


Suite: algorithm
  Test: test_lw_segment_side ...passed
  Test: test_lw_segment_intersects ...passed
  Test: test_lwline_crossing_short_lines ...passed
  Test: test_lwline_crossing_long_lines ...passed
  Test: test_lwline_crossing_bugs ...passed
  Test: test_lwpoint_set_ordinate ...passed
  Test: test_lwpoint_get_ordinate ...passed
  Test: test_point_interpolate ...passed
  Test: test_lwline_interpolate_points ...passed
  Test: test_lwline_interpolate_point_3d ...passed
  Test: test_lwline_clip ...passed
  Test: test_lwpoly_clip ...passed
  Test: test_lwtriangle_clip ...passed
  Test: test_lwline_clip_big ...passed
  Test: test_lwmline_clip ...passed
  Test: test_geohash_point ...passed
  Test: test_geohash_precision ...passed
  Test: test_geohash ...passed
  Test: test_geohash_point_as_int ...passed
  Test: test_isclosed ...passed
  Test: test_lwgeom_simplify ...passed
  Test: test_lw_arc_center ...passed
  Test: test_point_density ...passed
  Test: test_kmeans ...passed
  Test: test_median_handles_3d_correctly ...passed
  Test: test_median_robustness ...passed
  Test: test_lwpoly_construct_circle ...passed
  Test: test_trim_bits ...passed
  Test: test_lwgeom_remove_repeated_points ...passed
Suite: buildarea
  Test: buildarea1 ...passed
  Test: buildarea2 ...passed
  Test: buildarea3 ...passed
  Test: buildarea4 ...passed
  Test: buildarea4b ...passed
  Test: buildarea5 ...passed
  Test: buildarea6 ...passed
  Test: buildarea7 ...passed
Suite: geometry_clean
  Test: test_lwgeom_make_valid ...passed
Suite: clip_by_rectangle
  Test: test_lwgeom_clip_by_rect ...DEBUG1: lwgeom_clip_by_rect: GEOS Error: IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or 
>= 4
passed
Suite: force_sfs
  Test: test_sfs_11 ...passed
  Test: test_sfs_12 ...passed
  Test: test_sqlmm ...passed
Suite: geodetic
  Test: test_sphere_direction ...passed
  Test: test_sphere_project ...passed
  Test: test_lwgeom_area_sphere ...passed
  Test: test_gbox_from_spherical_coordinates ...passed
  Test: test_gserialized_get_gbox_geocentric ...passed
  Test: test_clairaut ...passed
  Test: test_edge_intersection ...passed
  Test: test_edge_intersects ...passed
  Test: test_edge_distance_to_point ...passed
  Test: test_edge_distance_to_edge ...passed
  Test: test_lwgeom_distance_sphere ...passed
  Test: test_lwgeom_check_geodetic ...passed
  Test: test_gserialized_from_lwgeom ...passed
  Test: test_spheroid_distance ...passed
  Test: test_spheroid_area ...passed
  Test: test_lwpoly_covers_point2d ...passed
  Test: test_gbox_utils ...passed
  Test: test_vector_angle ...passed
  Test: test_vector_rotate ...passed
  Test: test_lwgeom_segmentize_sphere ...passed
  Test: test_ptarray_contains_point_sphere ...passed
  Test: test_ptarray_contains_point_sphere_iowa ...passed
  Test: test_gbox_to_string_truncated ...passed
Suite: geos
  Test: test_geos_noop ...passed
  Test: test_geos_subdivide ...passed
  Test: test_geos_linemerge ...passed
  Test: test_geos_offsetcurve ...passed
  Test: test_geos_offsetcurve_crash ...passed
  Test: test_geos_makevalid ...passed
Suite: clustering
  Test: basic_test ...passed
  Test: nonsequential_test ...passed
  Test: basic_distance_test ...passed
  Test: single_input_test ...passed
  Test: empty_inputs_test ...passed
  Test: multipoint_test ...passed
  Test: dbscan_test ...passed
  Test: dbscan_test_3612a ...passed
  Test: dbscan_test_3612b ...passed
  Test: dbscan_test_3612c ...passed
Suite: clustering_unionfind
  Test: test_unionfind_create ...passed
  Test: test_unionfind_union ...passed
  Test: test_unionfind_ordered_by_cluster ...passed
  Test: test_unionfind_path_compression ...passed
  Test: test_unionfind_collapse_cluster_ids ...passed
Suite: homogenize
  Test: test_coll_point ...passed
  Test: test_coll_line ...passed
  Test: test_coll_poly ...passed
  Test: test_coll_coll ...passed
  Test: test_geom ...passed
  Test: test_coll_curve ...passed
Suite: encoded_polyline_input
  Test: in_encoded_polyline_test_geoms ...passed
  Test: in_encoded_polyline_test_precision ...passed
Suite: geojson_input
  Test: in_geojson_test_srid ...passed
  Test: in_geojson_test_bbox ...passed
  Test: in_geojson_test_geoms ...passed
Suite: iterator
  Test: test_point_count ...passed
  Test: test_ordering ...passed
  Test: test_modification ...passed
  Test: test_mixed_rw_access ...passed
  Test: test_cannot_modify_read_only ...passed
  Test: test_no_memory_leaked_when_iterator_is_partially_used ...passed
Suite: twkb_input
  Test: test_twkb_in_point ...passed
  Test: test_twkb_in_linestring ...passed
  Test: test_twkb_in_polygon ...passed
  Test: test_twkb_in_multipoint ...passed
  Test: test_twkb_in_multilinestring ...passed
  Test: test_twkb_in_multipolygon ...passed
  Test: test_twkb_in_collection ...passed
  Test: test_twkb_in_precision ...passed
Suite: serialization/deserialization
  Test: test_typmod_macros ...passed
  Test: test_flags_macros ...passed
  Test: test_serialized_srid ...NOTICE: SRID value -3005 converted to the officially unknown SRID value 0
passed
  Test: test_gserialized_from_lwgeom_size ...passed
  Test: test_gbox_serialized_size ...passed
  Test: test_lwgeom_from_gserialized ...passed
  Test: test_lwgeom_count_vertices ...passed
  Test: test_on_gser_lwgeom_count_vertices ...passed
  Test: test_geometry_type_from_string ...passed
  Test: test_lwcollection_extract ...passed
  Test: test_lwgeom_free ...passed
  Test: test_lwgeom_swap_ordinates ...passed
  Test: test_f2d ...passed
  Test: test_lwgeom_clone ...passed
  Test: test_lwgeom_force_clockwise ...passed
  Test: test_lwgeom_calculate_gbox ...passed
  Test: test_lwgeom_is_empty ...passed
  Test: test_lwgeom_same ...passed
  Test: test_lwline_from_lwmpoint ...passed
  Test: test_lwgeom_as_curve ...passed
  Test: test_lwgeom_scale ...passed
  Test: test_gserialized_is_empty ...passed
  Test: test_gserialized_peek_gbox_p_no_box_when_empty ...passed
  Test: test_gserialized_peek_gbox_p_gets_correct_box ...passed
  Test: test_gserialized_peek_gbox_p_fails_for_unsupported_cases ...passed
  Test: test_gbox_same_2d ...passed
  Test: test_signum_macro ...passed
Suite: lwstroke
  Test: test_lwcurve_linearize ...passed
  Test: test_unstroke ...passed
Suite: measures
  Test: test_mindistance2d_tolerance ...passed
  Test: test_mindistance3d_tolerance ...NOTICE: One or both of the geometries is missing z-value. The unknown z-value will be regarded as "any value"
NOTICE: One or both of the geometries is missing z-value. The unknown z-value will be regarded as "any value"
passed
  Test: test_rect_tree_contains_point ...passed
  Test: test_rect_tree_intersects_tree ...passed
  Test: test_lwgeom_segmentize2d ...NOTICE: ptarray.c:448 - ptarray_segmentize2d: Too many segments required (1.000000e+101)
NOTICE: liblwgeom code interrupted
NOTICE: liblwgeom code interrupted
NOTICE: liblwgeom code interrupted
NOTICE: liblwgeom code interrupted
passed
  Test: test_lwgeom_locate_along ...passed
  Test: test_lw_dist2d_pt_arc ...passed
  Test: test_lw_dist2d_seg_arc ...passed
  Test: test_lw_dist2d_arc_arc ...passed
  Test: test_lw_arc_length ...passed
  Test: test_lw_dist2d_pt_ptarrayarc ...passed
  Test: test_lw_dist2d_ptarray_ptarrayarc ...passed
  Test: test_lwgeom_tcpa ...passed
  Test: test_lwgeom_is_trajectory ...NOTICE: Geometry is not a LINESTRING
NOTICE: Line does not have M dimension
NOTICE: Measure of vertex 1 (1) not bigger than measure of vertex 0 (1)
NOTICE: Measure of vertex 1 (0) not bigger than measure of vertex 0 (1)
NOTICE: Measure of vertex 2 (2) not bigger than measure of vertex 1 (3)
passed
  Test: test_rect_tree_distance_tree ...passed
Suite: effectivearea
  Test: do_test_lwgeom_effectivearea_lines ...passed
  Test: do_test_lwgeom_effectivearea_polys ...passed
Suite: chaikin
  Test: do_test_chaikin_lines ...passed
  Test: do_test_chaikin_polygons ...passed
Suite: filterm
  Test: do_test_filterm_single_geometries ...passed
  Test: do_test_filterm_collections ...passed
Suite: minimum_bounding_circle
  Test: basic_test ...passed
  Test: test_empty ...passed
Suite: miscellaneous
  Test: test_misc_force_2d ...passed
  Test: test_misc_simplify ...passed
  Test: test_misc_count_vertices ...passed
  Test: test_misc_area ...passed
  Test: test_misc_wkb ...passed
  Test: test_grid ...passed
  Test: test_grid_in_place ...passed
  Test: test_clone ...passed
  Test: test_lwmpoint_from_lwgeom ...passed
Suite: noding
  Test: test_lwgeom_node ...passed
Suite: encoded_polyline_output
  Test: out_encoded_polyline_test_geoms ...passed
  Test: out_encoded_polyline_test_srid ...passed
  Test: out_encoded_polyline_test_precision ...passed
Suite: geojson_output
  Test: out_geojson_test_precision ...passed
  Test: out_geojson_test_dims ...passed
  Test: out_geojson_test_srid ...passed
  Test: out_geojson_test_bbox ...passed
  Test: out_geojson_test_geoms ...passed
Suite: gml_output
  Test: out_gml_test_precision ...passed
  Test: out_gml_test_srid ...passed
  Test: out_gml_test_dims ...passed
  Test: out_gml_test_geodetic ...passed
  Test: out_gml_test_geoms ...passed
  Test: out_gml_test_geoms_prefix ...passed
  Test: out_gml_test_geoms_nodims ...passed
  Test: out_gml2_extent ...passed
  Test: out_gml3_extent ...passed
Suite: kml_output
  Test: out_kml_test_precision ...passed
  Test: out_kml_test_dims ...passed
  Test: out_kml_test_geoms ...passed
  Test: out_kml_test_prefix ...passed
Suite: svg_output
  Test: out_svg_test_precision ...passed
  Test: out_svg_test_dims ...passed
  Test: out_svg_test_relative ...passed
  Test: out_svg_test_geoms ...passed
  Test: out_svg_test_srid ...passed
Suite: x3d_output
  Test: out_x3d3_test_precision ...passed
  Test: out_x3d3_test_geoms ...passed
  Test: out_x3d3_test_option ...passed
Suite: ptarray
  Test: test_ptarray_append_point ...passed
  Test: test_ptarray_append_ptarray ...passed
  Test: test_ptarray_locate_point ...passed
  Test: test_ptarray_isccw ...passed
  Test: test_ptarray_signed_area ...passed
  Test: test_ptarray_insert_point ...passed
  Test: test_ptarray_contains_point ...passed
  Test: test_ptarrayarc_contains_point ...passed
  Test: test_ptarray_scale ...passed
Suite: printing
  Test: test_lwprint_default_format ...passed
  Test: test_lwprint_format_orders ...passed
  Test: test_lwprint_optional_format ...passed
  Test: test_lwprint_oddball_formats ...passed
  Test: test_lwprint_bad_formats ...passed
Suite: sfcgal
  Test: test_sfcgal_noop ...passed
Suite: split
  Test: test_lwline_split_by_point_to ...passed
  Test: test_lwgeom_split ...passed
Suite: stringbuffer
  Test: test_stringbuffer_append ...passed
  Test: test_stringbuffer_aprintf ...passed
Suite: surface
  Test: triangle_parse ...passed
  Test: tin_parse ...passed
  Test: polyhedralsurface_parse ...passed
  Test: surface_dimension ...passed
Suite: spatial_trees
  Test: test_tree_circ_create ...passed
  Test: test_tree_circ_pip ...passed
  Test: test_tree_circ_pip2 ...passed
  Test: test_tree_circ_distance ...passed
  Test: test_tree_circ_distance_threshold ...passed
Suite: triangulate
  Test: test_lwgeom_delaunay_triangulation ...passed
  Test: test_lwgeom_voronoi_diagram ...passed
  Test: test_lwgeom_voronoi_diagram_expected_empty ...passed
  Test: test_lwgeom_voronoi_diagram_custom_envelope ...passed
Suite: twkb_output
  Test: test_twkb_out_point ...passed
  Test: test_twkb_out_linestring ...passed
  Test: test_twkb_out_polygon ...passed
  Test: test_twkb_out_multipoint ...passed
  Test: test_twkb_out_multilinestring ...passed
  Test: test_twkb_out_multipolygon ...passed
  Test: test_twkb_out_collection ...passed
  Test: test_twkb_out_idlist ...passed
Suite: varint
  Test: test_zigzag ...passed
  Test: test_varint ...passed
  Test: test_varint_roundtrip ...passed
Suite: wkb_input
  Test: test_wkb_in_point ...passed
  Test: test_wkb_in_linestring ...passed
  Test: test_wkb_in_polygon ...passed
  Test: test_wkb_in_multipoint ...passed
  Test: test_wkb_in_multilinestring ...passed
  Test: test_wkb_in_multipolygon ...passed
  Test: test_wkb_in_collection ...passed
  Test: test_wkb_in_circularstring ...passed
  Test: test_wkb_in_compoundcurve ...passed
  Test: test_wkb_in_curvpolygon ...passed
  Test: test_wkb_in_multicurve ...passed
  Test: test_wkb_in_multisurface ...passed
  Test: test_wkb_in_malformed ...passed
Suite: wkb_output
  Test: test_wkb_out_point ...passed
  Test: test_wkb_out_linestring ...passed
  Test: test_wkb_out_polygon ...passed
  Test: test_wkb_out_multipoint ...passed
  Test: test_wkb_out_multilinestring ...passed
  Test: test_wkb_out_multipolygon ...passed
  Test: test_wkb_out_collection ...passed
  Test: test_wkb_out_circularstring ...passed
  Test: test_wkb_out_compoundcurve ...passed
  Test: test_wkb_out_curvpolygon ...passed
  Test: test_wkb_out_multicurve ...passed
  Test: test_wkb_out_multisurface ...passed
  Test: test_wkb_out_polyhedralsurface ...passed
Suite: wkt_input
  Test: test_wkt_in_point ...passed
  Test: test_wkt_in_linestring ...passed
  Test: test_wkt_in_polygon ...passed
  Test: test_wkt_in_multipoint ...passed
  Test: test_wkt_in_multilinestring ...passed
  Test: test_wkt_in_multipolygon ...passed
  Test: test_wkt_in_collection ...passed
  Test: test_wkt_in_circularstring ...passed
  Test: test_wkt_in_compoundcurve ...passed
  Test: test_wkt_in_curvpolygon ...passed
  Test: test_wkt_in_multicurve ...passed
  Test: test_wkt_in_multisurface ...passed
  Test: test_wkt_in_tin ...passed
  Test: test_wkt_in_polyhedralsurface ...passed
  Test: test_wkt_in_errlocation ...passed
  Test: test_wkt_double ...passed
Suite: wkt_output
  Test: test_wkt_out_point ...passed
  Test: test_wkt_out_linestring ...passed
  Test: test_wkt_out_polygon ...passed
  Test: test_wkt_out_multipoint ...passed
  Test: test_wkt_out_multilinestring ...passed
  Test: test_wkt_out_multipolygon ...passed
  Test: test_wkt_out_collection ...passed
  Test: test_wkt_out_circularstring ...passed
  Test: test_wkt_out_compoundcurve ...passed
  Test: test_wkt_out_curvpolygon ...passed
  Test: test_wkt_out_multicurve ...passed
  Test: test_wkt_out_multisurface ...passed
Suite: wrapx
  Test: test_lwgeom_wrapx ...passed

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites     44     44    n/a      0        0
               tests    300    300    300      0        0
             asserts   4215   4215   4215      0      n/a
Elapsed time =    0.229 seconds

PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit
  Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02
  scripts 3.0.0dev r17081
  GEOS: 3.7.0-CAPI-1.11.0 673b9939
  PROJ: Rel. 5.2.0, September 15th, 2018

Running tests

 ../loader/Point .............. ok
 ../loader/PointM .............. ok
 ../loader/PointZ .............. ok
 ../loader/MultiPoint .............. ok
 ../loader/MultiPointM .............. ok
 ../loader/MultiPointZ .............. ok
 ../loader/Arc .............. ok
 ../loader/ArcM .............. ok
 ../loader/ArcZ .............. ok
 ../loader/Polygon .............. ok
 ../loader/PolygonM .............. ok
 ../loader/PolygonZ .............. ok
 ../loader/TSTPolygon ......... ok
 ../loader/TSIPolygon ......... ok
 ../loader/TSTIPolygon ......... ok
 ../loader/PointWithSchema ..... ok
 ../loader/NoTransPoint ......... ok
 ../loader/NotReallyMultiPoint ......... ok
 ../loader/MultiToSinglePoint ......... ok
 ../loader/ReprojectPts ........ ok
 ../loader/ReprojectPtsGeog ........ ok
 ../loader/Latin1 .... ok
 ../loader/Latin1-implicit .... ok
 ../loader/mfile .... ok
 ../dumper/literalsrid ....... ok
 ../dumper/realtable ....... ok
 affine .. ok
 bestsrid .. ok
 binary .. ok
 boundary .. ok
 chaikin .. ok
 filterm .. ok
 cluster .. ok
 concave_hull .. ok
 concave_hull_hard .. ok
 ctors .. ok
 curvetoline .. ok
 dump .. ok
 dumppoints .. ok
 empty .. ok
 estimatedextent .. ok
 forcecurve .. ok
 geography .. ok
 geometric_median .. ok
 in_geohash .. ok
 in_gml .. ok
 in_kml .. ok
 in_encodedpolyline .. ok
 iscollection .. ok
 legacy .. ok
 long_xact .. ok
 lwgeom_regress .. ok
 measures .. ok
 minimum_bounding_circle .. ok
 normalize .. ok
 operators .. ok
 orientation .. ok
 out_geometry .. ok
 out_geography .. ok
 polygonize .. ok
 polyhedralsurface .. ok
 postgis_type_name .. ok
 quantize_coordinates .. ok
 regress .. ok
 regress_bdpoly .. ok
 regress_gist_index_nd .. ok
 regress_index .. ok
 regress_index_nulls .. ok
 regress_management .. ok
 regress_selectivity .. ok
 regress_lrs .. ok
 regress_ogc .. ok
 regress_ogc_cover .. ok
 regress_ogc_prep .. ok
 regress_proj .. ok
 relate .. ok
 remove_repeated_points .. ok
 removepoint .. ok
 reverse .. ok
 setpoint .. ok
 simplify .. ok
 simplifyvw .. ok
 size .. ok
 snaptogrid .. ok
 split .. ok
 sql-mm-serialize .. ok
 sql-mm-circularstring .. ok
 sql-mm-compoundcurve .. ok
 sql-mm-curvepoly .. ok
 sql-mm-general .. ok
 sql-mm-multicurve .. ok
 sql-mm-multisurface .. ok
 swapordinates .. ok
 summary .. ok
 temporal .. ok
 tickets .. ok
 twkb .. ok
 typmod .. ok
 wkb .. ok
 wkt .. ok
 wmsservers .. ok
 knn_recheck .. ok
 temporal_knn .. ok
 hausdorff .. ok
 regress_buffer_params .. ok
 frechet .. ok
 offsetcurve .. ok
 relatematch .. ok
 isvaliddetail .. ok
 sharedpaths .. ok
 snap .. ok
 node .. ok
 unaryunion .. ok
 clean .. ok
 relate_bnr .. ok
 delaunaytriangles .. ok
 clipbybox2d .. ok
 subdivide .. ok
 voronoi .. ok
 minimum_clearance .. ok
 oriented_envelope .. ok
 in_geojson .. ok
 regress_brin_index .. ok
 regress_brin_index_3d .. ok
 regress_brin_index_geography .. ok
 regress_spgist_index_2d .. ok
 regress_spgist_index_3d .. ok
 regress_spgist_index_nd .. ok
 mvt .. ok
 geobuf .. ok
 mvt_jsonb .. ok
 uninstall .. ok (4643)

Run tests: 134
Failed: 0


-- if you build with SFCGAL

PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit
  Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02
  scripts 3.0.0dev r17081
  GEOS: 3.7.0-CAPI-1.11.0 673b9939
  PROJ: Rel. 5.2.0, September 15th, 2018
  SFCGAL: 1.3.2

Running tests

 regress_sfcgal .. ok
 empty .. ok
 geography .. ok
 legacy .. ok
 measures .. ok
 regress_ogc_prep .. ok
 regress_ogc .. ok
 regress .. ok
 tickets .. ok
 concave_hull .. ok
 wmsservers .. ok
 approximatemedialaxis .. ok
 uninstall .. ok (4643)

Run tests: 13
Failed: 0

-- if you built with raster support



     CUnit - A unit testing framework for C - Version 2.1-2
     http://cunit.sourceforge.net/


Suite: pixtype
  Test: test_pixtype_size ...passed
  Test: test_pixtype_alignment ...passed
  Test: test_pixtype_name ...passed
  Test: test_pixtype_index_from_name ...passed
  Test: test_pixtype_get_min_value ...passed
  Test: test_pixtype_compare_clamped_values ...passed
Suite: raster_basics
  Test: test_raster_new ...passed
  Test: test_raster_empty ...passed
  Test: test_raster_metadata ...passed
  Test: test_raster_clone ...passed
  Test: test_raster_from_band ...passed
  Test: test_raster_replace_band ...passed
Suite: band_basics
  Test: test_band_metadata ...passed
  Test: test_band_pixtype_1BB ...passed
  Test: test_band_pixtype_2BUI ...passed
  Test: test_band_pixtype_4BUI ...passed
  Test: test_band_pixtype_8BUI ...passed
  Test: test_band_pixtype_8BSI ...passed
  Test: test_band_pixtype_16BUI ...passed
  Test: test_band_pixtype_16BSI ...passed
  Test: test_band_pixtype_32BUI ...passed
  Test: test_band_pixtype_32BSI ...passed
  Test: test_band_pixtype_32BF ...passed
  Test: test_band_pixtype_64BF ...passed
  Test: test_band_get_pixel_line ...WARNING: Limiting returning number values to 1
WARNING: Attempting to get pixel values with out of range raster coordinates: (5, 5)
passed
  Test: test_band_new_offline_from_path ...passed
Suite: raster_wkb
  Test: test_raster_wkb ...SRID value -1 converted to the officially unknown SRID value 0
SRID value -1 converted to the officially unknown SRID value 0
SRID value -1 converted to the officially unknown SRID value 0
SRID value -1 converted to the officially unknown SRID value 0
SRID value -1 converted to the officially unknown SRID value 0
SRID value -1 converted to the officially unknown SRID value 0
passed
Suite: gdal
  Test: test_gdal_configured ...passed
  Test: test_gdal_drivers ...passed
  Test: test_gdal_rasterize ...passed
  Test: test_gdal_polygonize ...passed
  Test: test_raster_to_gdal ...Warning 6: PNG driver doesn't support data type Float64. Only eight bit (Byte) and sixteen bit (UInt16) bands supported. Defaulting to Byte

passed
  Test: test_gdal_to_raster ...passed
  Test: test_gdal_warp ...passed
Suite: raster_geometry
  Test: test_raster_envelope ...passed
  Test: test_raster_envelope_geom ...passed
  Test: test_raster_convex_hull ...passed
  Test: test_raster_surface ...INFO: Ring Self-intersection at or near point 2 -2
INFO: Ring Self-intersection at or near point 3 -3
passed
  Test: test_raster_perimeter ...passed
  Test: test_raster_pixel_as_polygon ...passed
Suite: raster_misc
  Test: test_raster_cell_to_geopoint ...passed
  Test: test_raster_geopoint_to_cell ...passed
  Test: test_raster_from_two_rasters ...passed
  Test: test_raster_compute_skewed_raster ...passed
Suite: band_stats
  Test: test_band_stats ...passed
  Test: test_band_value_count ...passed
Suite: band_misc
  Test: test_band_get_nearest_pixel ...passed
  Test: test_band_get_pixel_of_value ...passed
  Test: test_pixel_set_to_array ...passed
Suite: mapalgebra
  Test: test_raster_iterator ...passed
  Test: test_band_reclass ...passed
  Test: test_raster_colormap ...passed
Suite: spatial_relationship
  Test: test_raster_geos_overlaps ...passed
  Test: test_raster_geos_touches ...passed
  Test: test_raster_geos_contains ...passed
  Test: test_raster_geos_contains_properly ...passed
  Test: test_raster_geos_covers ...passed
  Test: test_raster_geos_covered_by ...passed
  Test: test_raster_within_distance ...passed
  Test: test_raster_fully_within_distance ...passed
  Test: test_raster_intersects ...passed
  Test: test_raster_same_alignment ...passed
Suite: misc
  Test: test_rgb_to_hsv ...passed
  Test: test_hsv_to_rgb ...passed
  Test: test_util_gdal_open ...passed

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites     12     12    n/a      0        0
               tests     65     65     65      0        0
             asserts  45896  45896  45896      0      n/a

Elapsed time =    0.499 seconds

Loading Raster into 'postgis_reg'
PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit
  Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02
  scripts 3.0.0dev r17081
  raster scripts 3.0.0dev r17081
  GEOS: 3.7.0-CAPI-1.11.0 673b9939
  PROJ: Rel. 5.2.0, September 15th, 2018
  GDAL: GDAL 2.3.1, released 2018/06/22

Running tests

 check_gdal .. ok
 load_outdb ... ok
 check_raster_columns .. ok
 check_raster_overviews .. ok
 rt_io .. ok
 rt_bytea .. ok
 rt_wkb .. ok
 box3d .. ok
 rt_addband .. ok
 rt_band .. ok
 rt_tile .. ok
 rt_dimensions .. ok
 rt_scale .. ok
 rt_pixelsize .. ok
 rt_upperleft .. ok
 rt_rotation .. ok
 rt_georeference .. ok
 rt_set_properties .. ok
 rt_isempty .. ok
 rt_hasnoband .. ok
 rt_metadata .. ok
 rt_rastertoworldcoord .. ok
 rt_worldtorastercoord .. ok
 rt_convexhull .. ok
 rt_envelope .. ok
 rt_band_properties .. ok
 rt_set_band_properties .. ok
 rt_pixelaspolygons .. ok
 rt_pixelaspoints .. ok
 rt_pixelascentroids .. ok
 rt_setvalues_array .. ok
 rt_summarystats .. ok
 rt_count .. ok
 rt_histogram .. ok
 rt_quantile .. ok
 rt_valuecount .. ok
 rt_valuepercent .. ok
 rt_bandmetadata .. ok
 rt_pixelvalue .. ok
 rt_neighborhood .. ok
 rt_nearestvalue .. ok
 rt_pixelofvalue .. ok
 rt_polygon .. ok
 rt_setbandpath .. ok
 rt_utility .. ok
 rt_fromgdalraster .. ok
 rt_asgdalraster .. ok
 rt_astiff .. ok
 rt_asjpeg .. ok
 rt_aspng .. ok
 rt_reclass .. ok
 rt_gdalwarp .. ok
 rt_asraster .. ok
 rt_dumpvalues .. ok
 rt_makeemptycoverage .. ok
 rt_createoverview .. ok
 rt_mapalgebraexpr .. ok
 rt_mapalgebrafct .. ok
 rt_mapalgebraexpr_2raster .. ok
 rt_mapalgebrafct_2raster .. ok
 rt_mapalgebrafctngb .. ok
 rt_mapalgebrafctngb_userfunc .. ok
 rt_intersection .. ok
 rt_clip .. ok
 rt_mapalgebra .. ok
 rt_mapalgebra_expr .. ok
 rt_mapalgebra_mask .. ok
 rt_union .. ok
 rt_invdistweight4ma .. ok
 rt_4ma .. ok
 rt_setvalues_geomval .. ok
 rt_elevation_functions .. ok
 rt_colormap .. ok
 rt_grayscale .. ok
 rt_gist_relationships .. ok
 rt_intersects .. ok
 rt_samealignment .. ok
 rt_geos_relationships .. ok
 rt_iscoveragetile .. ok
 bug_test_car5 .. ok
 permitted_gdal_drivers .. ok
 tickets .. ok
 loader/Basic .. ok
 loader/Projected ... ok
 loader/BasicCopy .. ok
 loader/BasicFilename .. ok
 loader/BasicOutDB .. ok
 loader/Tiled10x10 .. ok
 loader/Tiled10x10Copy .. ok
 loader/Tiled8x8 .. ok
 clean .. ok
 uninstall .. ok (4643)

Run tests: 101
Failed: 0

-- topology regress
PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit
  Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02
  scripts 3.0.0dev r17081
  GEOS: 3.7.0-CAPI-1.11.0 673b9939
  PROJ: Rel. 5.2.0, September 15th, 2018

Running tests

 regress/legacy_validate .. ok
 regress/legacy_predicate .. ok
 regress/legacy_invalid .. ok
 regress/sqlmm .. ok
 regress/legacy_query .. ok
 regress/addnode .. ok
 regress/addedge .. ok
 regress/addface .. ok
 regress/addface2.5d .. ok
 regress/addtopogeometrycolumn .. ok
 regress/polygonize .. ok
 regress/st_addisoedge .. ok
 regress/st_addisonode .. ok
 regress/st_addedgemodface .. ok
 regress/st_addedgenewfaces .. ok
 regress/st_changeedgegeom .. ok
 regress/st_createtopogeo .. ok
 regress/st_getfacegeometry .. ok
 regress/st_getfaceedges .. ok
 regress/st_modedgeheal .. ok
 regress/st_modedgesplit .. ok
 regress/st_newedgeheal .. ok
 regress/st_newedgessplit .. ok
 regress/st_remedgenewface .. ok
 regress/st_remedgemodface .. ok
 regress/st_simplify .. ok
 regress/topoelement .. ok
 regress/topoelementarray_agg .. ok
 regress/topogeo_addlinestring .. ok
 regress/topogeo_addpoint .. ok
 regress/topogeo_addpolygon .. ok
 regress/topogeom_edit .. ok
 regress/topogeometry_type .. ok
 regress/topojson .. ok
 regress/topologysummary .. ok
 regress/topo2.5d .. ok
 regress/totopogeom .. ok
 regress/droptopology .. ok
 regress/droptopogeometrycolumn .. ok
 regress/copytopology .. ok
 regress/createtopogeom .. ok
 regress/createtopology .. ok
 regress/gml .. ok
 regress/getnodebypoint .. ok
 regress/getedgebypoint .. ok
 regress/getfacebypoint .. ok
 regress/getringedges .. ok
 regress/gettopogeomelements .. ok
 regress/layertrigger .. ok
 regress/validatetopology .. ok
 uninstall .. ok (4643)

Run tests: 51
Failed: 0

-- if you built --with-gui, you should see this too

     CUnit - A unit testing framework for C - Version 2.1-2
     http://cunit.sourceforge.net/


Suite: Shapefile Loader File shp2pgsql Test
  Test: test_ShpLoaderCreate() ...passed
  Test: test_ShpLoaderDestroy() ...passed
Suite: Shapefile Loader File pgsql2shp Test
  Test: test_ShpDumperCreate() ...passed
  Test: test_ShpDumperDestroy() ...passed

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites      2      2    n/a      0        0
               tests      4      4      4      0        0
             asserts      4      4      4      0      n/a

Die Erweiterungen postgis_tiger_geocoder und address_standardizer unterstützen zurzeit nur die standardmäßige Installationsüberprüfung von PostgreSQL. Um diese zu überprüfen siehe unterhalb. Anmerkung: "make install" ist nicht notwendig, wenn Sie bereits ein "make install" im Root des Ordners mit dem PostGIS Quellcode durchgeführt haben.

Für den address_standardizer:

cd extensions/address_standardizer
make install
make installcheck
          

Die Ausgabe sollte folgendermaßen aussehen:

============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test test-init-extensions     ... ok
test test-parseaddress        ... ok
test test-standardize_address_1 ... ok
test test-standardize_address_2 ... ok

=====================
 All 4 tests passed.
=====================

Für den Tiger Geokodierer müssen Sie die Erweiterungen "postgis" und "fuzzystrmatch" in Ihrer PostgreSQL Instanz haben. Die Überprüfungen des "address_standardizer" laufen ebenfalls an, wenn Sie postgis mit "address_standardizer" Unterstützung kompiliert haben:

cd extensions/postgis_tiger_geocoder
make install
make installcheck
          

Die Ausgabe sollte folgendermaßen aussehen:

============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== installing fuzzystrmatch               ==============
CREATE EXTENSION
============== installing postgis                     ==============
CREATE EXTENSION
============== installing postgis_tiger_geocoder      ==============
CREATE EXTENSION
============== installing address_standardizer        ==============
CREATE EXTENSION
============== running regression test queries        ==============
test test-normalize_address   ... ok
test test-pagc_normalize_address ... ok

=====================
All 2 tests passed.
=====================

2.5.5. Installation

Um PostGIS zu installieren geben Sie bitte folgendes ein

make install

Dies kopiert die Installationsdateien von PostGIS in das entsprechende Unterverzeichnis, welches durch den Konfigurationsparameter --prefix bestimmt wird. Insbesondere:

  • Die Binärdateien vom Loader und Dumper sind unter [prefix]/bin installiert.

  • Die SQL-Dateien, wie postgis.sql sind unter [prefix]/share/contrib installiert.

  • Die PostGIS Bibliotheken sind unter [prefix]/lib installiert.

Falls Sie zuvor den Befehl make comments ausgeführt haben, um die Dateien postgis_comments.sql und raster_comments.sql anzulegen, können Sie die SQL-Dateien folgendermaßen installieren:

make comments-install

[Note]

postgis_comments.sql, raster_comments.sql und topology_comments.sql wurden vom klassischen Build- und Installationsprozess getrennt, da diese mit xsltproc eine zusätzliche Abhängigkeit haben.

2.6. Eine Geodatenbank mit EXTENSIONS anlegen

Wenn Sie PostgreSQL 9.1+ verwenden und das Extensions/PostGIS-Modul installiert haben, können Sie Geodatenbanken auf neue Art und Weise erstellen.

createdb [yourdatabase]

Die Core-Extension installiert PostGIS-Geometrie, -Geographie, die spatial_ref_sys Tabelle und alle Funktionen und Kommentare mit einem einfachen

CREATE EXTENSION postgis;

Befehl.

psql -d [yourdatabase] -c "CREATE EXTENSION postgis;"

Die Raster-Funktionalität ist in einer eigenen Extension paketiert und kann mit folgendem Befehl installiert werden:

psql -d [ihredatenbank] -c "CREATE EXTENSION postgis_raster;"

Die topologische Funktionalität ist in einer eigenen Extension paketiert und kann mit folgendem Befehl installiert werden:

psql -d [yourdatabase] -c "CREATE EXTENSION postgis_topology;"

Falls Sie die Sicherung einer Vorgängerversion in die neue Datenbank einspielen wollen, führen Sie bitte folgendes aus:

psql -d [yourdatabase] -f legacy.sql

[Note]

Wenn Sie veraltete Funktionen benötigen, müssen Sie bei jedem geringfügigen Upgrade von PostGIS auf eine neue Version das Skript legacy.sql neu installieren. Wenn Sie z.B. von 2.4.3 auf 2.5.0 aktualisieren, dann müssen Sie das legacy.sql welches mit 2.5.0 paketiert ist neu installieren, da einige Funktionen auf die Bibliothek referenzieren und diese mit der "Minor Version" bezeichnet ist.

Um die veralteten Funktionen loszuwerden, können Sie anschließend an die Wiederherstellung und Aufräumarbeiten uninstall_legacy.sql ausführen.

2.7. Ersellung einer Geodatenbank ohne Extensions

[Note]

Dies wird grundsätzlich nur benötigt, wenn PostGIS nicht in im PostgreSQL-Extensionverzeichnis installiert werden kann oder soll (z.B. beim Testen, in der Entwicklung oder in beschränken Umgebungen).

Der erste Schritt zur Erstellung einer PostGIS-Datenbank ist das Anlegen einer einfachen PostgreSQL Datenbank.

createdb [yourdatabase]

Viele der PostGIS Funktionen sind in der prozeduralen Sprache PL/pgSQL geschrieben. Daher ist der nächste Schritt zur Erstellung einer PostGIS Datenbank die Aktivierung von PL/pgSQL. Dies wird durch den unten angeführten Befehl erreicht. Ab PostgreSQL 8.4 ist PL/pgSQL üblicherweise bereits installiert.

createlang plpgsql [yourdatabase]

Nun erstellen Sie die Definitionen der PostGIS-Objekte und -Funktionen in Ihrer Datenbank, indem Sie die Definitionen mit der Datei postgis.sql laden (diese befindet sich in dem beim Konfigurationsschritt festgelegten Verzeichnis [prefix]/share/contrib).

psql -d [yourdatabase] -f postgis.sql

Für einen vollständigen Satz an EPSG Koordinatensystemen, können Sie die Definitionen auch über die Datei spatial_ref_sys.sql laden und die spatial_ref_sys Tabelle auf diese Weise befüllen. Diese Tabelle ermöglicht die Ausführung von ST_Transform() auf die Geometrien.

psql -d [yourdatabase] -f spatial_ref_sys.sql

Falls Sie Kommentare zu den PostGIS-Funktionen hinzufügen wollen, ist der letzte Schritt das Laden von postgis_comments.sql in Ihre Geodatenbank. Die Kommentare können mit dem einfachen Aufruf von \dd [function_name] in der psql Konsole angezeigt werden.

psql -d [yourdatabase] -f postgis_comments.sql

Installation der Rasterunterstützung

psql -d [yourdatabase] -f rtpostgis.sql

Die Installation der Kommentare zur Rasterunterstützung stellt eine schnelle Hilfe für jede Rasterfunktion bereit. Diese kann dann über psql, PgAdmin oder andere PostgreSQL Werkzeuge die Funktionskommentare anzeigen können, aufgerufen werden.

psql -d [yourdatabase] -f raster_comments.sql

Installation der Topologieunterstützung

psql -d [yourdatabase] -f topology/topology.sql

Die Installation der Kommentare zur Topologie-Unterstützung stellt eine schnelle Hilfe für jede topologische Funktion und jeden topologischen Datentyp bereit. Diese kann dann über psql, PgAdmin oder andere PostgreSQL Werkzeuge die Funktionskommentare anzeigen können, aufgerufen werden.

psql -d [yourdatabase] -f topology/topology_comments.sql

Falls Sie die Sicherung einer Vorgängerversion in die neue Datenbank einspielen wollen, führen Sie bitte folgendes aus:

psql -d [yourdatabase] -f legacy.sql

[Note]

Es gibt eine alternative legacy_minimal.sql, die Sie stattdessen ausführen können. Dies installiert das Minimum, das benötigt wird um Tabellen wiederherzustellen und um mit Anwendungen wie MapServer oder GeoServer zu arbeiten. Falls Sie Views haben, welche Dinge wie distance / length etc. nutzen, dann benötigen Sie das komplette legacy.sql

Um die veralteten Funktionen loszuwerden, können Sie anschließend an die Wiederherstellung und Aufräumarbeiten uninstall_legacy.sql ausführen.

2.8. Installation und Verwendung des Adressennormierers

Die Erweiterung address_standardizer musste als getrenntes Paket heruntergeladen werden. Ab PostGIS 2.2 ist es mitgebündelt. Für weitere Informationen zu dem address_standardizer, was er kann und wie man ihn für spezielle Bedürfnisse konfigurieren kann, siehe Chapter 12, Adressennormierer.

Dieser Adressennormierer kann in Verbindung mit der in PostGIS paketierten Erweiterung "tiger gecoder" als Ersatz für Normalize_Address verwendet werden. Um diesen als Ersatz zu nutzen, siehe Section 2.9.3, “Die Adressennormierer-Extension zusammen mit dem Tiger Geokodierer verwenden”. Sie können diesen auch als Baustein für Ihren eigenen Geokodierer verwenden oder für die Normierung von Adressen um diese leichter vergleichbar zu machen.

Der Adressennormierer benötigt PCRE, welches üblicherweise auf Nix-Systemen bereits installiert ist. Sie können die letzte Version aber auch von http://www.pcre.org herunterladen. Wenn PCRE während der Section 2.5.1, “Konfiguration” gefunden wird, dann wird die Erweiterung "address standardizer" automatisch kompiliert. Wenn Sie stattdessen eine benutzerdefinierte Installation von PCRE verwenden wollen, können Sie --with-pcredir=/path/to/pcre an "configure" übergeben, wobei /path/to/pcre der Root-Ordner Ihrer Verzeichnisse "include" und "lib" von PCRE ist.

Für Windows Benutzer ist ab PostGIS 2.1+ die Erweiterung "address_standardizer" bereits mitpaketiert. Somit besteht keine Notwendigkeit zu Kompilieren und es kann sofort der Schritt CREATE EXTENSION ausgeführt werden.

Sobald die Installation beendet ist, können Sie sich mit Ihrer Datenbank verbinden und folgenden SQL-Befehl ausführen:

CREATE EXTENSION address_standardizer;

Der folgende Test benötigt keine rules-, gaz- oder lex-Tabellen

SELECT num, street, city, state, zip
 FROM parse_address('1 Devonshire Place PH301, Boston, MA 02109');

Die Ausgabe sollte wie folgt sein:

num |         street         |  city  | state |  zip
-----+------------------------+--------+-------+-------
 1   | Devonshire Place PH301 | Boston | MA    | 02109

2.8.1. Installation von Regex::Assemble

Perl Regex:Assemble wird nicht länger für die Kompiation der Erweiterung "address_standardizer" benötigt, da die generierten Dateien jetzt Teil des Quellcodes sind. Wenn Sie allerdings usps-st-city-orig.txt oder usps-st-city-orig.txt usps-st-city-adds.tx editieren müssen, dann müssen Sie parseaddress-stcities.h neu kompilieren, wozu Regex:Assemble benötigt wird.

cpan Regexp::Assemble

oder wenn Sie auf einer Ubuntu / Debian Distribution arbeiten, müssen Sie möglicherweise folgendes ausführen:

sudo perl -MCPAN -e "install Regexp::Assemble"

2.9. Installation, Aktualisierung des Tiger Geokodierers und Daten laden

Extras wie den Tiger Geokodierer befinden sich möglicherweise nicht in Ihrer PostGIS Distribution. Wenn Sie die Erweiterung "Tiger Geokodierer" vermissen, oder eine neuere Version installieren wollen, dann können Sie die Dateien share/extension/postgis_tiger_geocoder.* aus den Paketen des Abschnitts Windows Unreleased Versions für Ihre Version von PostgreSQL verwenden. Obwohl diese Pakete für Windows sind, funktionieren die Dateien der Erweiterung "postgis_tiger_geocoder" mit jedem Betriebssystem, da die Erweiterung eine reine SQL/plpgsql Anwendung ist.

2.9.1. Aktivierung des Tiger Geokodierer in Ihrer PostGIS Datenbank: Verwendung von Extension

Falls Sie PostgreSQL 9.1+ und PostGIS 2.1+ verwenden, können Sie Vorteil aus dem Extension-Modell ziehen, um den Tiger Geokodierer zu installieren. Um dies zu tun:

  1. Besorgen Sie sich zuerst die Binärdateien für PostGIS 2.1+ oder kompilieren und installieren Sie diese wie üblich. Dies sollte alle notwendigen Extension-Dateien auch für den Tiger Geokodierer installieren.

  2. Verbinden Sie sich zu Ihrer Datenbank über psql, pgAdmin oder ein anderes Werkzeug und führen Sie die folgenden SQL Befehle aus. Wenn Sie in eine Datenbank installieren, die bereits PostGIS beinhaltet, dann müssen Sie den ersten Schritt nicht ausführen. Wenn Sie auch die Erweiterung fuzzystrmatch bereits installiert haben, so müssen Sie auch den zweiten Schritt nicht ausführen.

    CREATE EXTENSION postgis;
    CREATE EXTENSION fuzzystrmatch;
    CREATE EXTENSION postgis_tiger_geocoder;
    --Optional wenn Sir den regelbasierten Adressennormierer verwenden (pagc_normalize_address)
    CREATE EXTENSION address_standardizer;

    Wenn Sie bereits die postgis-tiger-geocoder Extension installiert haben und nur auf den letzten Stand updaten wollen:

    ALTER EXTENSION postgis UPDATE;
    ALTER EXTENSION postgis_tiger_geocoder UPDATE;

    Wenn benutzerdefinierte Einträge oder Änderungen an tiger.loader_platform oder tiger.loader_variables gemacht wurden, müssen diese aktualisiert werden.

  3. Um die Richtigkeit der Installation festzustellen, führen Sie bitte folgenden SQL-Befehl in Ihrer Datenbank aus:

    SELECT na.address, na.streetname,na.streettypeabbrev, na.zip
            FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;

    Dies sollte folgendes ausgeben:

    address | streetname | streettypeabbrev |  zip
    ---------+------------+------------------+-------
               1 | Devonshire | Pl               | 02109
  4. Erstellen Sie einen neuen Datensatz in der Tabelle tiger.loader_platform, welcher die Pfade zu Ihren ausführbaren Dateien und zum Server beinhaltet.

    Um zum Beispiel ein Profil mit dem Namen "debbie" anzulegen. welches der sh Konvention folgt, können Sie folgendes tun:

    INSERT INTO tiger.loader_platform(os, declare_sect, pgbin, wget, unzip_command, psql, path_sep,
                       loader, environ_set_command, county_process_command)
    SELECT 'debbie', declare_sect, pgbin, wget, unzip_command, psql, path_sep,
               loader, environ_set_command, county_process_command
      FROM tiger.loader_platform
      WHERE os = 'sh';

    Anschließend ändern Sie die Pfade in der Spalte declare_sect, so dass diese mit den Speicherpfaden von Debbie's "pg", "nzip", "shp2pgsql", "psql", etc. übereinstimmen.

    Wenn Sie die Tabelle loader_platform nicht editieren, so beinhaltet diese lediglich die üblichen Ortsangaben und Sie müssen das erzeugte Skript editieren, nachdem es erzeugt wurde.

  5. Ab PostGIS 2.4.1 wurde der Ladevorgang der "Zip code-5 digit tabulation area" zcta5 überarbeitet, um aktuelle zcta5 Daten zu laden und ist nun ein Teil von Loader_Generate_Nation_Script, falls aktiviert. Standardmäßig ausgeschaltet, da der Ladevorgang ziemlich viel Zeit benötigt (20 bis 60 Minuten), ziemlich viel Festplattenspeicher beansprucht wird und es nur selten verwendet wird.

    Folgendermaßen können Sie deise aktivieren:

    UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta510';

    Falls vorhanden kann die Funktion Geocode diese verwenden, wenn die zips durch einen Boundary Filter begrenzt sind. Die Funktion Reverse_Geocode verwendet dies wenn eine zurückgegebene Adresse keinen zip-Code enthält, was oft bei der inversen Geokodierung von Highways auftritt.

  6. Erstellen Sie einen Ordner mit der Bezeichnung gisdata im Root des Servers oder auf Ihrem lokalen PC, wenn Sie eine schnelle Netzwerkverbindung zu dem Server haben. In diesen Ordner werden die Dateien von Tiger heruntergeladen und aufbereitet. Wenn Sie den Ordner nicht im Root des Servers haben wollen, oder für die Staging-Umgebung in eine anderen Ordner wechseln wollen, dann können Sie das Attribut staging_fold in der Tabelle tiger.loader_variables editieren.

  7. Erstellen Sie einen Ordner "temp" in dem Ordner gisdata oder wo immer Sie staging_fold haben wollen. Dies wird der Ordner, in dem der Loader die heruntergeladenen Tigerdaten extrahiert.

  8. Anschließend führen Sie die SQL Funktion Loader_Generate_Nation_Script aus, um sicherzustellen dass die Bezeichnung Ihres benutzerdefinierten Profils verwendet wird und kopieren das Skript in eine .sh oder .bat Datei. Um zum Beispiel das Skript zum Laden einer Nation zu erzeugen:

    psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA 
    > /gisdata/nation_script_load.sh
  9. Führen Sie die erzeugten Skripts zum Laden der Nation auf der Befehlszeile aus.

    cd /gisdata
    sh nation_script_load.sh
  10. Nachdem Sie das "Nation" Skript ausgeführt haben, sollten sich drei Tabellen in dem Schema tiger_data befinden und mit Daten befüllt sein. Führen Sie die folgenden Abfragen in "psql" oder "pgAdmin" aus, um dies sicher zu stellen

    SELECT count(*) FROM tiger_data.county_all;
    count
    -------
      3233
    (1 row)
    SELECT count(*) FROM tiger_data.state_all;
    count
    -------
        56
    (1 row)
    
  11. Standardmäßig werden die Tabellen, welche bg, tract und tabblock entsprechen, nicht geladen. Diese Tabellen werden vom Geokodierer nicht verwendet, können aber für Bevölkerungsstatistiken genutzt werden. Wenn diese als Teil der Nation geladen werden sollen, können Sie die folgenden Anweisungen ausführen.

    UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN('tract', 'bg', 'tabblock');

    Alternativ können Sie diese Tabellen nach dem Laden der Länderdaten importieren, indem Sie das Loader_Generate_Census_Script verwenden

  12. Für jeden Staat, für den Sie Daten laden wollen, müssen Sie ein Skript Loader_Generate_Script erstellen.

    [Warning]

    Erstellen Sie das Skript für die Bundesstaaten NICHT bevor die Daten zur Nation geladen wurden, da das Skript die Liste "county" verwendet, welche durch das "nation"-Skript geladen wird.

  13. psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA 
    > /gisdata/ma_load.sh
  14. Die vorher erzeugten, befehlszeilenorientierten Skripts ausführen.

    cd /gisdata
    sh ma_load.sh
  15. Nachdem Sie mit dem Laden der Daten fertig sind, ist es eine gute Idee ein ANALYZE auf die Tigertabellen auszuführen, um die Datenbankstatistik (inklusive vererbter Statistik) zu aktualisieren

    SELECT install_missing_indexes();
    vacuum (analyze, verbose) tiger.addr;
    vacuum (analyze, verbose) tiger.edges;
    vacuum (analyze, verbose) tiger.faces;
    vacuum (analyze, verbose) tiger.featnames;
    vacuum (analyze, verbose) tiger.place;
    vacuum (analyze, verbose) tiger.cousub;
    vacuum (analyze, verbose) tiger.county;
    vacuum (analyze, verbose) tiger.state;
    vacuum (analyze, verbose) tiger.zip_lookup_base;
    vacuum (analyze, verbose) tiger.zip_state;
    vacuum (analyze, verbose) tiger.zip_state_loc;

2.9.1.1. Umwandlung einer normalen Installation des Tiger-Geokodierers in das Extension Modell

Falls Sie den Tiger Geokodierer ohne Extension Modell installiert haben, können Sie wie folgt auf das Extension-Modell wechseln:

  1. Für ein Upgrade ohne Extension-Modell, folgen Sie bitte den Anweisungen unter Section 2.9.5, “Upgrade Ihrer Tiger Geokodierer Installation”.

  2. Verbinden Sie sich über "psql" mit Ihrer Datenbank und führen Sie folgenden Befehl aus:

    CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;

2.9.2. Den Tiger Geokodierer in der PostGIS Datenbank aktivieren: ohne die Verwendung von Extensions

Zuerst installieren Sie PostGIS entsprechend den vorherigen Anweisungen.

Wenn Sie keinen Ordner "extras" haben, können Sie http://download.osgeo.org/postgis/source/postgis-3.0.1.tar.gz herunterladen

tar xvfz postgis-3.0.1.tar.gz

cd postgis-3.0.1/extras/tiger_geocoder

Editieren Sie die Datei tiger_loader_2015.sql (oder die aktuellste Loader Datei die Sie finden, außer Sie wollen ein anderes Jahr laden) um die Pfade zu den ausführbaren Dateien, dem Server etc. richtigzustellen. Alternativ können Sie auch die Tabelle loader_platform nach der Installation editieren. Wenn Sie diese Datei oder die Tabelle loader_platform nicht editieren, dann enthält diese nur die üblichen Ortsangaben und Sie müssen das erzeugte Skript nachträglich bearbeiten, wenn Sie die SQL Funktionen Loader_Generate_Nation_Script und Loader_Generate_Script ausgeführt haben.

Wenn Sie den Tiger Geokodierer zum ersten Mal installieren, dann editierren Sie entweder das Skript create_geocode.bat auf Windows oder create_geocode.sh auf Linux/Unix/Mac OSX entsprechend Ihren spezifischen Einstellungen von PostgreSQL und führen das entsprechende Skript auf der Befehlszeile aus.

Überprüfen sie, ob Sie ein Schema tiger in Ihrer Datenbank haben und sich das Schema in dem "search_path" Ihrer Datenbank befindet. Falls nicht, können Sie das Schema mit folgendem Befehl hinzufügen:

ALTER DATABASE geocoder SET search_path=public, tiger;

Die Funktionalität zur Standardisierung von Adressen funktioniert mehr oder weniger auch ohne Daten, mit Ausnahme von komplizierten Adressen. Führen Sie diese Tests durch und überprüfen Sie, ob das Ergebnis ähnlich wie dieses aussieht:

SELECT pprint_addy(normalize_address('202 East Fremont Street, Las Vegas, Nevada 89101')) As pretty_address;
pretty_address
---------------------------------------
202 E Fremont St, Las Vegas, NV 89101
                        

2.9.3. Die Adressennormierer-Extension zusammen mit dem Tiger Geokodierer verwenden

Eine von vielen Beschwerden betrifft die Funktion Normalize_Address des Adressennormierers, die eine Adresse vor der Geokodierung vorbereitend standardisiert. Der Normierer ist bei weitem nicht perfekt und der Versuch seine Unvollkommenheit auszubessern nimmt viele Ressourcen in Anspruch. Daher haben wir ein anderes Projekt integriert, welches eine wesentlich bessere Funktionseinheit für den Adressennormierer besitzt. Um diesen neuen Adressennormierer zu nutzen, können Sie die Erweiterung so wie unter Section 2.8, “Installation und Verwendung des Adressennormierers” beschrieben kompilieren und als Extension in Ihrer Datenbank installieren.

Sobald Sie diese Extension in der gleichen Datenbank installieren, in der Sie auch postgis_tiger_geocoder installiert haben, dann können Sie Pagc_Normalize_Address anstatt Normalize_Address verwenden. Diese Erweiterung ist nicht auf Tiger beschränkt, wodurch sie auch mit anderen Datenquellen, wie internationalen Adressen, genutzt werden kann. Die Tiger Geokodierer Extension enthält eine eigenen Versionen von rules Tabelle (tiger.pagc_rules), gaz Tabelle (tiger.pagc_gaz) und lex Tabelle (tiger.pagc_lex). Diese können Sie hinzufügen und aktualisieren, um die Normierung an die eigenen Bedürfnisse anzupassen.

2.9.4. Tiger-Daten laden

Die Anweisungen zum Laden von Daten sind unter extras/tiger_geocoder/tiger_2011/README detailliert beschrieben. Hier sind nur die allgemeinen Schritte berücksichtigt.

Der Ladeprozess lädt Daten von der Census Webseite für die jeweiligen Nationsdateien und die angeforderten Bundesstaaten herunter, extrahiert die Dateien und lädt anschließlich jeden Bundesstaat in einen eigenen Satz von Bundesstaattabellen. Jede Bundesstaattabelle erbt von den Tabellen im Schema tiger, wodurch es ausreicht nur diese Tabellen abzufragen um auf alle Daten zugreifen zu können. Sie können auch jederzeit Bundesstaattabellen mit Drop_State_Tables_Generate_Script löschen, wenn Sie einen Bundesstaat neu laden müssen oder den Bundesstaat nicht mehr benötigen.

Um Daten laden zu können benötigen Sie folgende Werkzeuge:

  • Ein Werkzeug, um die Zip-Dateien der Census Webseite zu entpacken.

    Auf UNIX-ähnlichen Systemen: Das Programm unzip, das üblicherweise auf den meisten UNIX-ähnlichen Systemen bereits vorinstalliert ist.

    Auf Windows 7-zip, ein freies Werkzeug zum komprimieren/entkomprimieren, das Sie von http://www.7-zip.org/ herunterladen können.

  • Das shp2pgsql Kommandozeilenprogramm, welches standardmäßig mit PostGIS mitinstalliert wird.

  • wget, ein Download-Manager, der üblicherweise auf den meisten UNIX/Linux Systemen vorinstalliert ist.

    Für Windows können Sie vorkompilierte Binärdateien von http://gnuwin32.sourceforge.net/packages/wget.htm herunterladen

Wenn Sie von tiger_2010 her upgraden, müssen Sie zuerst das Skript Drop_Nation_Tables_Generate_Script generieren und ausführen. Bevor Sie irgendwelche Bundesstaatdaten laden, müssen Sie die nationsweiten Daten mit Loader_Generate_Nation_Script laden. Dies erstellt ein Skript zum Laden. Loader_Generate_Nation_Script ist ein einmaliger Schritt, der vor dem Upgrade (von 2010) und vor neuen Installationen aufsgeführt werden sollte.

Wie ein Skript zum Laden der Daten für Ihre Plattform und für die gewünschten Bundesstaaten generiert werden kann siehe Loader_Generate_Script. Sie können diese stückchenweise installieren. Sie müssen nicht alle benötigten Staaten auf einmal laden. Sie können sie laden wenn Sie diese benötigen.

Nachdem die gewünschten Bundesstaaten geladen wurden, führen Sie so wie unter Install_Missing_Indexes beschrieben

SELECT install_missing_indexes();

aus.

Um zu überprüfen, dass alles funktioniert wie es sollte, können Sie eine Geokodierung über eine Adresse Ihres Staates laufen lassen, indem Sie Geocode verwenden

2.9.5. Upgrade Ihrer Tiger Geokodierer Installation

Wenn Sie den Tiger Geokodierer der mit 2.0+ paketiert ist bereits installiert haben, können Sie die Funktionen jederzeit sogar mit einem vorläufigen Tarball aktualisieren, wenn Bugs fixiert wurden oder Sie es unbedingt benötigen. Dies funktioniert nur für einen Tiger Geokodierer, der nicht als Extension installiert wurde.

Wenn Sie keinen Ordner "extras" haben, können Sie http://download.osgeo.org/postgis/source/postgis-3.0.1.tar.gz herunterladen

tar xvfz postgis-3.0.1.tar.gz

cd postgis-3.0.1/extras/tiger_geocoder/tiger_2011

Finden Sie das Skript upgrade_geocoder.bat auf Windows, oder upgrade_geocoder.sh unter Linux/Unix/Mac OSX. Editieren Sie die Datei um die Berechtigungsnachweise für Ihre PostGIS Datenbank zu erhalten.

Wenn Sie von 2010 oder 2011 her upgraden, sollten Sie die Loader-Skriptzeile auskommentieren, um das neueste Skript zum Laden der Daten von 2012 zu erhalten.

Dann führen Sie das dazugehörige Skript von der Befehlszeile aus.

Anschließend löschen Sie alle "nation"-Tabellen und laden die Neuen. Erstellen Sie ein "drop"-Skript mit den unter Drop_Nation_Tables_Generate_Script beschriebenen SQL-Anweisungen

SELECT drop_nation_tables_generate_script();

Führen Sie die erstellten SQL "drop"-Anweisungen aus.

Die untere SELECT Anweisung erstellt ein Skript zum Laden eines Staates. Details dazu finden Sie unter Loader_Generate_Nation_Script.

Auf Windows:

SELECT loader_generate_nation_script('windows'); 

Auf Unix/Linux:

SELECT loader_generate_nation_script('sh');

Siehe Section 2.9.4, “Tiger-Daten laden” für Anleitungen wie das "generate"-Skript auszuführen ist. Dies muss nur einmal ausgeführt werden.

[Note]

Sie können eine Mischung aus Bundesstaattabellen von 2010/2011 haben und jeden Bundesstaat getrennt aktualisieren. Bevor Sie einen Bundesstaat auf 2011 aktualisieren, müssen Sie zuerst die Tabellen von 2010 für diesen Bundesstaat mit Drop_State_Tables_Generate_Script entfernen.

2.10. Erzeugung einer Geodatenbank mit einem Template

Einige Distributionen von PostGIS (insbesondere die Win32 Installers für PostGIS >= 1.1.5) laden die PostGIS Funktionen in eine template Datenbank mit der Bezeichnung template_postgis. Wenn die Datenbank template_postgis in Ihrer PostgreSQL Installation existiert, dann können Anwender und/oder Applikationen eine Geodatenbank mit einem einzigen Befehl erstellen. In beiden Fällen muss der Datenbank Benutzer das Recht zur Erstellung einer neuen Datenbank haben.

Von der Shell aus:

# createdb -T template_postgis my_spatial_db

Mit SQL:

postgres=# CREATE DATABASE my_spatial_db TEMPLATE=template_postgis

2.11. Upgrading

Das Upgrade einer bestehenden Geodatenbank kann trickreich sein, wenn der Ersatz oder die Einführung von neuen Objektdefinitionen in PostGIS nötig ist.

Unglücklicherweise können in einer produktiven Datenbank nicht alle Definitionen einfach ersetzt werden, weshalb ein dump/reload Prozess manchmal die bessere Wahl ist.

PostGIS bietet die Prozedur "SOFT UPGRADE" für "minor"- oder "bugfix" Releases und eine Prozedur "HARD UPGRADE" für die "major" Releases.

Bevor Sie versuchen PostGIS zu aktualisieren, sollten Sie eine Sicherung Ihrer Daten vornehmen. Wenn Sie die Flag -Fc von pg_dump verwenden, können Sie die Daten über ein HARD UPGRADE immer wieder herstellen.

2.11.1. Soft upgrade

Wenn Sie Ihre Datenbank mittels Extensions installiert haben, müssen Sie auch mit dem Extension Modell upgraden. Wenn Sie auf die alte Art mit dem SQL-Skript installiert haben, dann sollten Sie auch mit dem SQL-Skript upgraden. Beziehen Sie sich bitte auf das Richtige.

2.11.1.1. Soft Upgrade Pre 9.1+ oder ohne Extensions/Erweiterungen

Dieser Abschnitt bezieht sich lediglich auf die Installation von PostGIS ohne Extensions. Wenn Sie Extensions haben und ein Upgrade auf diese Weise versuchen, dann erhalten Sie Meldungen wie:

can't drop ... because postgis extension depends on it

HINWEIS: Wenn Sie von PostGIS 1. * zu PostGIS 2. * oder von PostGIS 2. * vor r7409 wechseln, können Sie diese Prozedur nicht verwenden, sondern müssen ein schweres Upgrade durchführen.

Nach der Kompilierung und Installation (make install) sollten Sie eine Reihe von *_upgrade.sql-Dateien in den Installationsordnern finden. Y Sie können sie alle auflisten mit:

ls `pg_config --sharedir`/contrib/postgis-3.0.1/*_upgrade.sql
                

Laden Sie sie alle nacheinander, beginnend mit postgis_upgrade.sql.

psql -f postgis_upgrade.sql -d your_spatial_database
                

Dieselbe Vorgangsweise kann auf die Erweiterungen "raster", "topology" und "sfcgal" angewendet werden. Die Dateien für das Upgrade heissen rtpostgis_upgrade.sql, topology_upgrade.sql und sfcgal_upgrade.sql. Wenn Sie diese benötigen:

psql -f rtpostgis_upgrade.sql -d your_spatial_database
psql -f topology_upgrade.sql -d your_spatial_database
psql -f sfcgal_upgrade.sql -d your_spatial_database
[Note]

Wenn Sie die Datei postgis_upgrade.sql für das Upgrade Ihrer spezifischen Version nicht finden können, dann verwenden Sie eine Version, die zu zu alt für ein SOFT UPGRADE ist und müssen ein HARD UPGRADE durchführen.

Die Funktion PostGIS_Full_Version sollte Sie mit der Meldung "procs need upgrade" darüber informieren, ob Sie diese Art von Upgrade durchführen müssen.

2.11.1.2. Soft Upgrade von PostGIS 9.1+ mittels EXTENSIONS

Wenn Sie PostGIS urspünglich mittels Extensions installiert haben, dan müssen Sie beim Upgrade ebenfalls Extensions verwenden. Ein minor Upgrade mit Extensions ist einigermaßen schmerzlos.

ALTER EXTENSION postgis UPDATE TO "3.0.1";
ALTER EXTENSION postgis_topology UPDATE TO "3.0.1";

Falls eine Fehlermeldung angezeigt wird, unternehemen Sie bitte etwas ähnliches wie:

No migration path defined for ... to 3.0.1

Dann müssen Sie ein Backup Ihrer Datenbank erstellen, eine neue so wie unter Section 2.6, “Eine Geodatenbank mit EXTENSIONS anlegen” beschrieben erstellen und das Backup in dieser neuen Datenbank wiederherstellen.

Falls Sie eine ähnliche Meldung wie folgt bekommen:

Version "3.0.1" of extension "postgis" is already installed

Dann ist alles bereits auf dem letzten Stand und Sie können das bedenkenlos ignorieren. SOFERN NICHT versucht wird, von einer Entwicklungsversion auf die nächste (welche keine neue Versionsnummer bekommt) upzugraden; In diesem Fall können Sie "next" an die Versionszeichenkette anhängen und das nächste Mal das Suffix "next" wieder entfernen:

ALTER EXTENSION postgis UPDATE TO "3.0.1next";
ALTER EXTENSION postgis_topology UPDATE TO "3.0.1next";
[Note]

Wenn Sie PostGIS ursprünglich ohne festgelegte Version installiert haben, dann können Sie die erneute Installation der PostGIS Erweiterungen - vor der Wiederherstellung - überspringen, da im Backup bereits CREATE EXTENSION postgis steht und so die neueste und letzte Version bei der Wiederherstellung aufgegriffen wird.

[Note]

Wenn Sie die PostGIS-Erweiterung von einer Version vor 3.0.0 aktualisieren, erhalten Sie eine unverpackte PostGIS Raster-Unterstützung. Sie können die Raster-Unterstützung mit folgendem Befehl neu packen:

    CREATE EXTENSION postgis_raster FROM unpackaged;
    

Danach, falls Sie es nicht brauchen, löschen Sie es mit:

DROP EXTENSION postgis_raster;
    

2.11.2. Hard upgrade

Unter einem HARD UPGRADE verstehen wir einen vollen Dump/Reload von PostGIS-Datenbanken. Sie benötigen ein HARD UPGRADE, wenn sich die interne Speicherung von PostGIS Objekten geändert hat, oder wenn ein SOFT UPGRADE nicht möglich ist. Der Anhang Release Notes zeigt für jede Version an, ob ein dump/reload (HARD UPGRADE) notwendig ist.

Der Prozess "Dump/Reload" wird von dem Skript "postgis_restore.pl" unterstützt, welches aufpasst dass alle Definitionen, die zu PostGIS gehören (inklusive der alten) beim Dump übersprungen werden. Dies ermöglicht es Ihnen, Ihre Schemata und Daten in einer Datenbank mit PostGIS Erweiterung wiederherzustellen, ohne dass Fehler aufgrund duplizierter Symbole oder überholter Objekte auftreten.

Zusätzliche Anweisungen für Windows Benutzer sind unter Windows Hard upgrade verfügbar.

Die Vorgehensweise ist wie folgt:

  1. Erzeugt einen "custom-format" Dump der Datenbank, die Sie upgraden wollen (nennen wir diese olddb), inklusive Binary Large Objects (-b) und ausführlich (-v). Kann auch vom "owner" der Datenbank durchgeführt werden; Administratorrechte des Superusers "postgres" sind nicht notwendig.

    pg_dump -h localhost -p 5432 -U postgres -Fc -b -v -f "/somepath/olddb.backup" olddb
  2. Eine neue Installation von PostGIS in einer neuen Datenbank erstellen; wir verweisen auf die Datenbank mit newdb. Anleitungen dazu finden Sie unter Section 2.7, “Ersellung einer Geodatenbank ohne Extensions” und Section 2.6, “Eine Geodatenbank mit EXTENSIONS anlegen”.

    Die Einträge der Tabelle "spatial_ref_sys", die sich in Ihrem Dump befinden werden wiederhergestellt; bestehende Einträge in "spatial_ref_sys" werden aber nicht überschrieben. Dies soll sicherstellen, dass Fehler die in dem offiziellen Satz behoben wurden, auch ordnungsgemäß an die wiederhergestellten Datenbanken weitergegeben werden. Wenn Sie aus irgendeinem Grund die Standardeinträge mit Ihren eigenen Einträgen überschreiben wollen, dann können Sie einfach die Datei "spatial_ref_sys.sql" beim Erstellen der neuen Datenbank nicht laden.

    Wenn Ihre Datenbank sehr veraltet ist, oder Sie seit langem überholte Funktionen in Ihren Views und Funktionen verwenden, kann es sein, dass Sie legacy.sql ausführen müssen. Tun Sie das bitte nur, wenn es unbedingt notwendig ist. Überlegen Sie, die Views und Funktionen vor dem Dump upzugraden, wenn möglich. Die überholten Funktionen können zu einem späteren Zeitpunkt mittels uninstall_legacy.sql entfernt werden.

  3. Stellt das Backup in der neuen Datenbank newdb mittels "postgis_restore.pl" wieder her. Falls unvorhergesehene Fehler auftreten, werden diese von psql über die Standardfehlerausgabe angezeigt. Heben Sie sich eine Log-Datei davon auf.

    perl utils/postgis_restore.pl "/somepath/olddb.backup" | psql -h localhost -p 5432 -U postgres newdb 2
    > errors.txt

In folgenden Fällen können Fehler auftreten:

  1. Einige Views oder Funktionen verwenden überholte PostGIS Objekte. Um dies zu beheben, können Sie versuchen das Skript legacy.sql vor dem Restore zu laden, oder Sie müssen eine Version von PostGIS wiederherstellen die diese Objekte noch aufweist, und nach der Portierung Ihres Codes die Migration erneut versuchen. Wenn die Methode mit legacy.sql funktioniert, dann sollten Sie Ihren Code so fixieren, dass keine überholten Funktionen mehr verwendet werden und diese anschließend mit uninstall_legacy.sql löschen.

  2. Einige benutzerdefinierte Datensätze in der Tabelle "spatial_ref_sys" in der Dumpdatei haben einen ungültige SRID Wert. Gültige Werte für SRID sind größer als 0 und kleiner als 999000. Werte zwischen 999000 und 999999 sind für den internen Gebrauch reserviert, während Werte > 999999 gar nicht verwendet werden können. Alle benutzerdefinierten Datensätze mit ungültiger SRID bleiben erhalten, wobei jene > 999999 in den reservierten Bereich verschoben werden. Die Tabelle "spatial_ref_sys" verliert allerdings einen Check-Constraint für die Überwachung dieser Unveränderlichen und möglicherweise den Primärschlüssel (wenn mehrere ungültige SRIDs auf den gleichen reservierten SRID Wert konvertiert werden).

    In order to fix this you should copy your custom SRS to a SRID with a valid value (maybe in the 910000..910999 range), convert all your tables to the new srid (see UpdateGeometrySRID), delete the invalid entry from spatial_ref_sys and re-construct the check(s) with:

    ALTER TABLE spatial_ref_sys ADD CONSTRAINT spatial_ref_sys_srid_check check (srid > 0 AND srid < 999000 );

    ALTER TABLE spatial_ref_sys ADD PRIMARY KEY(srid));

    If you are upgrading an old database containing french IGN cartography, you will have probably SRIDs out of range and you will see, when importing your database, issues like this :

     WARNING: SRID 310642222 converted to 999175 (in reserved zone)

    In this case, you can try following steps : first throw out completely the IGN from the sql which is resulting from postgis_restore.pl. So, after having run :

    perl utils/postgis_restore.pl "/somepath/olddb.backup" 
    > olddb.sql

    run this command :

    grep -v IGNF olddb.sql 
    > olddb-without-IGN.sql

    Create then your newdb, activate the required Postgis extensions, and insert properly the french system IGN with : this script After these operations, import your data :

    psql -h localhost -p 5432 -U postgres -d newdb -f olddb-without-IGN.sql  2
    > errors.txt

2.12. Übliche Probleme bei der Installation

Falls Ihre Installation/Upgrade nicht so verläuft wie erwartet, gibt es eine ganze Reihe von Dingen zu überprüfen.

  1. Überprüfen Sie, ob Sie PostgreSQL 9.5 oder neuer installiert haben und dass die Version des PostgreSQL Quellcodes, gegen den Sie kompilieren, mit der Version der laufenden PostgreSQL Datenbank übereinstimmt. Ein Wirrwarr kann dann entstehen, wenn die Linux Distribution bereits PostgreSQL installiert hat, oder wenn Sie PostgreSQL in einem anderen Zusammenhang installiert und darauf vergessen haben. PostGIS funktioniert nur mit PostgreSQL 9.5 oder jünger und es kommt zu merkwürdigen, unerwarteten Fehlermeldungen, wenn Sie eine ältere Version verwenden. Um die Version Ihrer laufenden PostgreSQL Datenbank zu überprüfen, können Sie sich mittels psql zur Datenbank verbinden und folgende Anfrage ausführen:

    SELECT version();

    Falls Sie eine RPM-basierte Distribution am Laufen haben, können Sie nach vorinstallierten Paketen mit dem Befehl rpm suchen: rpm -qa | grep postgresql

  2. Wenn das Upgrade schief geht, stellen Sie bitte sicher, dass PostGIS, in der Datenbank die Sie wiederherstellen wollen, installiert ist.

    SELECT postgis_full_version();

Überprüfen Sie bitte auch, ob "configure" den korrekten Speicherort und die korrekte Version von PostgreSQL, sowie der Bibliotheken Proj4 und GEOS gefunden hat.

  1. Die Ausgabe von configure wird verwendet, um die Datei postgis_config.h zu erstellen. Überprüfen Sie bitte, ob die Variablen POSTGIS_PGSQL_VERSION, POSTGIS_PROJ_VERSION und POSTGIS_GEOS_VERSION korrekt gesetzt sind.

2.13. Loader/Dumper

Der Loader und der Dumper werden automatisch, als Teil von PostGIS kompiliert und installiert. Um diese händisch zu kompilieren und zu installieren:

# cd postgis-3.0.1/loader
# make
# make install

Der Loader heisst shp2pgsql und konvertiert ESRI Shapefiles in SQL, das in PostGIS/PostgreSQL geladen werden kann. Der Dumper heisst pgsql2shp2 und kopiert PostGIS Tabellen (oder Abfragen) in ESRI Shapefiles. Für eine ausführlichere Beschreibung, siehe die Online Hilfe und das Handbuch.