Видаліть шар з ArcMap за допомогою Python


9

Проблема:

  • Я намагаюся прокрутити всі мої шари, шукаючи шар з ім'ям "CADAnnotation".
  • Якщо шар існує, тоді видаліть шар з mxd

Примітки:

  • Запуск від автономного сценарію (тобто НЕ в межах Arcmap)
  • "CADAnnotation" Тип даних - клас особливості анотації CAD
  • "CADAnnotation" НЕ в базі даних геоданих, вона створена з AutoCAD .dwg
  • "CADAnnotation" знаходиться в груповому шарі з назвою "ACAD"
  • Якщо груповий шар "ACAD"можна видалити, це також видалить, "CADAnnotation"що було б чудово.

Код поки що:

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

Примітки до коду:

  • Я не можу знайти шар без проблем
  • рядок arcpy.Delete_management("CADAnnotation")не працює видає помилку.

Питання:

  • Як видалити "CADAnnotation"та / або "ACAD"груповий шар?

Відповіді:


17

Ви дійсно хочете видалити шар із бази даних геоданих або видалити його з mxd?

Якщо ви просто хочете , щоб видалити шар з вашого MXD, замініть arcpy.Delete_management("CADAnnotation")зarcpy.mapping.RemoveLayer(df, lyr)

Якщо ви хочете видалити джерело даних, ви можете це зробити.

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.