Python kullanarak ArcMap'ten katman silme


9

Sorun:

  • Adında katman arayan tüm katmanlarım arasında döngü çalışıyorum "CADAnnotation".
  • Katman varsa, katmanı mxd'den kaldırın

Notlar:

  • Tek Başına Komut Dosyasından Çalıştırma (yani Arcmap içinde DEĞİL)
  • "CADAnnotation" Veri Türü bir CAD Ek Açıklama Özellik Sınıfıdır
  • "CADAnnotation" bir coğrafi veritabanında DEĞİLDİR, bir AutoCAD .dwg dosyasından oluşturulur
  • "CADAnnotation" adlı bir Grup Katmanında "ACAD"
  • Grup katmanı "ACAD"silinebilirse, bu da kaldırır "CADAnnotation", bu harika olur.

Şimdiye kadar 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

Kod İle İlgili Notlar:

  • Katmanı problemsiz bulabilirim
  • çizgi arcpy.Delete_management("CADAnnotation")çalışmıyor bir hata atar.

Soru:

  • Katmanı nasıl kaldırırım "CADAnnotation"ve / veya "ACAD"gruplayabilirim?

Yanıtlar:


17

Katmanı coğrafi veritabanından gerçekten silmek mi, yoksa mxd'den mi kaldırmak istiyorsunuz?

Eğer sadece MXD gelen katmanı kaldırmak isterseniz, yerini arcpy.Delete_management("CADAnnotation")ilearcpy.mapping.RemoveLayer(df, lyr)

Veri kaynağını silmek istiyorsanız bunu yapabilirsiniz.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.