5 votos

¿Por qué capa falta de exportación a PDF de ArcPy?

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

  1. confirmó que la capa en cuestión es visible en el mapa de ArcMap que estoy empezando con el,
  2. trató de asegurarse de que la capa que está en la parte superior,
  3. instrucciones a mi código para hacer que la capa de la única visible antes de la exportación, y
  4. 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

1voto

UnkwnTech Puntos 21942

Si mi comentario no ayuda, o en todo caso, puedo sugerir que los siguientes pueden proporcionar una forma un poco más elegante para acercar en la medida de una donde resultado de cláusula. Lo hizo a su manera al principio, pero que abajo han estado haciendo durante bastante tiempo.

lyr.definitionQuery = SqlWhere
df.extent = lyr.getSelectedExtent(False)

1voto

Kuvo Puntos 478

Creo que he resuelto mi problema. Haciendo un poco más de pensamiento acerca de la diferencia entre las capas que se fueron y no exportadores, me di cuenta de que la capa que NO ESTABA mostrando era mostrar simboliza los valores de un campo que se unieron para que la capa de una tabla en el documento de mapa. Cuando me exportado se unió a la capa como su propio .shp archivo y rehecho mi mapa para mostrar la capa, todo lo exportado como debería.

No estoy seguro si hay otras soluciones (es decir, para que se unió a las capas puede ser exportado con éxito a pdf con menos ruido), pero este definitivamente trabajado.

0voto

Oddthinking Puntos 233

Otro problema que puede causar la falta de capas en una exportado mapa es un error en ESRI de 64-bit de la implementación de la herramienta. Ha sido alrededor desde 10.0 y no ha sido fijado 10.2.2.

He encontrado que al ejecutar mi script utilizando la versión de 32 bits de instalación de python resuelto para mí.

La manera más sencilla de hacer esto es abrir el símbolo del sistema y, a continuación, por el defecto de ArcGIS para la instalación de Python ruta de acceso, escriba, por ejemplo:

C:\Python27\ArcGIS10.2\python C:\Temp\MyScript.py

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X