Processing math: 100%

5 votos

¿Crear una capa de grupo vacía dentro de una capa de grupo existente usando arcpy.mapping?

En referencia a esta pregunta, Añadir nueva capa de grupo con ArcPy? Estoy tratando de usar python para añadir un grupo vacío dentro de una capa de grupo. Hasta ahora soy capaz de añadir un grupo vacío en el documento de mapa, sin embargo estoy recibiendo un error al intentar añadir otro grupo vacío dentro de la capa de grupo existente. Aquí está el mensaje de error:

Error de tiempo de ejecución Traceback (most recent call last): Archivo "", línea 1, en File "c: \program archivos (x86) \arcgis\desktop10.1\arcpy\arcpy\utils.py ", return fn(*args, **kw) Archivo "c: \program archivos (x86) \arcgis\desktop10.1\arcpy\arcpy\mapping.py ", línea 88, en AddLayerToGroup assert isinstance(target_group_layer, Layer) and target_group_layer._arc_object.isGroupLayer AssertionError

Este es mi código:

        mxd = arcpy.mapping.MapDocument(r"C:\Temp\test.mxd")
        df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
        groupLayer = arcpy.mapping.Layer(r"C:\Temp\Group.lyr")
        arcpy.mapping.AddLayer(df, groupLayer, "BOTTOM")
        targetGroupLayer = arcpy.mapping.ListLayers(mxd, "Group", df)
        addLayer = arcpy.mapping.Layer(r"C:\Temp\Group2.lyr")
        arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "BOTTOM") # error here
        mxd.save()
        del mxd,df

¿Se pueden añadir capas de grupo vacías dentro de un grupo existente (utilizando v10.1 SP1)? La documentación de ESRI (véase la imagen siguiente) indica que se pueden añadir .lyr a los grupos (¿quizá no una capa de grupo .lyr?).

enter image description here


Aquí está el código de trabajo (gracias a Jason Scheirer):

    mxd = arcpy.mapping.MapDocument(r"C:\Temp\test.mxd")
    df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
    groupLayer = arcpy.mapping.Layer(r"C:\Temp\Group.lyr")
    arcpy.mapping.AddLayer(df, groupLayer, "BOTTOM")
    targetGroupLayer = arcpy.mapping.ListLayers(mxd, "Group", df)[0]
    addLayer = arcpy.mapping.Layer(r"C:\Temp\Group2.lyr")
    arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "BOTTOM")
    mxd.save()
    del mxd,df

3voto

Paul Puntos 555

Error tipográfico en tu código. Debería ser:

targetGroupLayer = arcpy.mapping.ListLayers(mxd, "Group", df)[0]

de lo contrario targetGroupLayer es una lista.

1voto

Dillmo Puntos 121

Creo que en tu respuesta, si cambias estas dos líneas, funcionará mejor:

targetGroupLayer = arcpy.mapping.ListLayers(mxd, "Group", df) --> include [0]
arcpy.mapping.AddLayerToGroup(df, targetGroupLayer, addLayer, "BOTTOM")[0]  --> take off [0]

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