Créer une géodatabase dans PostgreSQL sous Linux

Disponible avec une licence Standard ou Advanced.

Pour créer une géodatabase dans une base de données PostgreSQL, vous devez exécuter un outil de géotraitement ou un script Python à partir d’un client ArcGIS. Commencez par lire la section Conditions requises ci-après, puis conformez-vous aux instructions qui s’appliquent à votre situation.

Ces instructions s’appliquent aux installations PostgreSQL sur un serveur Linux. Si PostgreSQL est installé sur un serveur Microsoft Windows, reportez-vous à la rubrique Créer une géodatabase dans PostgreSQL sous Windows.

Conditions requises

Pour créer une géodatabase dans PostgreSQL, procédez comme suit :

  1. Vérifiez que les combinaisons d’ArcGIS, de PostgreSQL et des systèmes d’exploitation que vous voulez utiliser sont compatibles.
  2. Procurez-vous un fichier de codes de clés ArcGIS Server et placez-le dans un emplacement accessible depuis le client ArcGIS que vous allez utiliser pour créer la géodatabase.
  3. Déterminez la personne qui crée la géodatabase, car cela affecte la personne qui crée la base de données ainsi que l’outil que vous utilisez. Suivez les instructions correspondant à votre situation :

Vous êtes l’administrateur de PostgreSQL et de la géodatabase

Si vous êtes à la fois administrateur de base de données et de géodatabase et que vous connaissez le mot de passe des deux rôles de connexion, vous pouvez utiliser l’outil de géotraitement Créer la géodatabase d’entreprise ou un script Python qui appelle l’outil pour créer une géodatabase dans PostgreSQL.

L’outil Créer une géodatabase d’entreprise crée les objets de base de données nécessaires pour la géodatabase et accorde les privilèges requis. Des paramètres par défaut spécifiques sont utilisés à cette fin. Voici les opérations effectuées par l'outil Créer une géodatabase d'entreprise, ainsi que les paramètres utilisés :

  • Il crée une base de données à l’aide du modèle par défaut de PostgreSQL (template1).

    Si vous devez créer la base de données avec un autre modèle, pour utiliser le modèle postgis par exemple, vous devez créer la base de données avant d'exécuter cet outil. Lorsque vous exécutez l’outil Créer une géodatabase d’entreprise ou le script, précisez le nom de la base de données que vous avez créée depuis un autre modèle.

  • Cela permet de créer un rôle de connexion authentifiée à la base de données (sde) dans la grappe de bases de données et de lui accorder le statut de superutilisateur. Dans cette version, vous ne pouvez pas utiliser une connexion sde authentifiée par le système d’exploitation.

    L'utilisateur sde doit être un superutilisateur pour pouvoir créer la géodatabase.

  • Il crée une structure sde dans la base de données.

    Les tables systèmes, les vues, les fonctions et les procédures de la géodatabase sont stockées dans la structure sde.

  • Il définit l'utilisateur sde comme étant le propriétaire de la structure sde et accorde au rôle public un privilège d'utilisation sur la structure sde.

    Les rôles de connexion qui utiliseront la géodatabase doivent pouvoir accéder à la structure sde. Puisque les rôles de connexion à la géodatabase n’existent pas encore, cet outil accorde le privilège d’utilisation au public. Une fois la géodatabase créée, vous pouvez en renforcer la sécurité en retirant au public le privilège d'utilisation sur la structure sde et en l'accordant uniquement aux rôles et aux groupes de connexion devant accéder à la géodatabase.

  • Il crée une géodatabase.

Tout d’abord, vous (ou quelqu’un de votre service informatique) devez installer PostgreSQL et configurer l’agrégat de bases de données.

Installer et configurer PostgreSQL

