Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwaltung von Geodaten mit der GIS Post-Erweiterung
Post GIS ist eine Erweiterung von Postgre SQL zum Speichern und Verwalten von Geoinformationen. Weitere Informationen zu Post finden Sie GIS unter GISPost.net
Ab Version 10.5 SQL unterstützt Postgre die Bibliothek libprotobuf 1.3.0, die von Post GIS für die Arbeit mit Vektorkacheldaten von Mapboxen verwendet wird.
Für die Einrichtung der Post-Erweiterung sind Rechte erforderlich. GIS rds_superuser
Wir empfehlen Ihnen, einen Benutzer (eine Rolle) für die Verwaltung der GIS Post-Erweiterung und Ihrer Geodaten zu erstellen. Die GIS Post-Erweiterung und die zugehörigen Komponenten erweitern Postgre SQL um Tausende von Funktionen. Erwägen Sie, die GIS Post-Erweiterung in einem eigenen Schema zu erstellen, wenn dies für Ihren Anwendungsfall sinnvoll ist. Das folgende Beispiel zeigt, wie die Erweiterung in einer eigenen Datenbank installiert wird. Dies ist jedoch nicht erforderlich.
Themen
- Schritt 1: Erstellen Sie einen Benutzer (eine Rolle) zur Verwaltung der GIS Post-Erweiterung
- Schritt 2: Laden Sie die Post-Erweiterungen GIS
- Schritt 3: Übertragung der Inhaberschaft an den Erweiterungsschemas
- Schritt 4: Übertragen Sie den Besitz der GIS Post-Tabellen
- Schritt 5: Testen der Erweiterungen
- Schritt 6: Aktualisieren Sie die GIS Post-Erweiterung
- Versionen nach GIS Erweiterungen
- Aktualisierung von Post GIS 2 auf Post GIS 3
Schritt 1: Erstellen Sie einen Benutzer (eine Rolle) zur Verwaltung der GIS Post-Erweiterung
Stellen Sie zunächst als Benutzer mit rds_superuser
Rechten eine Verbindung zu Ihrer RDS for SQL Postgre-DB-Instance her. Wenn Sie beim Einrichten Ihrer Instance den Standardnamen beibehalten haben, stellen Sie eine Verbindung als postgres
her.
psql --host=
111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --password
Erstellen Sie eine separate Rolle (Benutzer), um die GIS Post-Erweiterung zu verwalten.
postgres=>
CREATE ROLE
gis_admin
LOGIN PASSWORD 'change_me
';CREATE ROLE
Gewähren Sie dieser Rolle rds_superuser
-Berechtigungen, damit die Rolle die Erweiterung installieren kann.
postgres=>
GRANT rds_superuser TO
gis_admin
;GRANT
Erstellen Sie eine Datenbank, die Sie für Ihre GIS Post-Artefakte verwenden können. Dieser Schritt ist optional. Oder Sie können in Ihrer Benutzerdatenbank ein Schema für die GIS Post-Erweiterungen erstellen, aber das ist auch nicht erforderlich.
postgres=>
CREATE DATABASE
lab_gis
;CREATE DATABASE
Gewähren Sie gis_admin
alle Berechtigungen für die lab_gis
-Datenbank.
postgres=>
GRANT ALL PRIVILEGES ON DATABASE lab_gis TO gis_admin;
GRANT
Beenden Sie die Sitzung und stellen Sie erneut eine Verbindung zu Ihrer RDS for SQL Postgre-DB-Instance als her. gis_admin
postgres=>
psql --host=
111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=gis_admin
--password --dbname=lab_gis
Password for user gis_admin:...
lab_gis=>
Fahren Sie mit der Einrichtung der Erweiterung fort, wie in den nächsten Schritten beschrieben.
Schritt 2: Laden Sie die Post-Erweiterungen GIS
Die GIS Post-Erweiterung umfasst mehrere verwandte Erweiterungen, die zusammenarbeiten, um Geodatenfunktionen bereitzustellen. Je nach Anwendungsfall benötigen Sie möglicherweise nicht alle Erweiterungen, die Sie in diesem Schritt erstellt haben.
Verwenden Sie CREATE EXTENSION
Anweisungen, um die GIS Post-Erweiterungen zu laden.
CREATE EXTENSION postgis;
CREATE EXTENSION
CREATE EXTENSION postgis_raster;
CREATE EXTENSION
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION
CREATE EXTENSION postgis_topology;
CREATE EXTENSION
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION
Sie können die Ergebnisse überprüfen, indem Sie die im folgenden Beispiel gezeigte SQL Abfrage ausführen, in der die Erweiterungen und ihre Besitzer aufgelistet sind.
SELECT n.nspname AS "Name", pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner" FROM pg_catalog.pg_namespace n WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' ORDER BY 1;
List of schemas Name | Owner --------------+----------- public | postgres tiger | rdsadmin tiger_data | rdsadmin topology | rdsadmin (4 rows)
Schritt 3: Übertragung der Inhaberschaft an den Erweiterungsschemas
Verwenden Sie die ALTER SCHEMA Anweisungen, um das Eigentum an den Schemas auf die gis_admin
Rolle zu übertragen.
ALTER SCHEMA tiger OWNER TO gis_admin;
ALTER SCHEMA
ALTER SCHEMA tiger_data OWNER TO gis_admin;
ALTER SCHEMA
ALTER SCHEMA topology OWNER TO gis_admin;
ALTER SCHEMA
Sie können den Eigentümerwechsel bestätigen, indem Sie die folgende SQL Abfrage ausführen. Oder Sie können den Metabefehl \dn
über die psql-Befehlszeile verwenden.
SELECT n.nspname AS "Name", pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner" FROM pg_catalog.pg_namespace n WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' ORDER BY 1;
List of schemas Name | Owner --------------+--------------- public | postgres tiger | gis_admin tiger_data | gis_admin topology | gis_admin (4 rows)
Schritt 4: Übertragen Sie den Besitz der GIS Post-Tabellen
Anmerkung
Ändern Sie nicht die Inhaberschaft der GIS Post-Funktionen. Ein ordnungsgemäßer Betrieb und future Upgrades von Post GIS setzen voraus, dass diese Funktionen das ursprüngliche Eigentum behalten. Weitere Informationen zu GIS Post-Berechtigungen finden Sie unter SQLPostgre-Sicherheit
Verwenden Sie die folgende Funktion, um das Eigentum an den GIS Post-Tabellen auf die gis_admin
Rolle zu übertragen. Führen Sie die folgende Anweisung aus der psql-Aufforderung aus, um die Funktion zu erstellen.
CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
CREATE FUNCTION
Führen Sie als Nächstes die folgende Abfrage aus, um die exec
-Funktion auszuführen, die wiederum die Anweisungen ausführt und die Berechtigungen ändert.
SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO gis_admin;') FROM ( SELECT nspname, relname FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid) WHERE nspname in ('tiger','topology') AND relkind IN ('r','S','v') ORDER BY relkind = 'S') s;
Schritt 5: Testen der Erweiterungen
Um zu vermeiden, dass der Schemaname angegeben werden muss, fügen Sie das tiger
-Schema Ihrem Suchpfad unter Verwendung des folgenden Befehls hinzu.
SET search_path=public,tiger;
SET
Testen Sie das tiger
Schema mithilfe der folgenden SELECT Anweisung.
SELECT address, streetname, streettypeabbrev, zip FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;
address | streetname | streettypeabbrev | zip ---------+------------+------------------+------- 1 | Devonshire | Pl | 02109 (1 row)
Weitere Informationen zu dieser Erweiterung finden Sie unter Tiger Geocoder in der
Testen Sie den Zugriff auf das topology
-Schema, indem Sie folgende SELECT
-Anweisung verwenden. Das ruft die createtopology
-Funktion zum Registrieren eines neuen Topologieobjekts (my_new_topo) mit der angegebenen Raumbezugskennung (26986) und der Standardtoleranz (0,5) auf. Weitere Informationen finden Sie CreateTopology
SELECT topology.createtopology('my_new_topo',26986,0.5);
createtopology ---------------- 1 (1 row)
Schritt 6: Aktualisieren Sie die GIS Post-Erweiterung
Jede neue Version von Postgre SQL unterstützt eine oder mehrere Versionen der GIS Post-Erweiterung, die mit dieser Version kompatibel sind. Durch ein Upgrade der SQL Postgre-Engine auf eine neue Version wird die GIS Post-Erweiterung nicht automatisch aktualisiert. Bevor Sie die SQL Postgre-Engine aktualisieren, aktualisieren Sie Post normalerweise GIS auf die neueste verfügbare Version für die aktuelle SQL Postgre-Version. Details hierzu finden Sie unter Versionen nach GIS der Erweiterung.
Nach dem Upgrade der SQL Postgre-Engine aktualisieren Sie die GIS Post-Erweiterung erneut auf die Version, die für die neu aktualisierte SQL Postgre-Engine-Version unterstützt wird. So führen Sie ein Hauptversions-Upgrade RDS für Postgre durch SQL.
Sie können jederzeit auf Ihrem nach verfügbaren Updates der GIS Post-Erweiterungsversion suchen. Führen Sie dazu den folgenden Befehl aus. Diese Funktion ist mit Post GIS 2.5.0 und höheren Versionen verfügbar.
SELECT postGIS_extensions_upgrade();
Wenn Ihre Anwendung die neueste GIS Post-Version nicht unterstützt, können Sie eine ältere Version von Post, GIS die in Ihrer Hauptversion verfügbar ist, wie folgt installieren.
CREATE EXTENSION postgis VERSION "2.5.5";
Wenn Sie von einer älteren Version auf eine bestimmte GIS Post-Version aktualisieren möchten, können Sie auch den folgenden Befehl verwenden.
ALTER EXTENSION postgis UPDATE TO "2.5.5";
Abhängig von der Version, von der Sie ein Upgrade durchführen, müssen Sie diese Funktion möglicherweise noch einmal verwenden. Das Ergebnis des ersten Durchlaufs der Funktion bestimmt, ob eine zusätzliche Upgrade-Funktion benötigt wird. Dies ist beispielsweise bei einem Upgrade von Post GIS 2 auf Post GIS 3 der Fall. Weitere Informationen finden Sie unter Aktualisierung von Post GIS 2 auf Post 3 GIS.
Wenn Sie diese Erweiterung aktualisiert haben, um sich auf ein Upgrade der Hauptversion der SQL Postgre-Engine vorzubereiten, können Sie mit anderen vorbereitenden Aufgaben fortfahren. Weitere Informationen finden Sie unter So führen Sie ein Hauptversions-Upgrade RDS für Postgre durch SQL.
Versionen nach GIS der Erweiterung
Wir empfehlen, dass Sie die Versionen aller Erweiterungen GIS wie Post installieren, die unter Postgre aufgeführt sind. SQL Erweiterungsversionen für Amazon RDS for Postgre SQL in den SQLVersionshinweisen zu Amazon RDS for Postgre. Sie können mithilfe des folgenden Befehls auflisten, welche Versionen in Ihrer Version verfügbar sind.
SELECT * FROM pg_available_extension_versions WHERE name='postgis';
Versionsinformationen finden Sie in den folgenden Abschnitten der SQLVersionshinweise zu Amazon RDS for Postgre:
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 16 RDS
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 15 RDS
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 14 RDS
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 13 RDS
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 12 RDS
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 11 RDS
-
Von Amazon unterstützte Erweiterungen der SQL Postgre-Version 10 RDS
-
Von Amazon unterstützte SQL Postgre-Erweiterungen der Version 9.6.x RDS
Aktualisierung von Post GIS 2 auf Post 3 GIS
Ab Version 3.0 ist die GIS Post-Raster-Funktionalität jetzt eine separate Erweiterungpostgis_raster
. Diese Erweiterung hat einen eigenen Installations- und Upgrade-Pfad. Dadurch werden Dutzende von Funktionen, Datentypen und anderen Artefakten, die für die Rasterbildverarbeitung erforderlich sind, aus der postgis
-Kernerweiterung entfernt. Das heißt, wenn Ihr Anwendungsfall keine Raster-Verarbeitung erfordert, müssen Sie die postgis_raster
-Erweiterung nicht installieren.
Im folgenden Upgrade-Beispiel extrahiert der erste Upgrade-Befehl die Raster-Funktionalität in die postgis_raster
-Erweiterung. Ein zweiter Upgrade-Befehl ist dann erforderlich, um ein Upgrade von postgis_raster
auf die neue Version durchzuführen.
Um von Post GIS 2 auf Post GIS 3 zu aktualisieren
-
Identifizieren Sie die Standardversion von PostGIS, die für die SQL Postgre-Version auf Ihrem verfügbar ist. RDSfür die Postgre-DB-Instance. SQL Führen Sie dazu die folgende Abfrage durch.
SELECT * FROM pg_available_extensions WHERE default_version > installed_version;
name | default_version | installed_version | comment ---------+-----------------+-------------------+------------------------------------------------------------ postgis | 3.1.4 | 2.3.7 | PostGIS geometry and geography spatial types and functions (1 row)
-
Identifizieren Sie die Versionen von Post, die in jeder Datenbank auf installiert sind. Ihre RDS für SQL Postgre-DB-Instance. Anders gesagt: Fragen Sie jede Benutzerdatenbank wie folgt ab.
SELECT e.extname AS "Name", e.extversion AS "Version", n.nspname AS "Schema", c.description AS "Description" FROM pg_catalog.pg_extension e LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass WHERE e.extname LIKE '%postgis%' ORDER BY 1;
Name | Version | Schema | Description ---------+---------+--------+--------------------------------------------------------------------- postgis | 2.3.7 | public | PostGIS geometry, geography, and raster spatial types and functions (1 row)
Diese Diskrepanz zwischen der Standardversion (Post GIS 3.1.4) und der installierten Version (Post GIS 2.3.7) bedeutet, dass Sie die Post-Erweiterung aktualisieren müssen. GIS
ALTER EXTENSION postgis UPDATE;
ALTER EXTENSION WARNING: unpackaging raster WARNING: PostGIS Raster functionality has been unpackaged
-
Führen Sie die folgende Abfrage aus, um sicherzustellen, dass sich die Raster-Funktionalität jetzt in einem eigenen Paket befindet.
SELECT probin, count(*) FROM pg_proc WHERE probin LIKE '%postgis%' GROUP BY probin;
probin | count --------------------------+------- $libdir/rtpostgis-2.3 | 107 $libdir/postgis-3 | 487 (2 rows)
Die Ausgabe zeigt, dass es immer noch einen Unterschied zwischen den Versionen gibt. Die GIS Post-Funktionen sind Version 3 (postgis-3), während die Raster-Funktionen (rtpostgis) Version 2 (rtpostgis-2.3) sind. Um das Upgrade abzuschließen, führen Sie den Upgrade-Befehl erneut wie folgt aus.
postgres=>
SELECT postgis_extensions_upgrade();Die Warnmeldungen können Sie ohne Bedenken ignorieren. Führen Sie die folgende Abfrage erneut aus, um zu überprüfen, ob das Upgrade abgeschlossen ist. Das Upgrade ist abgeschlossen, wenn Post GIS und alle zugehörigen Erweiterungen nicht als aktualisierungsbedürftig gekennzeichnet sind.
SELECT postgis_full_version();
-
Verwenden Sie die folgende Abfrage, um den abgeschlossenen Upgrade-Vorgang und die separat gepackten Erweiterungen anzuzeigen und zu überprüfen, ob ihre Versionen übereinstimmen.
SELECT e.extname AS "Name", e.extversion AS "Version", n.nspname AS "Schema", c.description AS "Description" FROM pg_catalog.pg_extension e LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass WHERE e.extname LIKE '%postgis%' ORDER BY 1;
Name | Version | Schema | Description ----------------+---------+--------+--------------------------------------------------------------------- postgis | 3.1.5 | public | PostGIS geometry, geography, and raster spatial types and functions postgis_raster | 3.1.5 | public | PostGIS raster types and functions (2 rows)
Die Ausgabe zeigt, dass die Post GIS 2-Erweiterung auf Post GIS 3 aktualisiert wurde und dass beide
postgis
und die jetzt separatepostgis_raster
Erweiterung Version 3.1.5 sind.
Wenn Sie nach Abschluss dieses Upgrades die Raster-Funktionalität nicht verwenden möchten, können Sie die Erweiterung wie folgt löschen.
DROP EXTENSION postgis_raster;