ลบเลเยอร์จาก ArcMap โดยใช้ Python


9

ปัญหา:

  • "CADAnnotation"ฉันพยายามที่จะห่วงผ่านชั้นของฉันทั้งหมดมองหาชื่อชั้น
  • หากมีเลเยอร์อยู่ให้ลบเลเยอร์ออกจาก mxd

หมายเหตุ:

  • เรียกใช้จากสคริปต์ Stand-Alone (เช่นไม่ใช่ภายใน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.