ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Hilfe
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • Dokumentation
  • Support
Esri
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Verwalten von Daten
  • Werkzeuge
  • Erweiterungen

Hinzufügen des Typs "ST_Geometry" zu einer PostgreSQL-Datenbank

Mit der Standard- oder Advanced-Lizenz verfügbar.

  • Verwenden des Geoverarbeitungswerkzeugs Räumlichen Typ erstellen
  • Verwenden der Funktion "CreateSpatialType"

Um räumliche Daten mit dem Typ "ST_Geometry" in der PostgreSQL-Datenbank zu speichern, verwenden Sie das Geoverarbeitungswerkzeug Räumlichen Typ erstellen oder ein Python-Skript, das die ArcPy-Funktion CreateSpatialType aufruft, um der Datenbank den Typ sowie dessen Subtypes und Funktionen hinzuzufügen.

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 der Bezeichnung "sde" in der Datenbank, in der der Typ "ST_Geometry" installiert werden soll
  • Erteilen Sie dem SDE-Benutzer uneingeschränkte Berechtigungen für das SDE-Schema.
  • Gewähren Sie der Gruppe mit öffentlicher Anmeldung USAGE-Berechtigungen für das SDE-Schema. Diese Berechtigung ist widerrufbar, allerdings müssen Sie allen Benutzern, die Zugriff auf den Typ "ST_Geometry", 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 die 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 Windows-Server wird für die st_geometry.dll das Microsoft Visual C++ Redistributable Package (x64) benötigt. Informationen zur erforderlichen Paketversion finden Sie unter PostgreSQL-Datenbankanforderungen. 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

In den folgenden Schritten wird erläutert, wie das Geoverarbeitungswerkzeug "Räumlichen Typ erstellen" ausgeführt wird, um den Typ "ST_Geometry" in einer PostgreSQL-Datenbank zu installieren:

  1. Kopieren Sie die Bibliothek "st_geometry" aus dem DatabaseSupport-Verzeichnis in das ArcGIS Desktop-Installationsverzeichnis, und legen Sie sie im PostgreSQL-Verzeichnis lib ab. Stellen Sie sicher, dass Sie die richtige Bibliothek "st_geometry" für die von Ihnen verwendete Version von PostgreSQL und das Betriebssystem kopieren.
    • Der Speicherort des Verzeichnisses lib unter Linux kann je nach Installation von PostgreSQL variieren. Um den richtigen Speicherort Ihrer PostgreSQL-Installation zu ermitteln, führen Sie pg_config als postgres-Benutzer aus. Der für "PKGLIBDIR" zurückgegebene Wert ist das Verzeichnis lib, in dem Sie die st_geometry.so-Datei speichern müssen. Melden Sie sich als Stammverzeichnisbenutzer an, um die Datei in das Verzeichnis lib zu kopieren.
    • Wenn PostgreSQL unter einem Windows-Server installiert ist, fügen Sie die Datei st_geometry.dll in das Verzeichnis %PostgreSQL%\lib ein.
  2. Starten Sie ArcCatalog oder ArcMap, öffnen Sie das Fenster Katalog, und stellen Sie als PostgreSQL-Administrator eine Verbindung mit der Datenbank her.

    Dadurch wird eine .sde-Datei in C:\Users\<user_name>\AppData\Roaming\ESRI\Desktop<version_number>\ArcCatalog erstellt.

  3. Ö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.

  4. Fügen Sie dem Textfeld Eingabedatenbank die in Schritt 2 erstellte Datenbankverbindung (.sde-Datei) hinzu.
  5. Geben Sie das Kennwort für den SDE-Datenbankbenutzer in das Textfeld SDE-Benutzerkennwort ein.

    Tipp:

    Wenn das PostgreSQL-Datenbank-Cluster bereits über eine SDE-Anmelderolle verfügt, stellen Sie sicher, dass das eingegebene Kennwort mit dem Kennwort der vorhandenen SDE-Anmelderolle übereinstimmt. In diesem Datenbank-Cluster ist möglicherweise eine Enterprise-Geodatabase enthalten. Sollte dies der Fall sein, ist die SDE-Anmelderolle bereits vorhanden und Sie müssen hier deren Kennwort verwenden.

  6. Lassen Sie das Textfeld Tablespace-Name leer.
  7. Klicken Sie auf OK, um das Werkzeug auszuführen.

Der ST_Geometry-Typ, Subtypes und Funktionen werden im Schema des SDE-Benutzers in der von Ihnen angegebenen Datenbank erstellt.

Verwenden der Funktion "CreateSpatialType"

