Hinzufügen des Typs "ST_Geometry" zu einer PostgreSQL-Datenbank
Mit der Standard- oder Advanced-Lizenz verfügbar.
Um räumliche Daten mit dem Typ "ST_Geometry" in einer PostgreSQL-Datenbank zu speichern, kann der Datenbankadministrator das Geoverarbeitungswerkzeug Räumlichen Typ erstellen oder ein Python-Skript ausführen, das die ArcPy-Funktion CreateSpatialType aufruft, um der Datenbank diesen Typ sowie dessen Subtypes und Funktionen hinzuzufügen.
Tipp:
Wenn Sie zum Erstellen einer Geodatabase in PostgreSQL das Geoverarbeitungswerkzeug Enterprise-Geodatabase erstellen verwenden und dabei den Parameter Räumlicher Typ auf PostGIS festgelegt haben und dieser Geodatabase später den Datentyp "ST_Geometry" hinzufügen möchten, können Sie dazu das Werkzeug Räumlichen Typ erstellen ausführen. Andernfalls führen Sie das Werkzeug Räumlichen Typ erstellen in einer Datenbank aus.
Funktionen des Werkzeugs Räumlichen Typ erstellen:
Erstellen einer Anmelderolle mit der Bezeichnung "sde" im PostgreSQL-Datenbank-Cluster
Erteilen einer Administratorberechtigung an den SDE-Benutzer (diese kann nach Erstellung des Typs "ST_Geometry" entzogen werden)
Erstellen eines Schemas mit dem Namen "sde" in der Datenbank
Erteilen uneingeschränkter Berechtigungen für das SDE-Schema für den SDE-Benutzer
Gewähren von
USAGE-Berechtigungen für das SDE-Schema für die Gruppe mit öffentlicher Anmeldung. Diese Berechtigung für die öffentliche Gruppe ist widerrufbar, allerdings müssen Sie allen Benutzern, die Zugriff auf den Typ "ST_Geometry" oder auf seine Subtypes oder Funktionen benötigen,USAGE-Berechtigungen für das SDE-Schema erteilen.Erstellen Sie die notwendigen Funktionen, Domänen, Tabellen ("sde_coordinate_systems" und "sde_geometry_columns") und Sichten ("st_geometry_columns" und "st_spatial_references") im SDE-Schema und der Tabelle "sde_spatial_references" im öffentlichen Schema.
Bevor Sie das Werkzeug oder die Funktion ausführen, müssen Sie die Bibliothek st_geometry auf den PostgreSQL-Server kopieren.
Hinweis:
Bei der Bereitstellung auf einem Microsoft Windows-Server wird für die Datei st_geometry.dll das Microsoft Visual C++ Redistributable Package (x64) benötigt. Informationen zur erforderlichen Paketversion finden Sie unter ArcGIS-Anforderungen für PostgreSQL. Wenn dieses Paket auf dem PostgreSQL-Server nicht verfügbar ist, laden Sie es von der Microsoft-Site herunter, und installieren Sie es.
Verwenden des Geoverarbeitungswerkzeugs "Räumlichen Typ erstellen"
Führen Sie die folgenden Schritte aus, um das Geoverarbeitungswerkzeug Räumlichen Typ erstellen auszuführen und den Typ "ST_Geometry" in einer PostgreSQL-Datenbank zu installieren:
Laden Sie die komprimierte Datei "ST_Geometry" von My Esri herunter.
Die komprimierten Dateien sind spezifisch für die ArcGIS-Softwareversion, aus der Sie den räumlichen Typ erstellen.
Wenden Sie sich an den Administrator Ihrer ArcGIS-Organisation, wenn die Download-Option nicht vorhanden ist.
Extrahieren Sie den Inhalt der Datei.
Hinweis:
"ST_Geometry"-Bibliotheken gibt es für bestimmte Betriebssysteme und Versionen von PostgreSQL. Stellen Sie sicher, dass Sie die richtige Bibliothek kopieren.
Speichern Sie die Datei "st_geometry" im PostgreSQL-
lib-Verzeichnis.Wenn PostgreSQL auf einem Windows-Server installiert ist, legen Sie die Datei
st_geometry.dllin dem Verzeichnis%PostgreSQL%\libauf dem Server ab.Der Speicherort des Verzeichnisses
libunter Linux kann je nach Installation von PostgreSQL variieren. Um den richtigen Speicherort für Ihre PostgreSQL-Installation zu ermitteln, führen Siepg_configals postgres-Benutzer aus. Der für "PKGLIBDIR" zurückgegebene Wert ist das Verzeichnislib, in dem Sie diest_geometry.so-Datei speichern müssen. Melden Sie sich als Stammverzeichnisbenutzer bei dem Computer an, um die Datei in das Verzeichnislibzu kopieren.
Hinweis:
Wenn
libstdcc++.so.6.0.29oder eine spätere Version der Bibliothek nicht in Ihrem Linux-Betriebssystem vorhanden ist, legen Sie die Bibliotheklibstdcc++.so.6ebenfalls im PostgreSQL-lib-Verzeichnis mit derst_geometry.so-Bibliothek ab.Öffnen Sie ein Projekt in ArcGIS Pro, öffnen Sie den Bereich Katalog, und stellen Sie als PostgreSQL-Administrator eine Verbindung mit der Datenbank her.
Im Projektordner wird eine Datenbankverbindungsdatei (
.sde) erstellt.Öffnen Sie das Werkzeug Räumlichen Typ erstellen.
Suchen Sie im Fenster Suchen nach dem Werkzeug, oder öffnen Sie das Werkzeug im Toolset "Workspace" der Toolbox "Data Management".
Fügen Sie dem Textfeld des Parameters Eingabedatenbank die in Schritt 2 erstellte Datenbankverbindung hinzu.
Geben Sie das Kennwort für den SDE-Datenbankbenutzer in das Textfeld des Parameters SDE-Benutzerkennwort ein.
Tipp:
Wenn der PostgreSQL-Datenbank-Cluster bereits über eine SDE-Anmelderolle verfügt, muss das von Ihnen angegebene Kennwort mit dem Kennwort der vorhandenen SDE-Anmelderolle übereinstimmen. Wenn zum Beispiel in diesem Datenbank-Cluster bereits eine Enterprise-Geodatabase enthalten ist, dann ist die SDE-Anmelderolle bereits vorhanden, und Sie müssen hier deren Kennwort verwenden.
Lassen Sie das Textfeld des Parameters Tablespace-Name leer.
Klicken Sie auf Ausführen.
Der ST_Geometry-Typ, Subtypes und Funktionen werden im Schema des SDE-Benutzers in der von Ihnen angegebenen Datenbank erstellt.
Verwenden von ArcPy-Funktionen
Verwenden Sie auf jedem ArcGIS Pro- oder ArcGIS Server-Computer die ArcPy-Funktion CreateDatabaseConnection, um eine Datenbankverbindungsdatei (.sde) zu erstellen, die als PostgreSQL-Superuser eine Verbindung mit der PostgreSQL-Datenbank herstellt. Erstellen Sie als Nächstes mithilfe der .sde-Datei und der ArcPy-Funktion CreateSpatialType den Typ "ST_Geometry" und dessen Subtype und Funktionen in der Datenbank.
Laden Sie die Bibliothek
st_geometryvon My Esri herunter, und legen Sie sie im PostgreSQL-Verzeichnislibab.Hinweis:
Wenn
libstdcc++.so.6.0.29oder eine spätere Version der Bibliothek nicht in Ihrem Linux-Betriebssystem vorhanden ist, laden Sie die Bibliotheklibstdcc++.so.6für PostgreSQL ebenfalls von My Esri herunter und legen Sie sie m PostgreSQL-lib-Verzeichnis mit derst_geometry.so-Bibliothek ab.ST_Geometry-Bibliotheken gibt es für bestimmte Betriebssysteme, Versionen von PostgreSQL und ArcGIS-Versionen.
Der Speicherort des Verzeichnisses
libunter Linux kann je nach Installation von PostgreSQL variieren. Um den richtigen Speicherort für Ihre PostgreSQL-Installation zu ermitteln, führen Siepg_configals postgres-Benutzer aus. Der für "PKGLIBDIR" zurückgegebene Wert ist das Verzeichnislib, in dem Sie diest_geometry.so-Datei speichern müssen. Melden Sie sich als Stammverzeichnisbenutzer bei dem Computer an, um die Datei in das Verzeichnislibzu kopieren.Wenn PostgreSQL auf einem Windows-Server installiert ist, legen Sie die Datei
st_geometry.dllin dem Verzeichnis%PostgreSQL%\libauf dem Server ab.
Führen Sie die Funktion
CreateDatabaseConnectionaus, um eine.sde-Datei zu erstellen.Sie müssen die Verbindung als PostgreSQL-Superuser herstellen und die Anmeldeinformationen speichern.
Im folgenden Beispiel wird die Verbindungsdatei in einem Verzeichnis mit dem Namen "TempFiles" erstellt, der Name der Verbindungsdatei lautet "suserconnection.sde", die Anmeldedaten werden für den Superuser angegeben und mit der Datei gespeichert, sodass eine Verbindung mit einer Datenbank mit dem Namen "pgdb" im Datenbank-Cluster "pginstance" hergestellt wird.
import arcpy arcpy.management.CreateDatabaseConnection( "/user/TempFiles", "suserconnection.sde", "POSTGRESQL", "pginstance", "DATABASE_AUTH", "postgres", "Cl@rkK3nt", "SAVE_USERNAME", "pgdb" )Führen Sie die ArcPy-Funktion
CreateSpatialTypeaus, um den Typ "ST_Geometry" in der PostgreSQL-Instanz zu installieren.In diesem Beispiel wird die Verbindungsdatei aus dem vorherigen Schritt verwendet, und das SDE-Kennwort wird auf "pw0rd4sde" festgelegt.
import arcpy arcpy.management.CreateSpatialType( "suserconnection.sde", "pw0rd4sde" )
Der ST_Geometry-Typ sowie die Subtypes und Funktionen werden im Schema des SDE-Benutzers in der Datenbank erstellt, die in der Datenbankverbindungsdatei angegeben wurde.