Suite

Utiliser le nom de la couche avec un accent sur la lettre dans ArcPy ?

Utiliser le nom de la couche avec un accent sur la lettre dans ArcPy ?


J'ai beaucoup de MXD (plus de 200) et tous utilisent un fichier de formes de polygones "study_area_v00.shp". Dans le bloc de données, son nom est simplement "Study Area".

Chaque fois que nous modifions la limite du polygone, nous enregistrons une nouvelle copie dans "study_area_v01.shp" et ainsi de suite. Tous les attributs de la table sont les mêmes, rien ne change, sauf la limite.

Chaque fois que nous ouvrons tous les mxds et que nous modifions la source de données, un par un, car aucun des pythons que j'ai trouvés ne fonctionne correctement.

Ce script fonctionne très bien et modifie tous les fichiers de couches dans tous les MXD d'un dossier. Mais il y a un petit détail dans mon cas : mon nom de couche dans la table des matières a un mot avec accent (UNErea de Estudo) et le script ne le reconnaît pas. J'ai traduit tout le script pour que vous puissiez tous comprendre, mais je viens du Brésil et nous avons beaucoup de mots avec accent, et l'arcpy ne le comprend pas.

Pouvez-vous m'aider?

import arcpy, os inputPath = os.curdir outputPath = os.curdir #nom du fichier de couche que nous voulons changer, dans la table des matières layerfile = "Área de Estudo" #Chemin du nouveau fichier de formes FolderPath = r"T:… Utm " #Nom du nouveau fichier de formes, dans le chemin du dossier (sans '.shp') NewShapefile = "AreasEstudo_PDETrevo_v00" # Boucle dans chaque fichier MXD pour le nom de fichier dans os.listdir(inputPath): fullpath = os.path.join(inputPath, nom de fichier) ) if os.path.isfile(fullpath) : si filename.lower().endswith(".mxd") : mxd = arcpy.mapping.MapDocument(fullpath) df = arcpy.mapping.ListDataFrames(mxd)[0] pour lyr dans arcpy.mapping.ListLayers(mxd, "*", df) : si lyr.name == layerfile : imprime le layerfile lyr.replaceDataSource(FolderPath, "SHAPEFILE_WORKSPACE", NewShapefile) imprime le chemin complet mxd.save()

Merci pour le conseil.

Dans un autre forum, j'ai eu la réponse à mon problème. je viens de changer ça :

layerfile = "Área de Estudo" à layerfile = u'xc1rea de Estudo'

Voici un moyen de savoir comment python « lit » les accents :

charList = ['á','é','í','ó','ú','ã','õ','â','ê','ç'] print charList

ça montre ça :

('xe1', 'xe9', 'xed', 'xf3', 'xfa', 'xe3', 'xf5', 'xe2', 'xea', 'xe7' )

Maintenant je n'aurai plus ce problème !