Elimina il livello da ArcMap usando Python


9

Problema:

  • Sto cercando di scorrere tutti i miei livelli alla ricerca di un livello denominato "CADAnnotation".
  • Se il livello esiste, quindi rimuovere il livello dal mxd

Appunti:

  • Esecuzione da script autonomo (ovvero NON all'interno di Arcmap)
  • "CADAnnotation" Il tipo di dati è una classe di funzionalità di annotazione CAD
  • "CADAnnotation" NON è in un geodatabase, è creato da un .dwg di AutoCAD
  • "CADAnnotation" è all'interno di un livello di gruppo denominato "ACAD"
  • Se il livello di gruppo "ACAD"può essere eliminato, ciò rimuove anche "CADAnnotation"quello sarebbe fantastico.

Codice finora:

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

Note sul codice:

  • Riesco a trovare il livello senza problemi
  • la linea arcpy.Delete_management("CADAnnotation")non funziona genera un errore.

Domanda:

  • Come rimuovere "CADAnnotation"e / o "ACAD"raggruppare livello?

Risposte:


17

Vuoi effettivamente eliminare il layer dal geodatabase o rimuoverlo dal mxd?

Se vuoi solo rimuovere il layer dal tuo mxd, sostituiscilo arcpy.Delete_management("CADAnnotation")conarcpy.mapping.RemoveLayer(df, lyr)

Se si desidera eliminare l'origine dati, è possibile farlo.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.