Dieses Kapitel erläutert die notwendigen Schritte zur Installation von PostGIS.
Zum Kompilieren müssen die Abhängigkeiten im Suchpfad eingetragen sein:
tar -xvzf postgis-3.6.0dev.tar.gz cd postgis-3.6.0dev ./configure make make install
Nachdem PostGIS installiert ist, muss es in jeder Datenbank-Instanz, in der es verwendet werden soll, aktiviert werden.
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 allgemeine Kompilierungsanweisungen. Wenn Sie für Windows etc. oder ein anderes Betriebssystem kompilieren, können Sie zusätzliche, detailliertere Hilfe unter PostGIS User contributed compile guides und PostGIS Dev Wiki finden. Vorgefertigte Pakete für verschiedene Betriebssysteme sind in PostGIS Vorgefertigte Pakete aufgeführt. 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. |
Das PostGIS-Modul ist eine Erweiterung für den PostgreSQL-Backend-Server. Als solches benötigt PostGIS 3.6.0dev vollen Zugriff auf die Header des PostgreSQL-Servers, um kompiliert werden zu können. Es kann mit den PostgreSQL-Versionen 12 - 17 kompiliert werden. Frühere Versionen von PostgreSQL werden nicht unterstützt.
Lesen Sie die PostgreSQL-Installationsanleitung, wenn Sie PostgreSQL noch nicht installiert haben. https://www.postgresql.org .
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.
Das PostGIS Quellarchiv kann von der Download Webseite https://postgis.net/stuff/postgis-3.6.0dev.tar.gz bezogen werden.
wget https://postgis.net/stuff/postgis-3.6.0dev.tar.gz tar -xvzf postgis-3.6.0dev.tar.gz cd postgis-3.6.0dev
Dadurch wird das Verzeichnis postgis-3.6.0dev
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.6.0dev
zu wechseln.
./configure
Zur Kompilation und Anwendung stellt PostGIS die folgenden Systemanforderungen:
Notwendige Systemvoraussetzungen
PostgreSQL 12 - 17. Eine vollständige Installation von PostgreSQL (einschließlich der Server-Header) ist erforderlich. PostgreSQL ist verfügbar unter https://www.postgresql.org .
Eine vollständige PostgreSQL/PostGIS-Unterstützungsmatrix und PostGIS/GEOS-Unterstützungsmatrix finden Sie unter 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 Reprojektion Bibliothek. Proj 6.1 oder höher ist erforderlich. Die Proj-Bibliothek wird zur Unterstützung der Koordinatenreprojektion in PostGIS verwendet. Proj steht zum Download zur Verfügung unter https://proj.org/ .
GEOS-Geometriebibliothek, Version 3.8.0 oder höher, aber GEOS 3.12+ ist erforderlich, um alle neuen Funktionen und Eigenschaften voll nutzen zu können. GEOS steht zum Download bereit unter https://libgeos.org .
LibXML2, Version 2.5.x oder höher. LibXML2 wird derzeit in einigen Importfunktionen (ST_GeomFromGML und ST_GeomFromKML) verwendet. LibXML2 steht unter https://gitlab.gnome.org/GNOME/libxml2/-/releases zum Download bereit.
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 3+ sollte bevorzugt werden und ist auch für die Rasterunterstützung erforderlich. 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, “Konfigurieren der Rasterunterstützung” 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, 1.4.1 oder höher ist nötig, und 1.5.0+ erforderlich um alle Funktionen nutzen zu können. SFCGAL kann verwendet werden, um zusätzliche 2D- und 3D-Analysefunktionen für PostGIS cf Chapter 8, Referenz der SFCGAL-Funktionen bereitzustellen. Außerdem kann SFCGAL anstelle von GEOS für einige 2D-Funktionen verwendet werden, die von beiden Backends bereitgestellt werden (z. B. ST_Intersection oder ST_Area). Die PostgreSQL-Konfigurationsvariable postgis.backend
erlaubt es dem Endbenutzer das Backend auszuwählen, falls SFCGAL installiert ist (GEOS ist Standard). Hinweis: SFCGAL 1.2 benötigt mindestens CGAL 4.3 und Boost 1.54 (cf https://sfcgal.org) https://gitlab.com/sfcgal/SFCGAL/.
Um den Section 12.1, “Adressennormierer” zu bauen, benötigen Sie auch PCRE http://www.pcre.org (welches in der Regel auf Nix-Systemen bereits installiert ist). Section 12.1, “Adressennormierer” wird automatisch gebaut, wenn es eine PCRE-Bibliothek erkennt, oder Sie geben einen gültigen --mit-pcre-dir=/path/to/pcre
während configure an.
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.
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
Ab PostGIS 3.0 werden die standardmäßig erzeugten Bibliotheksdateien nicht mehr die Nebenversion als Teil des Dateinamens haben. Das bedeutet, dass alle PostGIS 3 Bibliotheken auf postgis-3
enden. Dies wurde gemacht, um pg_upgrade einfacher zu machen, mit dem Nachteil, dass Sie nur eine Version der PostGIS 3 Serie auf Ihrem Server installieren können. Um das alte Verhalten der Datei einschließlich der Nebenversion zu erhalten: z.B. postgis-3.0
fügen Sie diesen Schalter zu Ihrer configure-Anweisung hinzu.
--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.
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, die für die Durchführung von GeomFromKML/GML-Prozessen erforderlich ist. Normalerweise wird sie gefunden, wenn Sie libxml installiert haben, aber wenn nicht oder Sie eine bestimmte Version verwenden wollen, müssen Sie PostGIS auf eine bestimmte xml2-config
confi-Datei verweisen, damit Softwareinstallationen das LibXML-Installationsverzeichnis finden können. Verwenden Sie diesen Parameter (>--with-xml2config=/path/to/xml2-config), um manuell eine bestimmte LibXML-Installation anzugeben, gegen die PostGIS gebaut 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.6.0dev 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
Deaktivieren Sie die Aktualisierung von postgis_revision.h, um es an den aktuellen HEAD des Git-Repository anzupassen.
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. |
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
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
|
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 das getan haben, sollten Sie postgis
, postgis_topology
als verfügbare Erweiterungen in PgAdmin sehen -> extensions.
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.6.0dev | 3.6.0dev address_standardizer_data_us | 3.6.0dev | 3.6.0dev postgis | 3.6.0dev | 3.6.0dev postgis_raster | 3.6.0dev | 3.6.0dev postgis_sfcgal | 3.6.0dev | postgis_tiger_geocoder | 3.6.0dev | 3.6.0dev postgis_topology | 3.6.0dev | (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.6.0dev 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.6.0dev Schema | tiger Description | PostGIS tiger geocoder and reverse geocoder -[ RECORD 4 ]------------------------------------------------- Name | postgis_topology Version | 3.6.0dev Schema | topology Description | PostGIS topology spatial types and functions
Die Erweiterungstabellen |
Wenn Sie 3.6.0dev 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;
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.
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. |
Zurzeit beruht make check auf die Umgebungsvariablen |
Wenn make check erfolgreich ist, wird die Ausgabe von fast 500 Tests erzeugt. Die Ergebnisse sehen ähnlich aus wie die folgenden (zahlreiche Zeilen wurden weggelassen):
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. =====================
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
|
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 12.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
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.
Diese Anleitung geht davon aus, dass Ihre PostgreSQL-Installation bereits die postgis_tiger_geocoder-Erweiterung installiert hat.
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.
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
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.
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.
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.
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.
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
Führen Sie die erzeugten Skripts zum Laden der Nation auf der Befehlszeile aus.
cd /gisdata sh nation_script_load.sh
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 ------- 3235 (1 row)
SELECT count(*) FROM tiger_data.state_all;
count ------- 56 (1 row)
Dies enthält nur Daten, wenn Sie zcta5 zum Laden markiert haben.
SELECT count(*) FROM tiger_data.zcta5_all;
count ------- 33931 (1 row)
Standardmäßig werden die Tabellen, die bg
, tract
, tabblock20
entsprechen, nicht geladen. Diese Tabellen werden vom Geocoder nicht verwendet, aber von den Leuten für Bevölkerungsstatistiken genutzt. Wenn Sie sie als Teil Ihrer Staatslasten laden möchten, führen Sie die folgende Anweisung aus, um sie zu aktivieren.
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
Für jeden Staat, für den Sie Daten laden wollen, müssen Sie ein Skript Loader_Generate_Script erstellen.
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. |
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
Die vorher erzeugten, befehlszeilenorientierten Skripts ausführen.
cd /gisdata sh ma_load.sh
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.zcta5; vacuum (analyze, verbose) tiger.zip_lookup_base; vacuum (analyze, verbose) tiger.zip_state; vacuum (analyze, verbose) tiger.zip_state_loc;
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.
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 aktualisieren, müssen Sie zuerst Drop_Nation_Tables_Generate_Script generieren und ausführen. Bevor Sie die Daten eines Staates laden, müssen Sie die landesweiten Daten laden, was Sie mit Loader_Generate_Nation_Script tun. Dabei wird ein Loader-Skript für Sie generiert. Loader_Generate_Nation_Script ist ein einmaliger Schritt, der für Upgrades (von Tiger-Volkszählungsdaten aus dem Vorjahr) und für Neuinstallationen durchgefü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
Aktualisieren Sie zunächst Ihre postgis_tiger_geocoder Erweiterung wie folgt:
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');
Unter Section 2.4.1, “Tiger Geocoder Aktivieren Sie Ihre PostGIS-Datenbank” finden Sie Anweisungen zur Ausführung des Generierungsskripts. Dieser Vorgang muss nur einmal durchgeführt werden.
Sie können verschiedene Jahrestabellen für die einzelnen Bundesländer verwenden und jedes Bundesland separat aktualisieren. Bevor Sie ein Bundesland aktualisieren, müssen Sie zunächst die Statustabellen des Vorjahres für dieses Bundesland mit Drop_State_Tables_Generate_Script löschen. |
Falls Ihre Installation/Upgrade nicht so verläuft wie erwartet, gibt es eine ganze Reihe von Dingen zu überprüfen.
Ü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
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.
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.