Chapter 2. PostGIS Installation

Table of Contents
2.1. Kurzfassung
2.2. Kompilierung und Installation des Quellcodes: Detaillierte Beschreibung
2.2.1. Nutzung des Quellcodes
2.2.2. Systemvoraussetzungen
2.2.3. Konfiguration
2.2.4. Build-Prozess
2.2.5. Build-Prozess für die PostGIS Extensions und deren Bereitstellung
2.2.6. Softwaretest
2.2.7. Installation
2.3. Installation und Verwendung des Adressennormierers
2.4. Installing, Upgrading Tiger Geocoder, and loading data
2.4.1. Tiger Geocoder Enabling your PostGIS database
2.4.2. Die Adressennormierer-Extension zusammen mit dem Tiger Geokodierer verwenden
2.4.3. Required tools for tiger data loading
2.4.4. Upgrading your Tiger Geocoder Install and Data
2.5. Übliche Probleme bei der Installation

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 -xvzf postgis-3.4.3dev.tar.gz
cd postgis-3.4.3dev
./configure
make
make install

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

2.2. 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.

This section includes general compilation instructions, if you are compiling for Windows etc or another OS, you may find additional more detailed help at PostGIS User contributed compile guides and PostGIS Dev Wiki.

Pre-Built Packages for various OS are listed in PostGIS Pre-built Packages

Wenn Sie ein Windowsbenutzer sind, können Sie stabile Kompilationen mittels Stackbuilder oder die PostGIS Windows download site erhalten. Es gibt auch 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.

The PostGIS module is an extension to the PostgreSQL backend server. As such, PostGIS 3.4.3dev requires full PostgreSQL server headers access in order to compile. It can be built against PostgreSQL versions 12 - 16. Earlier versions of PostgreSQL are not supported.

Refer to the PostgreSQL installation guides if you haven't already installed PostgreSQL. https://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 [YOUR OPTIONS HERE]

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.2.1. Nutzung des Quellcodes

Das PostGIS Quellarchiv kann von der Download Webseite https://postgis.net/stuff/postgis-3.4.3dev.tar.gz bezogen werden.

wget https://postgis.net/stuff/postgis-3.4.3dev.tar.gz
tar -xvzf postgis-3.4.3dev.tar.gz
cd postgis-3.4.3dev

Dadurch wird das Verzeichnis postgis-3.4.3dev im aktuellen Arbeitsverzeichnis erzeugt.

Alternativ kann der Quellcode auch von svn repository http://svn.osgeo.org/postgis/trunk/ bezogen werden.

git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis
cd postgis
sh autogen.sh
    

Um die Installation fortzusetzen ist in das neu erstellte Verzeichnis postgis-3.4.3dev zu wechseln.

./configure

2.2.2. Systemvoraussetzungen

Zur Kompilation und Anwendung stellt PostGIS die folgenden Systemanforderungen:

