ArcGIS und der PostGIS-Geometrietyp
PostGIS is a product from Refractions Research that can spatially enable PostgreSQL databases. PostGIS follows the Open Geospatial Consortium, Inc., Simple Features specification for SQL.
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.
Um die von ArcGIS unterstützte PostGIS-Version herunterzuladen, besuchen Sie die PostGIS-Website http://www.postgis.org/download/ bzw. http://pgfoundry.org/, um Download-Pfade zu den Dateien zu erhalten. Achten Sie darauf, dass Sie die richtigen Installations- oder Binärdateien für das verwendete Betriebssystem herunterladen.
Weitere Informationen dazu, welche Version von PostGIS 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.
Wenn Sie die Geodatabase mithilfe des Geoverarbeitungswerkzeugs Enterprise-Geodatabase erstellen erstellen, wird die Datenbank mit einer anderen Vorlage als der PostGIS-Vorlage erstellt. Daher müssen Sie eine Datenbank manuell mit der PostGIS-Vorlage erstellen und eine sde-Anmelderolle im Datenbankcluster und ein sde-Benutzerschema in der Datenbank erzeugen, wenn Sie den PostGIS-Geometrietyp verwenden möchten. Anschließend können Sie das Geoverarbeitungswerkzeug Enterprise-Geodatabase aktivieren verwenden, um eine Geodatabase in der vorhandenen Datenbank zu erstellen.
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.
Auf die räumlich aktivierten Tabellen greifen Sie über ArcGIS for Desktop zu, oder indem Sie Anwendungen über die ArcSDE-C-Anwendungsprogrammierschnittstelle (API) erstellen. 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:
- Der Benutzer, von dem die Tabelle registriert wird, muss deren Besitzer sein.
- Die Tabelle darf nur eine einzelne Geometriespalte enthalten.
- 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 "Ganzzahl" ohne Nullwerte (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 auf der PostGIS.org-Website.
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 bei 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/.