Suite

Fournir les informations d'identification pour la base de données Oracle lors de l'ouverture du fichier MXD ?


J'ai besoin d'ouvrir un fichier MXD à partir d'une boîte à outils Python (afin de pouvoir l'exporter automatiquement vers un PDF). Le fichier contient une connexion à une base de données Oracle 11g et je dois fournir les informations d'identification à la base de données. Aucune des méthodes que j'ai essayées jusqu'à présent n'a fonctionné - le PDF sort toujours sans aucune des données de la base de données. Comment puis-je indiquer à ArcGIS le nom d'utilisateur et le mot de passe à utiliser ?

Tentative 1 : Référencez un fichier SDE :

arcpy.env.workspace = "credentials.sde" mxd = arcpy.mapping.MapDocument(mxd_file) arcpy.mapping.ExportToPDF(mxd, pdf_file)

Tentative 2 : Créez un fichier SDE :

arcpy.CreateArcSDEConnectionFile_management ( out_folder_path = "C:Path", out_name = "temp.sde", server = "prod.world", service = "prod.world", account_authentication = "DATABASE_AUTH", username = "username", password = "password", save_username_password = "SAVE_USERNAME" ) mxd = arcpy.mapping.MapDocument(mxd_file) arcpy.mapping.ExportToPDF(mxd, pdf_file)

Je ne sais pas ce que je dois utiliser pour les paramètresserveuretun service? Lorsque je regarde les propriétés de connexion d'un fichier SDE créé à partir d'ArcCatalog, il n'a pas ces options. Au lieu de cela, il a l'option unique "Instance" avec la valeur "sde:oracle11g:prod.world" et "Oracle" sélectionné dans la liste déroulante "Plateforme de base de données" au lieu de "Serveur d'applications".

Tentative 3 : D'une manière ou d'une autre, faites en sorte que le MXD se souvienne du nom d'utilisateur et du mot de passe. Je ne sais pas comment faire cela, cependant.


Si vous utilisez un connexion directe, créez un fichier de connexion à votre base de données dansFenêtre Catalogue > Connexions à la base de données > Ajouter une connexion à la base de données. Dans ce cas votre Exemple serait quelque chose commesde:oracle11g:nom du serveur

Si vous utilisez un Connexion au service ArcSDE (pas de connexion directe), créez une connexion avecCréer un fichier de connexion ArcSDEoutil de géotraitement. Dans ce cas le Un service le paramètre serait le nom ou le port du service ArcSDE (par exemple, 5151).

Dans tous les cas vérifierEnregistrer le nom d'utilisateur et le mot de passe.

Ouvrez votre MXD avec ArcMap. Supprimez toute couche de votre base de données d'entreprise (oracle) et rajoutez-la à partir du fichier de connexion que vous avez créé à l'étape précédente.


En fin de compte, j'ai réussi à résoudre ce problème en utilisant une combinaison de la réponse de Farid Chers et du commentaire d'Eok Ns.

Tout d'abord, j'ai créé un fichier SDE avec le code suivant :

arcpy.CreateArcSDEConnectionFile_management ( out_folder_path = "C:Path", out_name = "temp.sde", server = " ", #Notez l'espace unique! service = "sde:oracle11g:prod.world", account_authentication = "DATABASE_AUTH" , username = "username", password = "password", save_username_password = "SAVE_USERNAME" )

Pour une raison quelconque, le simple fait de le créer à partir d'ArcCatalog ne fonctionnera pas, car seul le nom d'utilisateur et non le mot de passe est enregistré.

Ensuite, j'ai modifié mon MXD pour utiliser cette connexion. Je n'ai pas eu à retirer le calque et à l'ajouter à nouveau (comme l'a suggéré Farid). Il suffisait d'aller dans "Propriétés" -> "Source" -> "Changer de requête", et de passer au SDE que je viens de créer dans le menu déroulant "Connexion".


Voir la vidéo: Creating Oracle 11g Database manually In Linux (Octobre 2021).