Supprimer une couche d'ArcMap à l'aide de Python


9

Problème:

  • J'essaie de parcourir toutes mes couches à la recherche d'une couche nommée "CADAnnotation".
  • Si le calque existe, supprimez-le du mxd

Remarques:

  • Exécution à partir d'un script autonome (c.-à-d. PAS dans Arcmap)
  • "CADAnnotation" Le type de données est une classe d'entités annotations CAO
  • "CADAnnotation" N'EST PAS dans une géodatabase, il est créé à partir d'un fichier AutoCAD .dwg
  • "CADAnnotation" se trouve dans une couche de groupe nommée "ACAD"
  • Si la couche de groupe "ACAD"peut être supprimée, elle sera également supprimée "CADAnnotation".

Code jusqu'à présent:

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

Remarques sur le code:

  • Je peux trouver la couche sans problème
  • la ligne arcpy.Delete_management("CADAnnotation")ne fonctionne pas jette une erreur.

Question:

  • Comment supprimer "CADAnnotation"et / ou "ACAD"grouper un calque?

Réponses:


17

Voulez-vous réellement supprimer la couche de la géodatabase ou la supprimer du mxd?

Si vous souhaitez simplement supprimer le calque de votre mxd, remplacez-le arcpy.Delete_management("CADAnnotation")pararcpy.mapping.RemoveLayer(df, lyr)

Si vous souhaitez supprimer la source de données, vous pouvez le faire.

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.