ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Aide
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS Desktop

Un SIG professionnel complet

ArcGIS Enterprise

SIG dans votre entreprise

ArcGIS for Developers

Outils de création d'applications de localisation

ArcGIS Solutions

Modèles d'applications et de cartes gratuits pour votre secteur d'activité

ArcGIS Marketplace

Téléchargez des applications et des données pour votre organisation.

  • Documentation
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

ArcMap

  • Accueil
  • Commencer
  • Carte
  • Analyser
  • Gérer les données
  • Outils
  • Extensions

Ajouter le type ST_Geometry à une base de données Oracle

Disponible avec une licence Standard ou Advanced.

  • Utilisez l'outil de géotraitement Créer le type spatial.
  • Utiliser la fonction CreateSpatialType

Vous pouvez ajouter le type, le sous-type et les fonctions Esri ST_Geometry à votre base de données Oracle à l'aide de l'outil de géotraitement Créer le type spatial ou un script Python qui appelle la fonction ArcPy CreateSpatialType.

L'outil et la fonction créent tous les deux un utilisateur nommé sde dans la base de données. L'utilisateur sde possède le type, les sous-types, les fonctions et les tables ST_Geometry.

Remarque :

Le type ST_Geometry requiert le paquetage distribuable Microsoft Visual C++ 2013 (x64) lorsqu'il est déployé sur un serveur Windows. Si le paquetage distribuable Microsoft Visual C++ 2013 (x64) n'est pas présent sur le serveur Oracle, téléchargez-le depuis le site de Microsoft et installez-le.

Utilisez l'outil de géotraitement Créer le type spatial.

Les étapes suivantes expliquent comment exécuter l'outil de géotraitement Créer le type spatial pour installer le type ST_Geometry dans une base de données Oracle :

  1. Copiez la bibliothèque libst_shapelib (st_shapelib pour Windows) du répertoire DatabaseSupport dans l'emplacement d'installation ArcGIS Desktop et placez-la dans un emplacement sur le serveur Oracle.

    Veillez à utiliser la bibliothèque appropriée au système d'exploitation de votre serveur Oracle.

    Le répertoire dans lequel vous placez la bibliothèque sur le serveur doit être accessible depuis la machine sur laquelle vous allez exécuter l'outil Créer un type spatial ou le script. Si vous placez la bibliothèque sur une machine UNIX ou Linux, vérifiez que l'administrateur de base de données dispose d'un accès en écriture sur le répertoire et qu'il exécute les privilèges sur le fichier de bibliothèque.

  2. Démarrez ArcCatalog ou ArcMap, ouvrez la fenêtre Catalogue et connectez-vous à la base de données en tant qu’administrateur de la base de données sys Oracle.

    Vous créez ainsi un fichier .sde dans C:\Users\<user_name>\AppData\Roaming\ESRI\Desktop<version_number>\ArcCatalog.

  3. Ouvrez l’outil Créer le type spatial.

    Vous pouvez utiliser la fenêtre Rechercher pour trouver l'outil ou l'ouvrir à partir du jeu d'outils Espace de travail de la boîte à outils Gestion des données.

  4. Ajoutez la connexion à la base de données que vous avez créée à l'étape 3 dans la zone de texte Base de données en entrée.
  5. Entrez le mot de passe de l'utilisateur de base de données sde dans la zone de texte Mot de passe utilisateur SDE.
  6. Si vous souhaitez créer un espace de table par défaut pour l'utilisateur sde, entrez-le dans la zone de texte Nom de l'espace de table.

    Un espace de table de 400 Mo est créé dans l'emplacement de stockage par défaut Oracle. Si vous souhaitez contrôler l'endroit où l'espace de table est créé ou sa taille, créez-le d'abord dans Oracle, puis spécifiez l'espace de table existant dans la zone de texte Nom de l'espace de table. L'outil définit cet espace de table prédéfini comme espace de table par défaut pour l'utilisateur sde.

  7. Accédez à ou saisissez le chemin d'accès à la bibliothèque de formes ST_Geometry. Il s'agit du chemin d'accès au répertoire sur le serveur Oracle où vous avez placé le fichier libst_shapelib.so ou st_shapelib.dll, y compris le nom du fichier.

    Par exemple, si vous avez placé le fichier libst_shapelib.so dans le répertoire libraries sur le serveur Linux boxy, vous pouvez saisir/boxy/libraries/libst_shapelib.so.

  8. Cliquez sur OK pour exécuter l'outil.

Le type, les sous-types et les fonctions ST_Geometry sont créés dans la structure de l'utilisateur sde et une entrée est créée dans Oracle pour la bibliothèque de formes.

Si vous comptez utiliser la fonction ST_Transform pour procéder à des transformations géographiques, vous devez copier le dossier pedata de votre répertoire d'installation ArcMap, le placer sur le serveur Oracle et définir une variable d'environnement PEDATAHOME sur le serveur qui pointe vers cet emplacement.

Utiliser la fonction CreateSpatialType

Vous exécutez un script Python qui appelle la fonction ArcPy CreateSpatialType sur n’importe quelle machine ArcMap, ArcGIS Pro ou ArcGIS Server pour créer le type, sous-type et les fonctions ST_Geometry Esri dans une base de données Oracle.

  1. Copiez la bibliothèque libst_shapelib (st_shapelib pour Windows) du répertoire DatabaseSupport dans l'emplacement d'installation ArcGIS Desktop et placez-la dans un emplacement sur le serveur Oracle.

    Veillez à utiliser la bibliothèque appropriée au système d'exploitation de votre serveur Oracle.

    Le répertoire dans lequel vous placez la bibliothèque sur le serveur doit être accessible depuis la machine sur laquelle vous allez exécuter l'outil Créer un type spatial ou le script. Si vous placez la bibliothèque sur une machine UNIX ou Linux, vérifiez que l'administrateur de base de données dispose d'un accès en écriture sur le répertoire et qu'il exécute les privilèges sur le fichier de bibliothèque.

  2. Créez un fichier texte sur l'ordinateur du client ArcGIS, puis copiez-y le script suivant.
    """
    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. Enregistrez le fichier avec l'extension .py.
  4. Exécutez le script en indiquant les options et informations propres à votre site.

    Par exemple, ce script crée le type ST_Geometry dans l'instance Oracle oserve/orcl et la bibliothèque ST_Geometry se trouve dans le répertoire /ora/shape du serveur Oracle (oserve).

    create_spatial_type.py --DBMS ORACLE -i oserve/orcl --auth DATABASE_AUTH -U sys -P M3tsy$ -p 3$@b0eg -t sde --path /net/oserve/ora/shape/libst_shapelib.so
    

Le type, les sous-types et les fonctions ST_Geometry sont créés dans la structure de l'utilisateur sde et une entrée est créée dans Oracle pour la bibliothèque de formes.

Si vous comptez utiliser la fonction ST_Transform pour procéder à des transformations géographiques, vous devez copier le dossier pedata de votre répertoire d'installation ArcMap, le placer sur le serveur Oracle et définir une variable d'environnement PEDATAHOME sur le serveur qui pointe vers cet emplacement.

Rubriques connexes

  • ST_Geometry dans Oracle

ArcGIS Desktop

  • Accueil
  • Documentation
  • Support

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

A propos d'Esri

  • A propos de la société
  • Carrières
  • Blog d’Esri
  • Conférence des utilisateurs
  • Sommet des développeurs
Esri
Donnez-nous votre avis.
Copyright © 2019 Esri. | Confidentialité | Légal