Suivez les étapes ci-dessous pour configurer un agrégat de bases de données PostgreSQL pour stocker une géodatabase :

  1. Procurez-vous et installez une version prise en charge de PostgreSQL, puis configurez la grappe de bases de données.

    Vous pouvez télécharger des installations PostgreSQL à partir de My Esri. Si vous utilisez cette installation, aucun paramètre n’est requis pour utiliser PostgreSQL avec ArcGIS, sauf si vous souhaitez utiliser les paramètres régionaux et de localisation autres que les paramètres par défaut.

    Sinon, vous pouvez obtenir l’installation de PostgreSQL depuis une autre source.

    Consultez la documentation PostgreSQL pour plus d’instructions sur l’installation et la configuration de PostgreSQL.

  2. Configurez la grappe de bases de données pour accepter les connexions.

    Cela nécessite de modifier le fichier pg_hba.conf pour que la grappe de bases de données puisse accepter les connexions à distance.

  3. Créez un tablespace dans la grappe de bases de données dans laquelle stocker votre base de données. Si vous ne créez aucun tablespace, le tablespace pg_default est utilisé.

Ensuite, installez et configurez un client ArcGIS.

Installer un client ArcGIS

Vous (ou quelqu’un de votre service informatique) devez installer ArcGIS Pro (Desktop Standard ou Desktop Advanced) ou ArcGIS Server. Vous pouvez exécuter un script Python pour créer une géodatabase depuis un de ces clients. Pour exécuter l’outil de géotraitement Créer une géodatabase d’entreprise plutôt qu’un script, installez ArcGIS Pro.

Remarque :

Vous avez besoin d’un fichier de codes de clés ArcGIS Server (édition Enterprise) pour autoriser votre géodatabase dans la section suivante. Même si vous n’exécutez pas de script Python à partir d’une machine ArcGIS Server pour créer la géodatabase, vous devez installer et autoriser ArcGIS Server pour obtenir le fichier de codes de clés. Vous devrez peut-être copier le fichier de codes de clés depuis l’ordinateur ArcGIS Server vers un emplacement auquel l’outil de géotraitement Créer la géodatabase d’entreprise peut accéder.

Fournir l’accès à un type spatial

Pour stocker une géodatabase, PostgreSQL doit avoir accès à un type spatial. Vous pouvez fournir à l’agrégat de bases de données l’accès au type spatial ST_Geometry Esri ou installer PostGIS.

Si l’agrégat de bases de données a accès à un type spatial, vous pouvez créer une géodatabase.

ST_Geometry

Pour utiliser ST_Geometry dans la géodatabase, placez le fichier st_geometry.so dans le répertoire PostgreSQL lib. L’emplacement du répertoire lib sous Linux varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutez pg_config en tant qu’utilisateur postgres. La valeur qui est renvoyée pour PKGLIBDIR est le répertoire lib dans lequel vous devez placer la bibliothèque st_geometry.

Vous pouvez télécharger le fichier st_geometry.so depuis My Esri.

En tant qu’utilisateur racine, placez le fichier de bibliothèque st_geometry.so correspondant à la version de PostgreSQL dans le répertoire lib de PostgreSQL. Si vous ne placez pas la bibliothèque st_geometry.so appropriée dans le répertoire lib de PostgreSQL, vous ne pouvez pas créer de géodatabase.

L’agrégat de bases de données et le client ArcGIS sont maintenant prêts. Vous pouvez donc créer une géodatabase.

PostGIS

Pour utiliser les types spatiaux PostGIS dans la géodatabase, installez PostGIS sur l’agrégat de bases de données PostgreSQL. Veillez à installer la version de PostGIS compatible avec ArcGIS.

Créer une géodatabase

Exécutez l’outil Créer une géodatabase d’entreprise à partir de ArcGIS Pro, ou exécutez un script Python qui appelle l’outil à partir d’un ordinateur ArcGIS Pro ou ArcGIS Server pour créer une géodatabase.

Exécuter l'outil Créer une géodatabase d'entreprise

