français

Procédure : modifier des éléments de texte dans plusieurs documents ArcMap (.mxd) à la fois au moyen d’un script Python

Résumé

Lorsque vous travaillez sur des documents ArcMap (.mxd), il peut être nécessaire de remplacer ou de mettre à jour des éléments de texte à la suite de modifications de données ou de révisions. La fonction text.Split() dans Python permet de gagner du temps en remplaçant des éléments de texte dans plusieurs documents ArcMap (.mxd) à la fois, au lieu de mettre à jour le texte dans chaque document ArcMap.

Procédure

Servez-vous de l’outil de script Python dans ArcMap pour créer deux listes de texte réservées aux anciens et nouveaux éléments de texte des documents ArcMap (.mxd). Remplacez ensuite tout élément de texte correspondant à la première liste par le texte correspondant dans la deuxième liste. Pour ce faire, procédez comme suit.

  1. Créez un outil personnalisé en appliquant les étapes décrites dans le document suivant : Ajout d’un outil de script. Enregistrez le code Python ci-dessous dans un éditeur de texte, puis ajoutez le fichier en tant que fichier de script de l’outil.
import arcpy
from arcpy import env
import os
arcpy.env.overwriteOutput = True

#set path to the relevant folder
arcpy.env.workspace = Input_Workspace = arcpy.GetParameterAsText(0)
Output_Workspace = arcpy.GetParameterAsText(1)
Old_Text = arcpy.GetParameterAsText(2)
oldList = Old_Text.split(', ') #set the comma as separator for multiple inputs
New_Text = arcpy.GetParameterAsText(3)
newList = New_Text.split(', ')

#list the mxds of the workspace folder
for mxdname in arcpy.ListFiles("*.mxd"): 
    arcpy.AddMessage(mxdname)
#set the variable
    mxd = arcpy.mapping.MapDocument(Input_Workspace + "\\" + mxdname)
#replace elements that occur in the map document
    for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
        counter = 0
        for text in oldList:
            if text in elm.text:
                elm.text = elm.text.replace(text, newList[counter])
                arcpy.AddMessage('{} changed'.format(elm.text))
                counter = counter + 1
            else:
                counter = counter + 1

    mxd.saveACopy(Output_Workspace + "\\" + mxdname)
Le code Python ci-dessus comprend quatre instances GetParameterAsText pour les paramètres d’outil (Input_Workspace, Output_Workspace, Old_Text et New_Text). Basez-vous sur l’exemple suivant pour définir les paramètres dans la boîte de dialogue Add Script (Ajouter un script), puis cliquez sur Finish (Terminer).

The parameters of the tool
  1. Dans la fenêtre Catalog (Catalogue), double-cliquez sur le nom de l’outil personnalisé pour ouvrir l’outil.
  2. Lorsque la fenêtre de l’outil s’ouvre, ajoutez le dossier (espace de travail) contenant les documents ArcMap (.mxd), spécifiez le dossier en sortie, puis saisissez le texte à remplacer et le nouveau texte respectivement dans les champs Old_Text et New_Text. Délimitez chaque chaîne de texte par des virgules (voir ci-dessous).
The parameters of the custom tool
Remarque :
Le script est appliqué aux documents ArcMap (.mxd) par ordre alphabétique. Pour mettre à jour les éléments de texte, commencez par le premier document .mxd (dans l’ordre alphabétique) de façon à opérer les modifications voulues.
Remarque :
Veillez à ce que les éléments de texte à remplacer soient orthographiés de la même manière que dans chaque document .mxd, lors de la saisie du texte dans le champ Old_Text. Sinon, le script ne pourra pas reconnaître le texte et le changement ne sera donc pas répercuté dans le document .mxd en sortie.
  1. Cliquez sur OK pour exécuter l’outil. Les documents .mxd mis à jour sont créés et enregistrés dans le dossier en sortie indiqué.

Informations associées