ArcGIS prend en charge plusieurs offres de bases de données en tant que services Cloud reposant sur PostgreSQL. Vous pouvez créer une géodatabase d’entreprise dans la plupart des services de base de données Cloud PostgreSQL qu’Esri prend en charge.
Lorsque vous créez une géodatabase depuis ArcGIS AllSource 3.3, la version de la géodatabase est 11.3.0.
Remplir les prérequis
Avant de créer une géodatabase d’entreprise, vous devez créer l’instance de base de données dans votre compte Cloud, la configurer pour recevoir des connexions, créer un utilisateur sde ainsi qu’une structure et accorder à l’utilisateur sde les privilèges visant à créer une géodatabase.
Suivez les instructions indiquées par votre fournisseur de stockage Cloud pour effectuer ces étapes.
Vous devez également copier le fichier d’autorisation du code clé ArcGIS Server sur la machine Cloud lorsque vous installez le client ArcGIS que vous avez l’intention d’utiliser pour créer la géodatabase.
Consultez et effectuez les étapes préalables avant de créer une géodatabase :
- Assurez-vous que les versions ArcGIS que vous utilisez sont compatibles avec le type de service de base de données Cloud et la version que vous souhaitez utiliser.
- Créez l’instance de service de base de données dans la plateforme Cloud de votre choix.
- Créez un identifiant de connexion nommé sde pour l’instance de base de données.
- Accordez à l’utilisateur sde les privilèges nécessaires pour créer une géodatabase en fonction du type de service de base de données que vous utilisez.
- Créez une structure nommée sde dans l’instance de base de données et accordez l’autorité sur la structure à l’utilisateur sde.
- Installez le client ArcGIS, c’est à-dire ArcGIS AllSource ou ArcGIS Server, que vous utiliserez pour créer la géodatabase.
Installez le client ArcGIS dans la même plateforme Cloud et la même région que celles dans lesquelles le service de base de données fonctionne.
- Assurez-vous que l’instance de base de données est configurée de façon à autoriser les connexions à partir du client ArcGIS.
- Depuis le client ArcGIS que vous avez installé à l’étape 6, créez une connexion à une base de données à l’instance de base de données en vous connectant en tant qu’utilisateur sde.
Pour voir des exemples de chaînes d’instance, reportez-vous à la rubrique Connexions aux bases de données dans ArcGIS AllSource.
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.
- 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.
Vous pouvez maintenant créer une géodatabase dans l’instance de base de données dans le Cloud.
Créer une géodatabase dans l’instance de service de base de données
Si vous avez installé ArcGIS AllSource dans la même région Cloud que le service de base de données, vous pouvez exécuter l’outil de géotraitement Activer une géodatabase d’entreprise pour créer une géodatabase dans l’instance de base de données, comme décrit dans la première section ci-dessous.
Vous pouvez également exécuter la fonction EnableEnterpriseGeodatabase ArcPy dans une fenêtre Python ou exécuter un script Python à partir d’une installation ArcGIS AllSource ou ArcGIS Server dans le Cloud.
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 AllSource :
- Connectez-vous à la machine virtuelle dans l’environnement Cloud et lancez ArcGIS AllSource.
- Ouvrez l’outil Activer une géodatabase d’entreprise.
- Pour le paramètre Input Database Connection (Connexion à la base de données en entrée), indiquez le fichier de connexion à une base de données que vous avez créé dans le cadre des étapes préalables.
- 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.
- Cliquez sur Run (Exécuter).
L’instance de base de données contient maintenant une géodatabase.
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 la variable TEMP sur la machine virtuelle sur laquelle 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.
Exécuter la fonction EnableEnterpriseGeodatabase ArcPy
Pour exécuter les fonctions ArcPy, connectez-vous à l’une des machines client ArcGIS du Cloud et exécutez la fonction à partir d’une fenêtre Python.
- Connectez-vous à la machine virtuelle dans l’environnement Cloud sur laquelle ArcGIS AllSource ou ArcGIS Server est installé.
- Accédez à une fenêtre Python.
Pour plus d’informations sur l’accès à Python à partir des installations ArcGIS, consultez les informations suivantes :
- Fenêtre Python : informations sur l’ouverture de la fenêtre dans ArcGIS AllSource
- ArcGIS Server et ArcPy : informations sur l’accès à la fenêtre Python sur une installation ArcGIS Server
- Exécutez la fonction EnableEnterpriseGeodatabase ArcPy à partir d’une fenêtre Python.
Utilisez le fichier de connexion à une base de données que vous avez créé et faites référence au fichier d’autorisation ArcGIS Server que vous avez placé dans un emplacement accessible au cours des étapes préalables.
Dans l’exemple suivant, la fonction EnableEnterpriseGeodatabase est exécutée depuis une installation ArcGIS AllSource. Le fichier de connexion à la base de données (postresdbaas.sde) est stocké dans un dossier du projet ArcGIS AllSource (C:\proprojects\pg_proj) et le fichier d’autorisation (keycodes) dans C:\authcodes.
arcpy.management.EnableEnterpriseGeodatabase(r"C:\proprojects\pg_proj\postresdbaas.sde",r"C:\authcodes\keyfile")
Dans l’exemple suivant, la fonction est exécutée depuis une installation ArcGIS Server sur une machine Linux. Le fichier de connexion à une base de données (postresdbaas.sde) est stocké dans /usr/connectionfiles et le fichier de codes clés se trouve dans l’emplacement ArcGIS Server par défaut.
arcpy.management.EnableEnterpriseGeodatabase("/usr/connectionfiles/postresdbaas.sde","/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes")
L’instance de base de données contient maintenant une géodatabase.
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 la variable TEMP sur la machine virtuelle sur laquelle la fonction est exécutée. 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’un client ArcGIS
Pour créer la géodatabase en exécutant un script depuis ArcGIS AllSource (Desktop Standard ou Desktop Advanced) ou sur une machine ArcGIS Server, vous pouvez utiliser le script fourni ici.
Pour exécuter un script Python qui invoque les fonctions CreateDatabaseConnection et EnableEnterpriseGeodatabase ArcPy pour se connecter à la base de données et créer une géodatabase dans un service de base de données PostgreSQL, procédez comme suit :
- 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 instance.
Dans les exemples suivants, le fichier enable_gdb.py est exécuté à partir d’une machine virtuelle dans la même région Cloud que le service de base de données.
Dans cet exemple, le script est exécuté dans une installation ArcGIS Server sur une machine Linux. Il se connecte à une base de données nommée myauroradb dans une instance Amazon Aurora PostgreSQL dans la région us-west-2 (database-1-instance-1.zyxjtlpj9fer.us-west-2.rds.amazonaws.com). Le fichier de codes clés a été placé dans /usr/arcgis/auth sur la machine ArcGIS Server.
./enable_gdb.py --DBMS POSTGRESQL -i database-1-instance-1.zyxjtlpj9fer.us-west-2.rds.amazonaws.com --auth DATABASE_AUTH -u sde -p sdeP@ss -D myauroradb -l '/usr/arcgis/auth/keycodes'
Dans l’exemple suivant, le script est exécuté sur un ordinateur Microsoft Windows dans Azure. Il se connecte à une base de données nommée azurepgf dans l’instance Microsoft Azure Database for PostgreSQL (serveur flexible) my-pg-flex.postgres.database.azure.com. Le fichier de codes de clés se trouve dans l’emplacement ArcGIS Server par défaut.
enable_gdb.py --DBMS POSTGRESQL -i my-pg-flex.postgres.database.azure.com --auth DATABASE_AUTH -u sde -p EsDeeEpass -D azurepgf -l '\\Program Files\ESRI\License\sysgen\keycodes'
Dans l’exemple suivant, le script est exécuté depuis une machine sur laquelle ArcGIS AllSource est installé et le fichier de codes de clés a été placé dans Users\MyUser\Documents\AuthFiles\keycodes. Le script se connecte à une base de données (gcspostgres) dans une instance Google Cloud SQL for PostgreSQL accessible via l’adresse IP publique 98.765.43.210.
enable_gdb.py --DBMS POSTGRESQL -i 98.765.43.210 --auth DATABASE_AUTH -u sde -p Zpassw0rd -D gcspostgres -l '\\Users\MyUser\Documents\AuthFiles\keycodes'
Conseil :
Saisissez -h ou --help à l’invite de commande pour obtenir de l’aide sur la syntaxe de ce script.
L’instance de base de données contient maintenant une géodatabase.
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 la variable TEMP ou TMP sur la machine virtuelle où 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 ?