Estoy utilizando el módulo arcpy un bucle a través de una serie de características del mapa (áreas de la comunidad), zoom para ellos, el título del mapa con el nombre de la comunidad de la zona, y la exportación a pdf. El problema es que mientras que el título, la leyenda y características de línea de exportación, simbolizado capa de polígono no. Que todavía se muestra en la leyenda, pero el mapa no se muestran.
Intentando un par de comprobaciones de validez, he
- confirmó que la capa en cuestión es visible en el mapa de ArcMap que estoy empezando con el,
- trató de asegurarse de que la capa que está en la parte superior,
- instrucciones a mi código para hacer que la capa de la única visible antes de la exportación, y
- había Python lista el conjunto de capas que son visibles, justo antes de la exportación.
Ninguna de esas pruebas me dan algo mejor, o me dan ideas para el problema.
Mi código es el siguiente. Ya que yo también soy un relativo novato en la codificación con arcpy, cualquier sugerencia que usted tenga para las soluciones o la más elegante de la codificación sería muy bienvenido!
Mi código es:
import arcpy, os
myPath = r"C:\Users\<myname>\Documents\Heat Maps\\"
myMapPath = r"C:\Users\<myname>\Documents\Heat Maps\Map Output\\"
arcpy.env.workspace = myPath
myMap = arcpy.mapping.MapDocument(myPath + "Heat Maps of Need - v4-0 - Added Streets for Zoomed in Maps.mxd")
AllLayers = arcpy.mapping.ListLayers(myMap)
df = arcpy.mapping.ListDataFrames(myMap)[0]
lyrList = ["Needs Index"]
nComm = 77
# Clear visibility of all layers except for the community areas layer
for lyr in AllLayers:
if lyr.name = "Needs Index":
print "Turning on Layer " + lyr.name
lyr.visible = True
else:
lyr.visible = False
# Loop through specified layers and export to pdf
if os.path.exists(myPath + "Heat Maps of Need Indicators.pdf"):
os.remove(myPath + "Heat Maps of Need Indicators.pdf")
PDFdoc = arcpy.mapping.PDFDocumentCreate(myPath + "Heat Maps of Need Indicators.pdf")
for l in lyrList:
# Turn on proper heat layer
for lyr in AllLayers:
if lyr.name == l:
lyr.visible = True
arcpy.RefreshActiveView()
# Check which layers are visible
for lyr in AllLayers:
if True == lyr.visible:
print "Layer " + lyr.name + " is visible"
# Loop through all community areas
for c in range(1, nComm + 1): # Add 1, since the top value of the specified range is not included
# Run tasks specific to the community area in question
for lyr in AllLayers:
if lyr.name == "Community Areas":
# Get name of community area
SqlWhere = " \"AREA_NUMBE\" = \'" + str(c) + "\'"
CommunityRowObj = arcpy.SearchCursor(lyr, SqlWhere)
for row in arcpy.SearchCursor(lyr, SqlWhere):
CommunityName = row.getValue("COMMUNITY")
CommunityName = CommunityName.title()
# Zoom in to community area
arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", SqlWhere)
df.zoomToSelectedFeatures()
arcpy.SelectLayerByAttribute_management(lyr, "CLEAR_SELECTION")
for x in arcpy.mapping.ListLayoutElements(myMap):
if x.name == "Title":
x.text = "Heat Map of Needs Indicators\n" + l + " - " + CommunityName
arcpy.RefreshActiveView()
# Export the layer to PDF
arcpy.mapping.ExportToPDF(myMap, myMapPath + "Needs Heat Map - " + l + " - " + CommunityName + ".pdf")
PDFdoc.appendPages(myMapPath + "Needs Heat Map - " + l + " - " + CommunityName + ".pdf")
# Turn off current Needs Layer to clear it from the next one
for lyr in AllLayers:
if lyr.name == l:
lyr.visible = False
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
PDFdoc.saveAndClose()
del PDFdoc
del AllLayers