#1 Fri 31 January 2014 11:37
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Arcgis 10.2 - titre mise en page automatique
bonjour,
je travaille sous arcgis 10.2
je vais devoir produire des cartes en séries selon ce mode:
j'active une couche, j'exporte la carte.
je désactive la couche , j'en active une autre et j'exporte la carte.
L'étendue d'affichage est toujours la même.
Je souhaiterai automatiser le titre de la carte présent sur la mise en page. Ce titre correspond au nom de la couche (activée) ou au nom du groupe de couche où se trouve la couche activée.
J'ai essayé avec la légende mais il n'est pas possible d'enlever les symboles.
J'ai vu qu'il était possible de faire du texte dynamique. Est-ce que cet outil répondrait à mes besoins ?
Si oui, où pourrais-je trouver des infos sur le code à appliquer ?
Merci d'avance pour votre aide
Cordialement
gregory
http://www.forumsig.org/showthread.php/ … utomatique
Dernière modification par ifremer (Fri 31 January 2014 16:16)
Hors ligne
#2 Fri 31 January 2014 15:41
- obone241
- Juste Inscrit !
- Lieu: Libreville
- Date d'inscription: 10 Jan 2014
- Messages: 9
Re: Arcgis 10.2 - titre mise en page automatique
Quand vous posez la question sur plusieurs forum, merci de le signaler. http://www.forumsig.org/showthread.php/ … utomatique
Hors ligne
#3 Fri 31 January 2014 16:18
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Re: Arcgis 10.2 - titre mise en page automatique
bonjour,
merci pour cette info, je viens de rajouter le lien dans le message original
gregory
Hors ligne
#4 Fri 31 January 2014 16:55
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: Arcgis 10.2 - titre mise en page automatique
Salut,
Tu peux essayer ce petit script :
Code:
import arcpy dossier_sortie = "C:\\" mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd)[0] grouplyr = arcpy.mapping.ListLayers(mxd, "nom d'un groupe contenant tes couches servant changer de titre et avec donc un nom de groupe unique bien évidemment", df)[0] ## pense à toutes les mettre dans ce groupe passer_premier_tour = True for lyr in arcpy.mapping.ListLayers(grouplyr): ## le premier lyr du grouplyr est le grouplyr lui même, pas très logique esri... if passer_premier_tour == True: passer_premier_tour = False else: lyr.visible = True for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"): if elm.name == "titre_carte": ## nomme ton objet text de titre de carte comme ca elm.text = lyr.name pdf_en_sortie = dossier_sortie + lyr.name + ".pdf" arcpy.mapping.ExportToPDF(mxd, pdf_en_sortie, 'PAGE_LAYOUT', resolution=300, image_quality='BEST', colorspace='RGB', \ compress_vectors='True', image_compression='ADAPTIVE', picture_symbol='VECTORIZE_BITMAP', convert_markers='False', \ embed_fonts='True', layers_attributes='NONE', georef_info='False', jpeg_compression_quality=80) lyr.visible = False
Dernière modification par lebon henri (Thu 06 February 2014 18:49)
Hors ligne
#5 Tue 04 February 2014 09:56
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Re: Arcgis 10.2 - titre mise en page automatique
bonjour,
merci lebon henri
Je vais essayé d'appliquer le script (ce sera mon premier script dans Arcgis)
gregory
Hors ligne
#6 Fri 07 February 2014 11:36
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Re: Arcgis 10.2 - titre mise en page automatique
merci lebon henri pour la modif, ça marche nickel
j'espère un jour pouvoir écrire un script utilisant le module arcpy.mapping car il a l'air puissant pour les taches répétitives
Dernière modification par ifremer (Fri 07 February 2014 11:48)
Hors ligne
#7 Fri 07 February 2014 15:59
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Re: Arcgis 10.2 - titre mise en page automatique
rebonjour,
j'ai un peu modifié le script
Code:
import arcpy ... ... dossier_sortie = "C:\\" ... ... mxd = arcpy.mapping.MapDocument("CURRENT") ... ... df = arcpy.mapping.ListDataFrames(mxd)[0] ... ... grouplyr = arcpy.mapping.ListLayers(mxd, "****", df)[0] ## pense à toutes les mettre dans ce groupe ... ... ... passer_premier_tour = True ... for lyr in arcpy.mapping.ListLayers(grouplyr): ## le premier lyr du grouplyr est le grouplyr lui même, pas très logique esri... ... if passer_premier_tour == True: ... passer_premier_tour = False ... else: ... lyr.visible = True ... ... ... for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"): ... if elm.name == "titre_carte": ## nomme ton objet text de titre de carte comme ca ... elm.text = grouplyr.name ... ... ... ... jpg_en_sortie = dossier_sortie + grouplyr.name + "_"+ lyr.symbology.valueField + ".jpg" ... ... arcpy.mapping.ExportToJPEG(mxd, jpg_en_sortie, 'PAGE_LAYOUT') ... ... lyr.visible = False
et je me demande s'il est possible de le faire évoluer en ayant plusieurs groupes de couche "année" comme présentées dans le fichier joint
Merci
greg
Hors ligne
#8 Fri 07 February 2014 17:58
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: Arcgis 10.2 - titre mise en page automatique
Salut,
en faisant simple tu peux faire ça
Code:
import arcpy dossier_sortie = "C:\\" mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd)[0] list_grouplyr = ["goupe1", "group2", etc....] ##tout les groupes doivent être invisibles for row in list_grouplyr: grouplyr = arcpy.mapping.ListLayers(mxd, row, df)[0] ## pense à toutes les mettre dans ce groupe grouplyr.visible = True passer_premier_tour = True for lyr in arcpy.mapping.ListLayers(grouplyr): ## le premier lyr du grouplyr est le grouplyr lui même, pas très logique esri if passer_premier_tour == True: passer_premier_tour = False else: lyr.visible = True for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"): if elm.name == "titre_carte": ## nomme ton objet text de titre de carte comme ca elm.text = grouplyr.name jpg_en_sortie = dossier_sortie + grouplyr.name + "_"+ lyr.symbology.valueField + ".jpg" ## tu peux concatener en plus l'année du groupe avec grouplyr.name arcpy.mapping.ExportToJPEG(mxd, jpg_en_sortie, 'PAGE_LAYOUT') lyr.visible = False grouplyr.visible = False
Hors ligne
#9 Tue 11 February 2014 14:41
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Re: Arcgis 10.2 - titre mise en page automatique
bonjour,
merci pour ce code. Je teste ça vendredi.
Bonne journée
Cordialement
gregory
Hors ligne
#10 Thu 13 February 2014 10:27
- ifremer
- Participant occasionnel
- Date d'inscription: 13 Dec 2005
- Messages: 47
Re: Arcgis 10.2 - titre mise en page automatique
superbe ça marche du tonnère, merci beaucoup car c'est du rapide avec ce script.
Pour le chemin d'accès du dossier de sortie, si j'ai un répértoire qu'avec des chifres
Code:
dossier_sortie = "D:\SIG\projets\RSL_rapport\carte\Mphyte\2013\\"
alors j'ai ce code d'erreur:
Code:
Runtime error Traceback (most recent call last): File "<string>", line 33, in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0x81 in position 39: ordinal not in range(128)
par contre ça marche si je mets du texte et du chiffre dans le dossier:
Code:
dossier_sortie = "D:\SIG\projets\RSL_rapport\carte\Mphyte\Mphyte2013\\"
Y-a t'il une solution pour pallier ce pb ?
Merci d'avance
gregory
Hors ligne
#11 Thu 13 February 2014 19:29
Re: Arcgis 10.2 - titre mise en page automatique
Bonjour,
Essayer
Code:
dossier_sortie = r'D:\SIG\projets\RSL_rapport\carte\Mphyte\2013\\'
cf. la doc Définition des chemins d'accès aux données dans Python
A+
Franck
PS: En essayant dans une console Python
Code:
toto = "\2" print toto
On peux voir le caractère correspondant...
Hors ligne