2 votos

¿Creación de mapas por lotes con arcpy.mapping?

Estoy intentando crear salidas .mxd y PDF para una serie de clases de características en un SDE. Tengo que hacer coincidir 2 clases de características (una original y otra con buffer) en el SDE basándome en nombres de archivo similares. La clase de características con buffer simplemente llevará el prefijo "Buffer_" antes de compartir el nombre de la ruta del archivo original. Estoy tratando de llevar ambas clases de características a un nuevo mxd, ampliar la extensión de la clase de características con buffer, ya que naturalmente ocupará más área, simbolizar las 2 capas y crear un mxd y un pdf guardados basados en las características y repetir este proceso para las siguientes clases de características con buffer y las clases de características originales.

Estoy atascado tratando de conseguir que las clases de rasgos amortiguados y originales coincidan y, como resultado, se añadan al mapa como una capa. Hasta ahora soy capaz de crear el nuevo mxd y establecer la extensión del zoom. El código en el que estoy atascado es el siguiente:

arcpy.env.workspace = "SDE"
fcList = sorted(arcpy.ListFeatureClasses('Buffer_*'))

matchFClist = arcpy.ListFeatureClasses()

for fc in fcList:
    print fc

    fcclean = fc.replace('Buffer_','')
    copymxd = templatemxd.saveACopy(r"Folder\\" + fcclean + ".mxd")
    mxd = arcpy.mapping.MapDocument(r"Q:\outputFolder\TMaps\\" + fcclean + ".mxd")
    df = arcpy.mapping.ListDataFrames(mxd,"*")[0]
    for fcclean in matchFClist:
        if fnmatch.fnmatch(fcclean, matchFClist):
            newlayer = arcpy.mapping.Layer(fcclean)
            newMatchlayer = arcpy.mapping.Layer(matchFClist)

Sin embargo, sé que esto probablemente está muy lejos, pero no estoy seguro de cómo conseguir que el partido funcione. Siempre podría tratar de usar una matriz, sin embargo, estoy bastante confundido en este punto.

4voto

john Puntos 11

Podría intentar algo como esto en su lugar:

arcpy.env.workspace = r"SDE"

buffered = arcpy.ListFeatureClasses("Buffer_*")
original = [buffer.split("uffer_")[-1] for buffer in buffered]

for x in xrange(len(buffered)):
  arcpy.mapping.Layer(buffered[x])
  arcpy.mapping.Layer(original[x])

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