Python का उपयोग करके ArcMap से परत हटाएं


9

मुसीबत:

  • मैं अपने सभी परतों के माध्यम से लूप की कोशिश कर रहा हूं जिसका नाम परत है "CADAnnotation"
  • यदि परत मौजूद है तो परत को mxd से हटा दें

टिप्पणियाँ:

  • स्टैंड-अलोन स्क्रिप्ट से भागना (यानी। आर्कमैप के भीतर नहीं)
  • "CADAnnotation" डेटा प्रकार एक सीएडी एनोटेशन फ़ीचर क्लास है
  • "CADAnnotation" जियोडैटबेस में नहीं है, यह एक ऑटोकैड .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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.