Usuń warstwę z ArcMap za pomocą Pythona

9

Problem:

  • Próbuję przejść przez wszystkie moje warstwy w poszukiwaniu warstwy o nazwie "CADAnnotation".
  • Jeśli warstwa istnieje, usuń ją z mxd

Uwagi:

  • Uruchamianie ze skryptu autonomicznego (tj. NIE w Arcmap)
  • "CADAnnotation" Typ danych jest klasą cech adnotacji CAD
  • "CADAnnotation" NIE znajduje się w geobazie, jest utworzony z .dwg programu AutoCAD
  • "CADAnnotation" znajduje się w warstwie grupy o nazwie "ACAD"
  • Jeśli warstwa grupy "ACAD"może zostać usunięta, to również usuwa "CADAnnotation", byłoby świetnie.

Dotychczasowy kod:

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

Uwagi na temat kodu:

  • Nie mogę znaleźć warstwy
  • linia arcpy.Delete_management("CADAnnotation")nie działa zgłasza błąd.

Pytanie:

  • Jak usunąć warstwę "CADAnnotation"i / lub "ACAD"grupę?
Naprzód Tristan
źródło

Odpowiedzi:

17

Czy chcesz faktycznie usunąć warstwę z geobazy lub usunąć ją z MXD?

Jeśli chcesz po prostu usunąć warstwę z MXD, wymienić arcpy.Delete_management("CADAnnotation")zarcpy.mapping.RemoveLayer(df, lyr)

Jeśli chcesz usunąć źródło danych, możesz to zrobić.

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
źródło