Führen Sie ein Python-Skript aus, das die ArcPy-Funktion CreateSpatialType auf einem beliebigen ArcMap-, ArcGIS Pro- oder ArcGIS Server-Computer aufruft, um den Typ "ST_Geometry", einen Subtype und Funktionen in einer PostgreSQL-Datenbank zu erstellen.

  1. Kopieren Sie die Bibliothek "st_geometry" aus dem DatabaseSupport-Verzeichnis in das ArcGIS Desktop-Installationsverzeichnis, und legen Sie sie im PostgreSQL-Verzeichnis lib ab. Stellen Sie sicher, dass Sie die richtige Bibliothek "st_geometry" für die von Ihnen verwendete Version von PostgreSQL und das Betriebssystem kopieren.
    • Der Speicherort des Verzeichnisses lib unter Linux kann je nach Installation von PostgreSQL variieren. Um den richtigen Speicherort Ihrer PostgreSQL-Installation zu ermitteln, führen Sie pg_config als postgres-Benutzer aus. Der für "PKGLIBDIR" zurückgegebene Wert ist das Verzeichnis lib, in dem Sie die st_geometry.so-Datei speichern müssen. Melden Sie sich als Stammverzeichnisbenutzer an, um die Datei in das Verzeichnis lib zu kopieren.
    • Wenn PostgreSQL unter einem Windows-Server installiert ist, fügen Sie die Datei st_geometry.dll in das Verzeichnis %PostgreSQL%\lib ein.
  2. Erstellen Sie eine Textdatei auf einem ArcGIS-Client-Computer, und kopieren Sie das folgende Skript in die Datei.
    """
    Name: create_spatial_type.py
    Description: Provide connection information to an Oracle or PostgreSQL database
    and create spatial type in the database.
    Type create_spatial_type.py -h or create_spatial_type.py --help for usage
    Author: Esri
    """
    
    # Import system modules
    import arcpy, os, optparse, sys
    
    
    # Define usage and version
    parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] )
    
    #Define help and options
    parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: ORACLE, or POSTGRESQL.")
    parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
    parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
    parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user")
    parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password")
    parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
    parser.add_option ("-p", dest="Password", type="string", default="", help="SDE user password")
    parser.add_option ("-t", dest="tablespace", type="string", default="", help="Default tablespace for SDE user")
    parser.add_option ("--path", dest="libpath", type="string", default="", help="path to the ST shape library including library file name.")
    
    # Check if value entered for option
    try:
    	(options, args) = parser.parse_args()
    
    	
    #Check if no system arguments (options) entered
    	if len(sys.argv) == 1:
    		print "%s: error: %s\n" % (sys.argv[0], "No command options given")
    		parser.print_help()
    		sys.exit(3)
    	
    
    	#Usage parameters for spatial database connection
    	database_type = options.Database_type.upper()
    	instance = options.Instance
    	account_authentication = options.account_authentication.upper()
    	password = options.Password 
    	tablespace = options.tablespace
    	database = options.Database.lower()
    	dbms_admin = options.Dbms_admin
    	dbms_admin_pwd = options.Dbms_admin_pwd
    	lib_path = options.libpath
    
    	if( database_type ==""):	
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")
    		parser.print_help()
    		sys.exit(3)		
    
    	# Local variables
    	instance_temp = instance.replace("\\","_")
    	instance_temp = instance_temp.replace("/","_")
    	instance_temp = instance_temp.replace(":","_")
    	Conn_File_NameT = instance_temp + "_" + database
    	
    	if os.environ.get("TEMP") == None:
    		temp = "c:\\temp"	
    	else:
    		temp = os.environ.get("TEMP")
    	
    	if os.environ.get("TMP") == None:
    		temp = "/usr/tmp"		
    	else:
    		temp = os.environ.get("TMP")  
    	
    	Connection_File_Name = Conn_File_NameT + ".sde"
    	Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde"
    	
    	
    	# Check for the .sde file and delete it if present
    	arcpy.env.overwriteOutput=True
    	if os.path.exists(Connection_File_Name_full_path):
    		os.remove(Connection_File_Name_full_path)
    	
    	
    	print "\nCreating Database Connection File...\n"	
    	# Process: Create Database Connection File...
    	# Usage:  out_file_location, out_file_name, DBMS_TYPE, instance, database, account_authentication, username, password, save_username_password(must be true)
    	arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=dbms_admin, password=dbms_admin_pwd, save_user_pass="TRUE")
    	for i in range(arcpy.GetMessageCount()):
    		if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
    			arcpy.AddReturnMessage(i)
    			arcpy.AddMessage("\n+++++++++")
    			arcpy.AddMessage("Exiting!!")
    			arcpy.AddMessage("+++++++++\n")
    			sys.exit(3)            
    		else:
    			arcpy.AddReturnMessage(i)
    			arcpy.AddMessage("+++++++++\n")	
    	
    	# Process: Create spatial type...
    	try:
    		print "Create spatial type...\n"
    		arcpy.CreateSpatialType_management(input_workspace=Connection_File_Name_full_path, sde_user_password=password, tablespace_name=tablespace, st_shape_library_path=lib_path)
    		print "after spatial type...\n"
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    		arcpy.AddMessage("+++++++++\n")
    	except:
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    			
    	if os.path.exists(Connection_File_Name_full_path):
    		os.remove(Connection_File_Name_full_path)
    			
    #Check if no value entered for option	
    except SystemExit as e:
    	if e.code == 2:
    		parser.usage = ""
    		print "\n"
    		parser.print_help()   
    		parser.exit(2)
    
  3. Speichern Sie die Datei mit der Erweiterung .py.
  4. Führen Sie das Skript aus, indem Sie für Ihre Site spezifische Optionen und Informationen bereitstellen.

    Dieses Skript erstellt beispielsweise den Typ "ST_Geometry" in der PostgreSQL-Datenbank "spdata" im Datenbank-Cluster "pgserve". Die Bibliothek "st_geometry" befindet sich im Verzeichnis /net/pgserve/opt/PostgreSQL/9.3/lib auf dem PostgreSQL-Server (pgserve).

    create_spatial_type.py --DBMS POSTGRESQL -i pgserve --auth DATABASE_AUTH -U postgres -P M3tsy$ -D spdata -p 3$@b0eg -t sde --path /net/pgserve/opt/PostgreSQL/9.3/lib/st_geometry.so
    

Der ST_Geometry-Typ, Subtypes und Funktionen werden im Schema des SDE-Benutzers in der von Ihnen angegebenen Datenbank erstellt.

ArcGIS Desktop

  • Startseite
  • Dokumentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Wir sind an Ihrer Meinung interessiert.
Copyright © 2021 Esri. | Datenschutz | Rechtliches