ArcGIS und der PostGIS-Geometrietyp
PostGIS ist ein Produkt, das PostgreSQL-Datenbanken räumlich aktiviert. PostGIS folgt der Simple Features-Spezifikation des Open Geospatial Consortium, Inc. (OGC) für SQL (Structured Query Language). Es verwendet das OGC Well-Known Binary (WKB)- und Well-Known Text (WKT)-Format für Geometrie.
PostGIS verfügt über zwei räumliche Typoptionen: GEOMETRY oder GEOGRAPHY. Nur der Geometrietyp wird mit ArcGIS unterstützt.
Wenn Sie den PostGIS-Geometriespeichertyp mit ArcGIS verwenden, beachten Sie die folgenden Regeln:
- Sie müssen die PostGIS-Datenbank-Vorlage verwenden, um die PostgreSQL-Datenbank zu erstellen, die Sie für die Geodatabase verwenden, oder Sie müssen PostGIS in der Datenbank aktivieren. Weitere Informationen entnehmen Sie dem Abschnitt "Vorbereiten der Datenbank für die Verwendung der PostGIS-Geometrie" in diesem Thema.
- Dem Benutzer "sde" und allen anderen Benutzern, die Daten in der Geodatabase erstellen, müssen Berechtigungen für bestimmte PostGIS-Tabellen gewährt werden. Informationen hierzu finden Sie im Abschnitt "Gewähren von Benutzerrechten zum Erstellen von Tabellen mit PostGIS-Geometriespalten".
- Von Ihnen erstellte Feature-Classes können nur die in der PostGIS-Tabelle "public.spatial_ref_sys" aufgeführten Raumbezüge verwenden. Wenn Sie einen Raumbezug angeben, der nicht in dieser Tabelle enthalten ist, schlägt die Erstellung der Feature-Class fehl.
- Sie müssen ein Konfigurationsschlüsselwort angeben, in dem der Parameter "GEOMETRY_STORAGE" auf "PG_GEOMETRY" festgelegt wurde, um eine Feature-Class zu erstellen, die den PostGIS-Geometrietyp verwendet.
- Sie können räumliche Tabellen, die mit dem PostGIS-Geometrietyp gespeichert wurden, nicht umbenennen. Das liegt daran, dass es keine PostGIS-Funktion gibt, um den Tabellennamen in der Tabelle "public.geometry_columns" zu aktualisieren.
Die folgenden Abschnitte enthalten weitere Informationen zum Verwenden des PostGIS-Geometriespeichertyps mit ArcGIS-Anwendungen.
Vorbereiten der Datenbank zur Verwendung der PostGIS-Geometrie
Um den PostGIS-Geometrietyp verwenden zu können, müssen Sie PostGIS installieren. Installieren Sie PostGIS nach der Installation von PostgreSQL. Stellen Sie sicher, dass die installierte PostGIS-Version von der verwendeten ArcGIS-Version unterstützt wird.
![Tipp Tipp](rsrc/tip.png)
Weitere Informationen dazu, welche PostGIS-Version von Ihrer ArcGIS-Version unterstützt wird, finden Sie im ArcGIS Resource Center auf der Seite für Datenbank-Systemanforderungen.
Wenn Sie PostGIS installieren, wird eine PostGIS-Vorlagendatenbank im PostgreSQL-Datenbank-Cluster erstellt. Verwenden Sie diese PostGIS-Vorlagendatenbank, um eine Datenbank zu erstellen, in der die Geodatabase gespeichert wird.
![Hinweis Hinweis](rsrc/note.png)
Wenn Sie die Geodatabase mithilfe des Geoverarbeitungswerkzeugs Enterprise-Geodatabase erstellen erstellen, wird die Datenbank mit einer anderen Vorlage als der PostGIS-Vorlage erstellt. Wenn Sie also den PostGIS-Geometrietyp verwenden möchten, müssen Sie eine Datenbank manuell mit der PostGIS-Vorlage erstellen. Wenn Sie dann die vorhandene Datenbank beim Ausführen des Geoverarbeitungswerkzeugs Enterprise-Geodatabase erstellen angeben, wird die Geodatabase darin erstellt.
Gewähren von Benutzerrechten zum Erstellen von Tabellen mit PostGIS-Geometriespalten
Wenn eine Datenbank für PostGIS aktiviert wird, werden zwei Tabellen – "geometry_columns" und "spatial_ref_sys" – im Schema "public" erstellt. Sie müssen dem Benutzer "sde" sowie allen anderen Benutzern, die Daten in der Geodatabase erstellen, für die Tabelle "geometry_columns" mindestens die Berechtigungen "SELECT", "INSERT", "UPDATE" und "DELETE" und für die Tabelle "spatial_ref_sys" die Berechtigung "SELECT" gewähren.
GRANT select, insert, update, delete
ON TABLE public.geometry_columns
TO <user_name>;
GRANT select
ON TABLE public.spatial_ref_sys
TO <user_name>;
Erstellen von Feature-Classes in einer Geodatabase in PostgreSQL mit PostGIS-Geometriespeicher
Sobald die Datenbank für die Speicherung von PostGIS-Geometrie aktiviert wurde, können Sie räumliche Tabellen mit räumlichen Spalten vom Typ "geometry" erstellen. Geographische Features können in die räumlichen Spalten eingefügt werden.
Sie können über ArcGIS for Desktop oder durch die Erstellung von Anwendungen, die die ArcSDE-C-API (Application Programming Interface) verwenden, auf die räumlich aktivierten Tabellen zugreifen. Wenn Sie ein erfahrener SQL-Programmierer sind, können Sie die räumlichen Funktionen auch aufrufen.
Erstellen von Feature-Classes mit ArcGIS
Der Geometriespeichertyp, der für mit ArcGIS erstellte Feature-Classes verwendet wird, wird durch eine Parametereinstellung in der Tabelle "sde_dbtune" gesteuert. Der Parameter ist "GEOMETRY_STORAGE". In PostgreSQL-Geodatabases kann dieser auf "ST_GEOMETRY" oder "PG_GEOMETRY" (die Einstellung für den PostGIS-Geometrietyp) festgelegt werden. Wenn Sie eine Feature-Class mit ArcGIS erstellen möchten, die den PostGIS-Speichertyp verwendet, müssen Sie daher ein Konfigurationsschlüsselwort angeben, in dem der Parameter "GEOMETRY_STORAGE" auf "PG_GEOMETRY" festgelegt wurde.
Standardmäßig wird als Geometriespeichertyp für neue Feature-Classes in einer ArcSDE-Geodatabase für PostgreSQL "ST_Geometry" verwendet. Wenn Sie jedoch einen Großteil der Daten als PostGIS-Speichertyp speichern möchten, können Sie den Wert des Parameters "GEOMETRY_STORAGE" unter dem Schlüsselwort "DEFAULTS" in der Tabelle "sde_dbtune" in "PG_GEOMETRY" ändern. (Verwenden Sie den Befehl "sdedbtune", um Parameter in der Tabelle "sde_dbtune" zu ändern. Informationen zum Verwenden dieses Befehls finden Sie in der "ArcSDE Administration Command Reference".) Wenn Sie nur einige wenige Feature-Classes im PostGIS-Speichertyp speichern möchten, können Sie beim Erstellen der betreffenden Feature-Class stattdessen das Konfigurationsschlüsselwort "PG_GEOMETRY" angeben. In der Datei "dbtune.sde", die durch den Export des Inhalts der Tabelle "sde_dbtune" mit dem Befehl "sdedbtune" erstellt werden kann, wird das Schlüsselwort PG_GEOMETRY folgendermaßen angezeigt:
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
Der Rest der Speicherparameter wird aus dem Schlüsselwort "DEFAULTS" übernommen. Weitere Informationen zum sde_dbtune-Speicher finden Sie in den folgenden Themen:
Verwenden vorhandener PostGIS-Tabellen
ArcGIS kann Tabellen verwenden, die PostGIS-Geometriespalten enthalten, die extern von anderen Anwendungen oder mithilfe von SQL erstellt wurden (auch als Tabellen von Drittanbietern bezeichnet), solange die Tabellen die folgenden Voraussetzungen erfüllen:
- Die Tabelle darf nur eine einzelne Geometriespalte enthalten. Sollte dies nicht zutreffen, definieren Sie einen Abfrage-Layer oder eine Ansicht, die nur eine der Geometriespalten enthält.
- Die Tabelle darf keine weiteren benutzerdefinierten Spalten enthalten.
- Die Tabelle darf nur einen Geometrietyp aufweisen (Punkte, Linien oder Polygone), Multipart-Geometrie ist jedoch zulässig.
- Die Tabelle muss eine eindeutige Spalte vom Typ "Integer" ohne NULL-Werte (NOT NULL) enthalten, die sich als registrierte Zeilen-ID-Spalte eignet.
- Die Tabelle muss einen räumlichen Index haben.
Informationen zum Erstellen von Tabellen mit einer PostGIS-Spalte mithilfe von SQL finden Sie in der PostGIS-Dokumentation.
Registrieren von externen Tabellen mit PostGIS-Geometriespalten
Sie können eine Verbindung mit einer PostgreSQL-Datenbank herstellen, die PostGIS-Tabellen von ArcGIS for Desktop enthält, und sie in der Geodatabase registrieren. Weitere Informationen finden Sie unter Registrieren einer Tabelle in der Geodatabase.
Weitere PostGIS- und PostgreSQL-Dokumentation
Die PostGIS-Dokumentation finden Sie auf der PostGIS-Website unter http://www.postgis.org/documentation/.
Allgemeine Informationen zu PostgreSQL finden Sie in der Dokumentation auf der PostgreSQL-Website unter http://www.postgresql.org/docs/.