Pages: 1
- Sujet précédent - Modifier nom couche par nom de la classe d'entité - ds plusieurs Mxd - Sujet suivant
#1 Tue 21 March 2017 15:57
- jeremiedelefosse
- Participant occasionnel
- Lieu: Yvelines
- Date d'inscription: 18 Nov 2012
- Messages: 38
Modifier nom couche par nom de la classe d'entité - ds plusieurs Mxd
Bonjour à tous,
Je travaille actuellement sur la ré-organisation de nos GBD et MXD.
Je souhaite :
- renommer plusieurs noms de classe d'entité => OK
- re-pointer leur chemin dans plusieurs MXD => OK (https://georezo.net/forum/viewtopic.php?id=92939)
Pb: le nom de la couche dans la table des matières des mxd reste inchangé (c’est l'ancien nom de la classe d'entité qui est affiché par défaut et qui du coup ne correspond plus avec le nouveau nom de ma classe d’entité. (Ps: la couche est visible/utilisable et son chemin est exacte)
Je cherche donc un outil/script qui permettrai de réattribuer le nom d’une couche dans un MXD par le nom de la classe d’entité qui lui correspond.
En espérant, que la question n'est pas déjà été traiter dans une autre discussion
D'avance Merci
CDt
Hors ligne
#2 Wed 22 March 2017 10:27
- jeremiedelefosse
- Participant occasionnel
- Lieu: Yvelines
- Date d'inscription: 18 Nov 2012
- Messages: 38
Re: Modifier nom couche par nom de la classe d'entité - ds plusieurs Mxd
Re bonjour, je me lance en pythin, j'en suis à la:
Code:
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Users\Desktop\XXXX.mxd")
df = arcpy.mapping.ListDataFrames(mxd,"")[0]
listlayer= arcpy.mapping.ListLayers(mxd, "", df)
for layer in listlayer:
print layer.name
print layer.datasetName
del mxdMais je n'arrive pas a remplacer layer.name par layer.datasetName
Merci d'avance
Hors ligne
#3 Wed 22 March 2017 18:09
- maxou.lebourg
- Participant occasionnel
- Lieu: Paris
- Date d'inscription: 15 Mar 2017
- Messages: 17
Re: Modifier nom couche par nom de la classe d'entité - ds plusieurs Mxd
Salut,
test quelque chose dans ce style:
Code:
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:UsersDesktopXXXX.mxd")
df = arcpy.mapping.ListDataFrames(mxd,"")[0]
listlayer= arcpy.mapping.ListLayers(mxd, "", df)
listlayer_b = [] #j'initialise cette liste car on va ajouter des éléments via une bouche et la fonction .append
for layer in listlayer:
#print layer.name
#print layer.datasetName
#!!!! la fonction ListLayers est dangereuse car elle liste aussi les groupes de couches, il faut donc les enlever
if layer.isFeatureLayer: #si l'élement de la list est une couche shp
listlayer_b.append(layer) #listlayer_b contient donc que les couches sig
else:
pass
#on s'occupe maintenant de changer le nom de la couche dans ArcMap si elle est différente du nom dans ta gbd
for layer in listlayer_b:
if layer.name != layer.datasetName:
layer.name = layer.datasetName
else:
pass
del mxdvoilà ![]()
j'ai utilisé cette manip' pour un script qui avait grosso modo le même objectif
cette partie là marchait plutôt bien (le reste par contre ^^")
ATTENTION : si dans ton mxd tu as renommé des couches pour ta légende, ce script n'en a littéralement rien à f...faire, il est censé remplacer tout ce qu'il trouve
tu fais signe si ça ne marche pas (ou si ça marche d'ailleurs)
Bon code.
Hors ligne
#4 Mon 03 April 2017 10:51
- jeremiedelefosse
- Participant occasionnel
- Lieu: Yvelines
- Date d'inscription: 18 Nov 2012
- Messages: 38
Re: Modifier nom couche par nom de la classe d'entité - ds plusieurs Mxd
Super ça marche très bien !!
Merci
Hors ligne
Pages: 1
- Sujet précédent - Modifier nom couche par nom de la classe d'entité - ds plusieurs Mxd - Sujet suivant