Notwendige Systemvoraussetzungen

  • PostgreSQL 12 - 16. A complete installation of PostgreSQL (including server headers) is required. PostgreSQL is available from https://www.postgresql.org .

    For a full PostgreSQL / PostGIS support matrix and PostGIS/GEOS support matrix refer to https://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.

  • Proj reprojection library. Proj 6.1 or above is required. The Proj library is used to provide coordinate reprojection support within PostGIS. Proj is available for download from https://proj.org/ .

  • GEOS geometry library, version 3.6 or greater, but GEOS 3.12+ is required to take full advantage of all the new functions and features. GEOS is available for download from https://libgeos.org .

  • LibXML2, version 2.5.x or higher. LibXML2 is currently used in some imports functions (ST_GeomFromGML and ST_GeomFromKML). LibXML2 is available for download from https://gitlab.gnome.org/GNOME/libxml2/-/releases.

  • 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 2+ is required 3+ is preferred. This is required for raster support. https://gdal.org/download.html.

  • 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 3.2, “Configuring raster support” 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.3.1 (or higher), 1.4.1 or higher is recommended and required to be able to use all functionality. SFCGAL can be used to provide additional 2D and 3D advanced analysis functions to PostGIS cf Section 7.21, “SFCGAL Functions”. And also allow to use SFCGAL rather than GEOS for some 2D functions provided by both backends (like ST_Intersection or ST_Area, for instance). A PostgreSQL configuration variable postgis.backend allow end user to control which backend he want to use if SFCGAL is installed (GEOS by default). Nota: SFCGAL 1.2 require at least CGAL 4.3 and Boost 1.54 (cf: https://sfcgal.org) https://gitlab.com/sfcgal/SFCGAL/.

  • In order to build the Section 11.1, “Adressennormierer” you will also need PCRE http://www.pcre.org (which generally is already installed on nix systems). Section 11.1, “Adressennormierer” will automatically be built if it detects a PCRE library, or you pass in a valid --with-pcre-dir=/path/to/pcre during configure.

  • 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.

  • 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.2.3. 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

Starting with PostGIS 3.0, the library files generated by default will no longer have the minor version as part of the file name. This means all PostGIS 3 libs will end in postgis-3. This was done to make pg_upgrade easier, with downside that you can only install one version PostGIS 3 series in your server. To get the old behavior of file including the minor version: e.g. postgis-3.0 add this switch to your configure statement.

--prefix=PREFIX

Das Verzeichnis, in dem die PostGIS Bibliotheken und SQL-Skripts 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.4.3dev 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-phony-revision

Disable updating postgis_revision.h to match current HEAD of the git repository.

[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.2.4. 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.2.5. 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.

Wenn Sie gegen PostgreSQL 9.1 kompilieren, sollten die Erweiterungen 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
# to test extensions
make check RUNTESTFLAGS=--extension
[Note]

make check uses psql to run tests and as such can use psql environment variables. Common ones useful to override are PGUSER,PGPORT, and PGHOST. Refer to psql environment variables

Die Erweiterungsdateien sind für dieselbe Version von PostGIS 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.4.3dev         | 3.4.3dev
 address_standardizer_data_us | 3.4.3dev         | 3.4.3dev
 postgis                      | 3.4.3dev         | 3.4.3dev
 postgis_raster               | 3.4.3dev         | 3.4.3dev
 postgis_sfcgal               | 3.4.3dev         |
 postgis_tiger_geocoder       | 3.4.3dev         | 3.4.3dev
 postgis_topology             | 3.4.3dev         |
(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; --needed for postgis_tiger_geocoder
--optional used by postgis_tiger_geocoder, or can be used standalone
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.4.3dev
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.4.3dev
Schema      | tiger
Description | PostGIS tiger geocoder and reverse geocoder
-[ RECORD 4 ]-------------------------------------------------
Name        | postgis_topology
Version     | 3.4.3dev
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.4.3dev 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.2.6. 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.

If successful, make check will produce the output of almost 500 tests. The results will look similar to the following (numerous lines omitted below):

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

        .
        .
        .

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

        .
        .
        .

Running tests

        .
        .
        .

Run tests: 134
Failed: 0


-- if you build with SFCGAL

        .
        .
        .

Running tests

        .
        .
        .

Run tests: 13
Failed: 0

-- if you built with raster support

        .
        .
        .

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


        .
        .
        .

Running tests

        .
        .
        .

Run tests: 101
Failed: 0

-- topology regress

.
.
.

Running tests

        .
        .
        .

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/

        .
        .
        .

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.2.7. 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.3. 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 Section 11.1, “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.4.2, “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.2.3, “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.4. Installing, Upgrading Tiger Geocoder, and loading data

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.4.1. Tiger Geocoder Enabling your PostGIS database

  1. These directions assume your PostgreSQL installation already has the postgis_tiger_geocoder extension installed.

  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;
    --this one is optional if you want to use the rules based standardizer (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 = 'zcta520';

    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
    -------
      3234
    (1 row)
    SELECT count(*) FROM tiger_data.state_all;
    count
    -------
        56
    (1 row)
    

    This will only have data if you marked zcta520 to be loaded

    SELECT count(*) FROM tiger_data.zcta5_all;
    count
    -------
      37371
    (1 row)
    
  11. By default the tables corresponding to bg, tract, tabblock20 are not loaded. These tables are not used by the geocoder but are used by folks for population statistics. If you wish to load them as part of your state loads, run the following statement to enable them.

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

    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.4.2. 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.3, “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 table (tiger.pagc_rules), gaz table (tiger.pagc_gaz) und lex table (tiger.pagc_lex). Diese können Sie hinzufügen und aktualisieren, um die Normierung an die eigenen Bedürfnisse anzupassen.

2.4.3. Required tools for tiger data loading

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

If you are upgrading from tiger_2010, you'll need to first generate and run Drop_Nation_Tables_Generate_Script. Before you load any state data, you need to load the nation wide data which you do with Loader_Generate_Nation_Script. Which will generate a loader script for you. Loader_Generate_Nation_Script is a one-time step that should be done for upgrading (from a prior year tiger census data) and for new installs.

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.4.4. Upgrading your Tiger Geocoder Install and Data

First upgrade your postgis_tiger_geocoder extension as follows:

ALTER EXTENSION postgis_tiger_geocoder UPDATE;

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');

Refer to Section 2.4.1, “Tiger Geocoder Enabling your PostGIS database” for instructions on how to run the generate script. This only needs to be done once.

[Note]

You can have a mix of different year state tables and can upgrade each state separately. Before you upgrade a state you first need to drop the prior year state tables for that state using Drop_State_Tables_Generate_Script.

2.5. Ü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 12 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 12 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.