Hapus layer dari ArcMap menggunakan Python

9

Masalah:

  • Saya mencoba untuk mengulang semua lapisan saya mencari lapisan bernama "CADAnnotation".
  • Jika lapisan ada maka hapus lapisan dari mxd

Catatan:

  • Menjalankan dari skrip Stand-Alone (mis. TIDAK dalam Arcmap)
  • "CADAnnotation" Tipe Data adalah Kelas Fitur Anotasi CAD
  • "CADAnnotation" BUKAN dalam geodatabase, itu dibuat dari .dwg AutoCAD
  • "CADAnnotation" ada di dalam Layer Grup bernama "ACAD"
  • Jika lapisan grup "ACAD"dapat dihapus itu juga menghapus "CADAnnotation"itu akan menjadi hebat.

Kode sejauh ini:

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

Catatan tentang Kode:

  • Saya dapat menemukan lapisan tidak ada masalah
  • garis arcpy.Delete_management("CADAnnotation")tidak berfungsi melempar kesalahan.

Pertanyaan:

  • Bagaimana cara menghapus "CADAnnotation"dan / atau "ACAD"lapisan grup?
Tristan Maju
sumber

Jawaban:

17

Apakah Anda ingin benar-benar menghapus layer dari geodatabase atau menghapusnya dari mxd?

Jika Anda hanya ingin menghapus layer dari mxd Anda, ganti arcpy.Delete_management("CADAnnotation")denganarcpy.mapping.RemoveLayer(df, lyr)

Jika Anda ingin menghapus sumber data, Anda dapat melakukan ini.

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
sumber