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.
Lorsque vous créez une géodatabase depuis ArcGIS Pro 3.4, la version de la géodatabase est 11.4.0.x.
Commencez par lire les 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 Microsoft Windows. Si PostgreSQL est installé sur un serveur Linux, reportez-vous à la rubrique Créer une géodatabase dans PostgreSQL sous Linux.
Conditions requises
Pour créer une géodatabase dans PostgreSQL, procédez comme suit :
- Vérifiez que les combinaisons d’ArcGIS, de PostgreSQL et des systèmes d’exploitation que vous voulez utiliser sont compatibles.
- 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.
- Si vous comptez créer ou activer la géodatabase dans une base de données PostgreSQL existante, assurez-vous que la structure publique existe.
L’une des tables du système de la géodatabase est créée dans la structure publique.
- 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 :
- Si vous êtes l’administrateur de la base de données PostgreSQL et l’administrateur de la géodatabase, suivez les instructions dans la section suivante.
- Si l’administrateur de la base de données et l’administrateur de la géodatabase sont deux personnes différentes, suivez les instructions pour l’administrateur PostgreSQL afin de créer la base de données et l’administrateur de la géodatabase pour créer la géodatabase.
Vous êtes l’administrateur de PostgreSQL et de la géodatabase
Si vous êtes à la fois administrateur de la base de données et de la 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.
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 :
- Procurez-vous et installez une version prise en charge de PostgreSQL, puis configurez la grappe de bases de données.
Consultez la documentation PostgreSQL pour obtenir des instructions concernant l’installation et la configuration de PostgreSQL.
- 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.
- Créez un tablespace dans la grappe de bases de données dans lequel stocker la 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 la 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 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.dll dans le répertoire PostgreSQL lib.
Vous pouvez télécharger le fichier st_geometry.dll depuis My Esri.
Remarque :
Le fichier st_geometry.dll requiert Microsoft Visual C++ Redistributable Package (x64). Reportez-vous à la rubrique Configuration requise des bases de données PostgreSQL pour connaître la version requise du paquetage. Si ce paquetage n’est pas présent sur le serveur PostgreSQL, téléchargez-le depuis le site de Microsoft et installez-le.
Placez le fichier st_geometry.dll correspondant à votre version de PostgreSQL dans le répertoire lib de PostgreSQL. Veillez à utiliser la bonne version du fichier.
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 :
- Démarrez ArcGIS Pro.
- 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.
- Sélectionnez PostgreSQL dans la liste déroulante Plateforme de la base de données.
- Saisissez le nom du serveur PostgreSQL dans la zone de texte Instance.
- Dans la zone de texte Database (Base de données), saisissez le nom de la base de données que vous souhaitez créer pour contenir la géodatabase.
Remarque :
Saisissez le nom de la base de données en minuscules. Les noms d’objet en majuscules et utilisant un mélange de majuscules et minuscules ne sont pas pris en charge pour 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.
- 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 superutilisateur est différent, saisissez ce nom dans la zone de texte Database Administrator (Administrateur de base de données).
Dans cette version, vous ne pouvez pas utiliser une connexion de superutilisateur postgres authentifiée par le système d’exploitation.
- Entrez le mot de passe du super-utilisateur postgres dans la zone de texte Mot de passe administrateur de base de données.
- 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 la grappe 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 la grappe 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 le privilège d’utilisation du rôle de groupe public, créer un rôle de groupe, accorder le privilège d’utilisation sur la structure sde à ce rôle et accorder le rôle de groupe à tous les rôles de connexion devant accéder à la géodatabase.
- 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.
- 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.
- Utilisez la liste déroulante Spatial Type (Type spatial) pour choisir le type spatial que la géodatabase utilise : ST_Geometry ou PostGIS.
- 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.
- 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)
- Enregistrez le fichier avec l’extension .py.
- 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 nommée pgprod, 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 appelé sde doté du statut de superutilisateur.
- 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.
- Procurez-vous et installez une version prise en charge de PostgreSQL, puis configurez la grappe de bases de données.
Consultez la documentation PostgreSQL pour obtenir des instructions concernant l’installation et la configuration de PostgreSQL.
- 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.
- Vous pouvez également créer un tablespace dans l’agrégat de bases de données dans lequel stocker la base de données.
- 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.
- Créez la base de données qui doit stocker la géodatabase.
- 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.
- 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 9.
- Pour configurer ST_Geometry, passez à l’étape suivante.
- Procurez-vous la bibliothèque ST_Geometry et placez-la dans le répertoire lib de PostgreSQL.
- Téléchargez le fichier st_geometry.dll 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.
Si l’option de téléchargement n’est pas présente, contactez l’administrateur de votre organisation ArcGIS.
Remarque :
Le fichier st_geometry.dll requiert Microsoft Visual C++ Redistributable Package (x64). Reportez-vous à la rubrique Configuration requise des bases de données PostgreSQL pour connaître la version requise du paquetage. Si ce paquetage n’est pas présent sur le serveur PostgreSQL, téléchargez-le depuis le site de Microsoft et installez-le.
- Placez le fichier st_geometry.dll dans le répertoire lib de PostgreSQL, sur la machine où vous avez installé PostgreSQL.
- Téléchargez le fichier st_geometry.dll depuis My Esri.
- 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 la 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 :
- Démarrez ArcGIS Pro.
- Connectez-vous à la base de données PostgreSQL en tant qu’utilisateur SDE.
Si l’utilisateur sde est un utilisateur authentifié de base de données, vous devez enregistrer le mot de passe de l’utilisateur sde dans la connexion à la base de données.
- Ouvrez l’outil Activer une géodatabase d’entreprise.
- Faites glisser le nouveau fichier de connexion dans le champ Input Database (Base de données en entrée).
- 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.
- 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, et les structures correspondantes, pour les utilisateurs qui créent, modifient et affichent les données, ainsi que pour les éditeurs et les utilisateurs dotés du rôle de consultation des données.
Exécuter un script Python à partir d’une machine client ArcGIS
Pour créer la géodatabase en exécutant un script depuis ArcGIS Pro (Desktop Standard ou Desktop Advanced) ou sur une machine ArcGIS Server, vous pouvez utiliser le script fourni ici.
Procédez comme suit pour exécuter un script Python et créer une géodatabase dans une base de données PostgreSQL existante :
- 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)
- Enregistrez le fichier avec l’extension .py.
- 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, et les structures correspondantes, pour les utilisateurs qui créent, modifient et affichent les données, ainsi que pour les éditeurs et les utilisateurs dotés du rôle de consultation des données.
Vous avez un commentaire à formuler concernant cette rubrique ?