1 votos

Cambio de las características de la plantilla global para que se reflejen en otros mapas

Estoy trabajando en un proyecto que incluye más de 20 figuras de mapas.

Actualmente estamos trabajando con un .mxd en el que estamos utilizando como plantilla para estas figuras.

Lo más probable es que nuestro cliente quiera que se realicen algunas ediciones globales que deberán reflejarse en la plantilla (es decir, que se cambie el color de la capa de la calle o se elimine un elemento).

¿Existe una manera más fácil (que no sea hacer más de 20 cambios globales individuales en cada figura) para que los cambios de plantilla se reflejen en todas nuestras figuras?

1voto

FelixIP Puntos 4035

Cuando se trata de la misma zona que se va a mostrar en varios mapas, utilizo páginas controladas por datos, que son idénticas (¿rectángulos?) en términos de geometría. El título del mapa y otras cosas se almacenan en los campos pertinentes de la capa de páginas.

El script oculta/desoculta los grupos mirando los nombres de los grupos. Así no hay drama cuando se pide cambiar pequeñas cosas comunes a un conjunto de mapas, por ejemplo, el estado de BORRADOR a FINAL en cualquier número de mapas.

Para que script funcione:

  • agrupar las capas por páginas en la tabla de contenidos. Convención de nomenclatura de grupos: PAGE_01 Geología, PAGE_02_Topografía, PAGE_03 Cualquier cosa etc.
  • Coloque las capas vectoriales comunes para todos los mapas (si las hay) en la parte superior de su tabla de contenido.
  • Coloque las capas rasterizadas comunes para todos los mapas (imágenes aéreas) en la de su tabla de contenido.
  • Utilice la opción en la leyenda para mostrar sólo las capas visibles

script tiene 1 parámetro - carpeta de salida, donde se guardarán los mapas PAGE_01.pdf, PAGE_02.pdf etc.

Precaución : después de la exportación de todos los mapas, cerrar ArcMap activo con mxd y abrir de nuevo, si usted quiere hacer algunos cambios y volver a imprimir los mapas. Por alguna razón desconocida para mí (tal vez la configuración del PC), script podría atascado en la segunda exportación en la primera página.

# EXPORTS MAPS BY SWITCHING GROUPS VISIBILITY ON/OFF
import arcpy, traceback, os, sys, time
outFolder=arcpy.GetParameterAsText(0)
# JUST IN CASE
from arcpy import env
env.overwriteOutput = True
env.workspace = outFolder
## ERROR HANDLING
def showPyMessage():
    arcpy.AddMessage(str(time.ctime()) + " - " + message)
try:
    mxd = arcpy.mapping.MapDocument("CURRENT")
    df = arcpy.mapping.ListDataFrames(mxd)[0]
    allLayers=arcpy.mapping.ListLayers(mxd,"PAGE*")
    groupLayers=[]
    for m in allLayers:
        if m.isGroupLayer: groupLayers.append(m)
#   SHUFFLE THROUGH PAGES
    ddp = mxd.dataDrivenPages
    thePagesLayer = arcpy.mapping.ListLayers(mxd,ddp.indexLayer.name)[0]
    for pageID in range(1, ddp.pageCount+1):
        ddp.currentPageID = pageID
        code='PAGE_%s' %str(pageID).zfill(2)
        for group in groupLayers:
            group.visible=(code in group.name)
        fName='%s%s%s.pdf' %(outFolder,os.sep,code)
        arcpy.RefreshActiveView()
        time.sleep(3)
        ddp.exportToPDF(fName,"CURRENT",resolution=144)
        arcpy.AddMessage('%s exported '%fName)
except:
    message = "\n*** PYTHON ERRORS *** "; showPyMessage()
    message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
    message = "Python Error Info: " +  str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()

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