Procédez comme suit pour créer une géodatabase à l’aide de l’outil Créer la géodatabase d’entreprise dans ArcGIS Pro :

  1. Démarrez ArcGIS Pro.
  2. Ouvrez l'outil Créer une géodatabase d'entreprise.

    Vous pouvez accéder à cet outil, qui se trouve dans jeu d'outils Administration de la géodatabase de la boîte à outils Gestion des données.

  3. Sélectionnez PostgreSQL dans la liste déroulante Plateforme de la base de données.
  4. Saisissez le nom du serveur PostgreSQL dans la zone de texte Instance.
  5. Dans la zone de texte Base de données, tapez le nom de la base de données que vous souhaitez créer pour contenir votre géodatabase.
    Remarque :

    Saisissez le nom de la base de données en minuscules, en majuscules et les noms d’objet en minuscules et en majuscules à la fois ne sont pas compatibles avec les géodatabases dans PostgreSQL. Si vous entrez un nom de base de données en lettres majuscules ou en lettres majuscules et minuscules, ArcGIS les convertit en minuscules.

  6. Vous devez vous connecter au cluster de bases de données en tant que super-utilisateur postgres pour créer la base de données et d'autres objets. Par conséquent, la valeur par défaut de la zone de texte Administrateur de base de données est postgres.

    Si le nom de votre super-utilisateur postgres est différent, saisissez ce nom dans la zone de texte Administrateur de base de données.

    Dans cette version, vous ne pouvez pas utiliser une connexion de superutilisateur authentifiée par le système d’exploitation.

  7. Entrez le mot de passe du super-utilisateur postgres dans la zone de texte Mot de passe administrateur de base de données.
  8. L’administrateur de géodatabase doit s’appeler sde dans PostgreSQL. Par conséquent, la zone de texte Geodatabase Administrator (Administrateur de géodatabase) est déjà renseigné avec la valeur sde.
  9. Saisissez un mot de passe pour l'utilisateur sde dans la zone de texte Mot de passe administrateur de géodatabase.

    Si l'utilisateur sde existe déjà dans le cluster de bases de données, tapez le mot de passe de l'utilisateur existant ; une structure sde est créée dans la base de données. Si l'utilisateur n'existe pas encore, un utilisateur sde doté du mot de passe que vous indiquez est créé dans le cluster de bases de données et une structure correspondante est créée dans la base de données. L'autorisation USAGE est accordée sur la structure sde au rôle de groupe public.

    Conseil :

    Pour renforcer la sécurité de la structure après la création de la géodatabase, vous pouvez annuler l'autorisation USAGE du rôle de groupe public, créer un rôle de groupe, accorder l'autorisation USAGE sur la structure sde à ce rôle, puis accorder le rôle de groupe à tous les rôles de connexion devant accéder à la géodatabase.

  10. Si vous souhaitez utiliser par défaut pour la base de données un espace disque logique configuré, saisissez son nom dans la zone de texte Nom de l'espace de table.

    Cet outil ne permet pas de créer un tablespace ; vous devez soit spécifier un tablespace existant, soit laisser cette zone de texte vide. Si vous ne spécifiez aucun tablespace, la base de données est créée dans pg_default.

  11. Pour spécifier une valeur Authorization File (Fichier d’autorisation), recherchez et choisissez le fichier de codes clés qui a été créé lorsque vous avez autorisé ArcGIS Server (édition Enterprise).

    Le fichier est écrit vers \\Program Files\ESRI\License<release#>\sysgen lorsque vous installez ArcGIS Server sur Windows et vers /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen lorsque vous installez ArcGIS Server sur Linux. Copiez ce fichier dans un emplacement accessible au client à partir duquel vous créez la géodatabase. Si vous ne l’avez pas déjà fait, autorisez ArcGIS Server à créer ce fichier.

  12. Utilisez la liste déroulante Spatial Type (Type spatial) pour choisir le type spatial que la géodatabase utilise : ST_Geometry ou PostGIS.
  13. Cliquez sur Run (Exécuter).

Vous avez maintenant une géodatabase dans une base de données PostgreSQL.

Le fichier sde_setup.log contient les messages associés à la création de la géodatabase, qui est créé dans le répertoire spécifié pour votre variable TEMP sur l’ordinateur où ce script est exécuté. Si vous rencontrez un problème lors de la création d’une géodatabase, consultez ce fichier pour le résoudre.

Ensuite, créez un utilisateur autorisé à charger des données dans la géodatabase.

Exécuter un script Python à partir d’une machine client ArcGIS

