Eliminar capa de ArcMap usando Python

9

Problema:

  • Estoy tratando de recorrer todas mis capas buscando una capa con nombre "CADAnnotation".
  • Si la capa existe, elimine la capa del mxd

Notas:

  • Ejecutando desde un script independiente (es decir, NO dentro de Arcmap)
  • "CADAnnotation" El tipo de datos es una clase de entidad de anotación CAD
  • "CADAnnotation" NO está en una geodatabase, se creó a partir de un AutoCAD .dwg
  • "CADAnnotation" está dentro de una capa de grupo llamada "ACAD"
  • Si la capa de grupo "ACAD"se puede eliminar, eso también se eliminaría "CADAnnotation", sería genial.

Código hasta el momento:

for item in mxds:
    print (item)
    mxd = arcpy.mapping.MapDocument(item)
    df=arcpy.mapping.ListDataFrames(mxd,"Project Area")[0]
    for lyr in arcpy.mapping.ListLayers(mxd, "*",df):
        if lyr.name == "CADAnnotation":
            print(lyr.dataSource)
            arcpy.Delete_management("CADAnnotation")
            print("Layer Deleted")
        else:
            pass

Notas sobre el código:

  • Puedo encontrar la capa sin problema
  • la línea arcpy.Delete_management("CADAnnotation")no funciona arroja un error.

Pregunta:

  • ¿Cómo elimino "CADAnnotation"y / o "ACAD"agrupo la capa?
Tristán Delantero
fuente

Respuestas:

17

¿Desea eliminar realmente la capa de la geodatabase o eliminarla del mxd?

Si solo desea eliminar la capa de su mxd, reemplácela arcpy.Delete_management("CADAnnotation")conarcpy.mapping.RemoveLayer(df, lyr)

Si desea eliminar la fuente de datos, puede hacerlo.

for item in mxds:
   print (item)
   mxd = arcpy.mapping.MapDocument(item)
   df=arcpy.mapping.ListDataFrames(mxd,"Project Area")[0]
   for lyr in arcpy.mapping.ListLayers(mxd, "*",df):
      if lyr.name == "CADAnnotation":
         arcpy.mapping.RemoveLayer(df, lyr)
         print(lyr.dataSource)
         arcpy.Delete_management(lyr.dataSource)
         print("Layer Deleted")
      else:
         pass
TurboGus
fuente