Hi,
I'm using arcpy.mp to export multiple layers at once, but having a trouble that legend is not updated.
Each layer is successfully exported as separate JPEG file by the code below. However, the legend attached to each exported output is all the same (legend of the first layer).
I usually run my script as standalone from Jupyter notebook. When I run the code below in python window within ArcGIS pro, legend was successfully updated in each exported output.
If anybody has any idea on why it cannot be done by standalone, I would really appreciate it.
ArcGIS Pro 2.2
# This is the code I ran
aprx = arcpy.mp.ArcGISProject(r"C:\Users\kenta\Documents\ArcGIS\Projects\CoHRE_Collaboration\CoHRE_Collaboration.aprx")
maps = aprx.listMaps("Oki")[0]
layers = maps.listLayers("mean*")
layout = aprx.listLayouts("Oki_layout")[0]
for layer in layers:
layer.visible=False
for layer in layers:
layer.visible = True
layout.exportToJPEG(r"C:\Users\kenta\Dropbox\Collaboration\CollaborationOki"+ "\\" + layer.name + ".JPEG")
layer.visible = False
Hi Kenta,
I know this is old but did you ever resolve this issue?
Cheers
Hello All,
I saw a couple of posts about this topic but no solution. My code makes a set of layers visible, one at a time, and exports a layout with each layer visible. I found that if I toggle the legend visibility as well, that I can get the legend to update as expected in the exported layout. To do this, I pulled the legend element (in my case, I have only one legend) from my layout object, changed the visible property to True, completed some other operations, then changed the legend visibility back to False.
Hope this helps someone. Code below.
Sydney
# Iterate through layer objects.
for lyr in layers_to_export:
# Make desired layer visible and make the legend visible.
lyr.visible = True
legend = layout.listElements("LEGEND_ELEMENT")[0]
legend.visible = True
if title_bool:
# Change title text
title = layout.listElements("TEXT_ELEMENT", title_element_name)[0]
title.text = title_start + lyr.name
# Export layout to PDF
layout.exportToPDF(os.path.join(output_dir, f"{lyr.name}.pdf"))
# Make layer invisible again, toggle legend off
lyr.visible = False
legend.visible = False
Hello,
I was having this issue with a for loop to export a series of maps. Your response with toggling legend visibility fixed my problem. Thanks!