Vous pouvez copier, enregistrer et exécuter le script fourni ici pour créer une géodatabase depuis ArcGIS Pro (Desktop Standard ou Desktop Advanced) ou ArcGIS Server.

  1. Créez un fichier texte sur l’ordinateur du client ArcGIS, puis copiez-y le script suivant :
    """
    Name: create_enterprise_gdb.py
    Description: Provide connection information to a DBMS instance and create an enterprise geodatabase.
    Type  create_enterprise_gdb.py -h or create_enterprise_gdb.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 10.1 and higher releases")
    
    #Define help and options
    parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS:  SQLSERVER, ORACLE, or POSTGRESQL.")
    parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
    parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
    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 ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema Type for SQL Server geodatabase, SDE or DBO. Default=SDE_SCHEMA")
    parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name")
    parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password")
    parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    parser.add_option ("--type", dest="Spatial_type", type="choice", choices=['ST_GEOMETRY', 'POSTGIS'], default="ST_GEOMETRY", help="Spatial Type for PostgreSQL geodatabase, ST_GEOMETRY or POSTGIS. Default=ST_GEOMETRY")
    
    # 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
    	database = options.Database.lower()	
    	account_authentication = options.Account_authentication.upper()
    	dbms_admin = options.Dbms_admin
    	dbms_admin_pwd = options.Dbms_admin_pwd
    	schema_type = options.Schema_type.upper()
    	gdb_admin = options.Gdb_admin
    	gdb_admin_pwd = options.Gdb_admin_pwd	
    	tablespace = options.Tablespace
    	license = options.Authorization_file
    	spatial_type = options.Spatial_type.upper()
    	
    	
    	if (database_type == "SQLSERVER"):
    		database_type = "SQL_SERVER"
    	
    	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)		
    		
    	if (license == ""):
    		print(" \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified."))
    		parser.print_help()
    		sys.exit(3)			
    	
    	if(database_type == "SQL_SERVER"):
    		if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"):
    			print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE."))
    			sys.exit(3)
    		if (schema_type == "DBO_SCHEMA" and gdb_admin != ""):
    			print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema..."))
    		if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""):
    			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication"))
    			sys.exit(3)
    		if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""):
    			print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication..."))	
    	else:
    		if (schema_type == "DBO_SCHEMA"):
    			print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." ))
    			
    		if( gdb_admin.lower() == ""):
    			print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified."))
    			sys.exit(3)
    	
    		if( dbms_admin == ""):
    			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!"))
    			sys.exit(3)
    
    		if (account_authentication == "OPERATING_SYSTEM_AUTH"):
    			print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." ))
    
    	# Get the current product license
    	product_license=arcpy.ProductInfo()
    	
    	
    	# Checks required license level
    	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
    		print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license.")
    		sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.")
    	else:
    		print("\n" + product_license + " license available!  Continuing to create...")
    		arcpy.AddMessage("+++++++++")
    	
    	
    	try:
    		print("Creating enterprise geodatabase...\n")
    		arcpy.management.CreateEnterpriseGeodatabase(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license, spatial_type=spatial_type)
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    		arcpy.AddMessage("+++++++++\n")
    	except:
    		for i in range(arcpy.GetMessageCount()):
    			arcpy.AddReturnMessage(i)
    			
    #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)
  2. Enregistrez le fichier avec l’extension .py.
  3. Exécutez le script en indiquant les options et informations propres à votre site.

    Dans l’exemple suivant, exécuté sur un ordinateur Windows, le fichier create_gdb.py est exécuté pour une grappe de bases de données pgprode, en tant que superutilisateur postgres avec le mot de passe N0pe3king!. Il génère une base de données appelée entgdb dans un tablespace appelé gis et crée le rôle de connexion sde avec le mot de passe Tgdbst@rtsh3r3. Un fichier de codes de clés se trouvant dans l’emplacement ArcGIS Server par défaut permet d’autoriser la géodatabase.

    create_gdb.py --DBMS POSTGRESQL -i pgprod -D entgdb --auth DATABASE_AUTH 
    -U postgres -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t gis -l '\\Program Files\ESRI\License\sysgen\keycodes'

    Dans cet exemple, le même script est exécuté sur un ordinateur Linux :

    ./create_gdb.py --DBMS POSTGRESQL -i pgprod -D entgdb --auth DATABASE_AUTH 
    -U postgres -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t gis -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'

    Conseil :

    Saisissez -h ou --help à l'invite de commande pour obtenir de l'aide sur la syntaxe.

Vous avez maintenant une géodatabase dans une base de données PostgreSQL.

Le fichier sde_setup.log contient les messages associés à la création de la géodatabase, qui est créé dans le répertoire spécifié pour votre variable TEMP ou TMP sur l’ordinateur où ce script est exécuté. Si vous rencontrez un problème lors de la création d’une géodatabase, consultez ce fichier pour le résoudre.

Ensuite, créez un utilisateur autorisé à charger des données dans la géodatabase.

L’administrateur de PostgreSQL crée la base de données ; l’administrateur de géodatabase crée la géodatabase.

Si la personne qui crée la géodatabase n’a pas accès au mot de passe (superutilisateur postgres) de l’administrateur de la base de données, ce dernier doit créer la base de données, le rôle de connexion sde et la structure sde. Ensuite, l’administrateur de la géodatabase peut se connecter à la base de données avec l’identifiant de connexion sde et créer une géodatabase avec l’outil de géotraitement Activer la géodatabase de l’entreprise ou un script Python qui appelle l’outil.

L'outil Activer une géodatabase d’entreprise utilise en entrée un fichier de connexion à une base de données et crée les vues, les fonctions, les procédures et les tables système de la géodatabase dans la structure sde. L’administrateur de base de données doit configurer les informations suivantes dans la grappe de bases de données PostgreSQL avant d’exécuter l’outil :

  • Un rôle de connexion authentifiée à la base de données appelé sde doté du statut de superutilisateur Dans cette version, vous ne pouvez pas utiliser une connexion sde authentifiée par le système d’exploitation.
  • Une base de données.
  • Une structure sde dans la base de données à laquelle l’identifiant de connexion sde est autorisé à accéder.
  • Un type spatial - Soit la bibliothèque st_geometry doit se trouver dans le répertoire d’installation PostgreSQL du dossier lib, soit PostGIS doit être configuré dans la base de données.

Installer et configurer PostgreSQL et un type spatial

Tout d’abord, l’administrateur de base de données doit préparer PostgreSQL pour le stockage d’une géodatabase.

Pour configurer l’agrégat de bases de données PostgreSQL en tant qu’administrateur de base de données, procédez comme suit :

Remarque :

Tous les noms d'objets de base de données doivent comporter uniquement des minuscules.

  1. Procurez-vous et installez une version prise en charge de PostgreSQL, puis configurez la grappe de bases de données.

    Vous pouvez télécharger des installations PostgreSQL à partir de My Esri. Sinon, vous pouvez obtenir l’installation de PostgreSQL depuis une autre source.

    Consultez la documentation PostgreSQL pour plus d’instructions sur l’installation et la configuration de PostgreSQL.

  2. Configurez la grappe de bases de données pour accepter les connexions.

    Cela nécessite de modifier le fichier pg_hba.conf pour que la grappe de bases de données puisse accepter les connexions à distance.

  3. Définissez les variables d'environnement suivantes pour l'utilisateur postgres si elles ne sont pas déjà définies correctement :

    • PGDATA - Cette variable doit être définie par l’installation de PostgreSQL. Si tel n’est pas le cas, définissez-la sur l’emplacement du répertoire de données de PostgreSQL. (Il s’agit du répertoire d’installation de PostgreSQL.)
    • PATH - Définissez la variable PATH pour qu’elle contienne postgresql/bin.
    • LD_LIBRARY_PATH - Si vous devez configurer le type ST_Geometry pour la géodatabase, définissez la variable LD_LIBRARY_PATH sur le répertoire lib de PostgreSQL. L’emplacement du répertoire lib varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutez pg_config en tant qu’utilisateur postgres. Définissez LD_LIBRARY_PATH à la valeur renvoyée par PKGLIBDIR.

  4. Vous pouvez également créer un tablespace dans l’agrégat de bases de données dans lequel stocker votre base de données.
  5. Créez un rôle de connexion appelé sde et ayant le statut de superutilisateur.

    Conseil :

    Si l'administrateur de géodatabase ne doit pas supprimer de connexions à la base de données, vous pouvez retirer le statut de superutilisateur du rôle sde après la création de la géodatabase.

  6. Créez la base de données qui doit stocker la géodatabase.
  7. Créez une structure nommée sde dans la base de données et accordez au rôle de connexion sde des privilèges sur cette structure.
  8. Activez un type de données spatiales dans la base de données.
    • Pour configurer PostGIS dans la base de données, reportez-vous aux instructions de la documentation PostGIS ; passez ensuite à l’étape 10.
    • Pour configurer ST_Geometry, passez à l’étape suivante.
  9. Procurez-vous la bibliothèque ST_Geometry et placez-la dans le répertoire lib de PostgreSQL.
    1. Téléchargez le fichier st_geometry.so depuis My Esri.

      Téléchargez la bibliothèque correspondant à la version de PostgreSQL que vous utilisez. Si vous utilisez une bibliothèque inappropriée, la création de la géodatabase échoue.

    2. Connectez-vous en tant qu’utilisateur racine au serveur sur lequel PostgreSQL est installé.
    3. Placez le fichier st_geometry.so dans le répertoire PostgreSQL de lib.

      L’emplacement du répertoire lib sous Linux varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutez pg_config en tant qu’utilisateur postgres. La valeur qui est renvoyée pour PKGLIBDIR est le répertoire lib dans lequel vous devez placer la bibliothèque st_geometry.

  10. Communiquez à l'administrateur de géodatabase les informations de connexion à la base de données.

    L’administrateur de géodatabase doit connaître le nom de la grappe de bases de données, le nom de la base de données et le mot de passe du rôle de connexion sde.

La base de données est maintenant créée et l'administrateur de géodatabase peut installer un client ArcGIS et créer une géodatabase.

Installer un client ArcGIS

L’administrateur de la géodatabase a besoin d’un client ArcGIS depuis lequel la géodatabase est créée : ArcGIS Pro (Desktop Standard ou Desktop Advanced) ou ArcGIS Server.

Remarque :

Vous avez besoin d’un fichier de codes de clés ArcGIS Server (édition Enterprise) pour autoriser votre géodatabase dans la section suivante. Même si vous n’exécutez pas de script Python à partir d’une machine ArcGIS Server pour créer la géodatabase, vous devez installer et autoriser ArcGIS Server pour obtenir le fichier de codes de clés. Vous devrez peut-être copier le fichier de codes de clés depuis l’ordinateur ArcGIS Server vers un emplacement auquel l’outil de géotraitement Activer une géodatabase d’entreprise peut accéder.

Une fois le client ArcGIS installé, vous pouvez établir une connexion à la base de données et créer une géodatabase.

Créer une géodatabase

L’administrateur de géodatabase peut exécuter l’outil Activer une géodatabase d’entreprise depuis ArcGIS Pro (Desktop Standard ou Desktop Advanced), ou exécuter un script Python à partir de ArcGIS Pro ou ArcGIS Server qui appelle l’outil pour créer une géodatabase dans la base de données existante.

Exécutez l'outil Activer une géodatabase d'entreprise.

Procédez comme suit pour créer une géodatabase à l’aide de l’outil Activer une géodatabase d’entreprise dans ArcGIS Pro :

  1. Démarrez ArcGIS Pro.
  2. Connectez-vous à la base de données PostgreSQL en tant qu’utilisateur SDE.

    N’oubliez pas d’enregistrer le mot de passe de l’utilisateur sde dans la boîte de dialogue Connexion à la base de données.

  3. Ouvrez l'outil Activer une géodatabase d'entreprise.
  4. Faites glisser votre nouveau fichier de connexion dans le champ Base de données en entrée.
  5. Pour spécifier une valeur Authorization File (Fichier d’autorisation), recherchez et choisissez le fichier de codes clés qui a été créé lorsque vous avez autorisé ArcGIS Server (édition Enterprise).

    Le fichier est écrit vers \\Program Files\ESRI\License<release#>\sysgen lorsque vous installez ArcGIS Server sur Windows et vers /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen lorsque vous installez ArcGIS Server sur Linux. Copiez ce fichier dans un emplacement accessible au client à partir duquel vous créez la géodatabase. Si vous ne l’avez pas déjà fait, autorisez ArcGIS Server à créer ce fichier.

  6. Cliquez sur Run (Exécuter).

Vous avez maintenant une géodatabase dans une base de données PostgreSQL.

Le fichier sde_setup.log contient les messages associés à la création de la géodatabase, qui est créé dans le répertoire spécifié pour votre variable TEMP sur l’ordinateur où ce script est exécuté. Si vous rencontrez un problème lors de la création d’une géodatabase, consultez ce fichier pour le résoudre.

Ensuite, l'administrateur de base de données peut créer des rôles de connexion dans la base de données pour les utilisateurs qui créent, modifient et affichent les données.

Exécuter un script Python

Pour créer la géodatabase en exécutant un script à partir d’une installation ArcGIS Server, ArcGIS Desktop ou ArcGIS Engine sur une machine Windows, vous pouvez utiliser le script fourni ici.

Pour exécuter un script Python en vue de la création d’une géodatabase dans PostgreSQL, procédez comme suit :

  1. Créez un fichier texte sur l’ordinateur du client ArcGIS, puis copiez-y le script suivant :

    """
    Name: enable_enterprise_gdb.py
    Description: Provide connection information to an enterprise database
    and enable enterprise geodatabase.
    Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage
    """
    
    # 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=['SQL_SERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS:  SQL_SERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.")
    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="User", type="string", default="", help="Geodatabase administrator user name")
    parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase  administrator password")
    parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
    parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
    
    
    # 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()
    	username = options.User.lower() 
    	password = options.Password	
    	database = options.Database.lower()
    	license = options.Authorization_file
    
    
    	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)		
    		
    	if (license == ""):
    		print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    
    		
    	# Get the current product license
    	product_license=arcpy.ProductInfo()
    	
    	if (license == ""):
    		print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
    		parser.print_help()
    		sys.exit(3)
    	
    	# Checks required license level
    	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
    		print "\n" + product_license + " license found!" + "  Enabling enterprise geodatabase functionality requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license."
    		sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.")
    	else:
    		print "\n" + product_license + " license available!  Continuing to enable..."
    		arcpy.AddMessage("+++++++++")
    	
    	# Local variables
    	instance_temp = instance.replace("\\","_")
    	instance_temp = instance_temp.replace("/","_")
    	instance_temp = instance_temp.replace(":","_")
    	Conn_File_NameT = instance_temp + "_" + database + "_" + username    
    	
    	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, instnace, 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=username, password=password, 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: Enable geodatabase...
    	try:
    		print "Enabling Enterprise Geodatabase...\n"
    		arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license)
    		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)

  2. Enregistrez le fichier avec l’extension .py.
  3. Exécutez le script en indiquant les options et informations propres à votre site.

    Dans l’exemple suivant, le fichier enable_gdb.py est exécuté depuis un ordinateur Windows. Le nom de la base de données est spdata et il existe dans un agrégat de bases de données nommé pgprod. La connexion est établie avec l’identifiant de connexion sde et le mot de passe Tgdbst@rtsh3r3. Un fichier de codes clés se trouvant dans l’emplacement ArcGIS Server par défaut sur Windows permet d’autoriser la géodatabase.

    enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '\\Program Files\ESRI\License\sysgen\keycodes'

    Dans cet exemple, le même fichier est exécuté depuis un ordinateur Linux, et le fichier de codes clés est dans l’emplacement par défaut ArcGIS Server sur Linux.

    ./enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH 
    -u sde -p Tgdbst@rtsh3r3 -D spdata -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'

    Conseil :

    Saisissez -h ou --help à l'invite de commande pour obtenir de l'aide sur la syntaxe.

Vous avez maintenant une géodatabase dans une base de données PostgreSQL.

Le fichier sde_setup.log contient les messages associés à la création de la géodatabase ; il est créé dans le répertoire spécifié pour votre variable TEMP ou TMP sur l’ordinateur sur lequel le script est exécuté. Si vous rencontrez un problème lors de la création d’une géodatabase, consultez ce fichier pour le résoudre.

Ensuite, l'administrateur de base de données peut créer des rôles de connexion dans la base de données pour les utilisateurs qui créent, modifient et affichent les données.