चापलूसी के साथ एनोटेशन परतों को संभालें


10

मैं आर्कपी का उपयोग करके एनोटेशन परतों तक पहुंचना चाहता हूं (उद्देश्य पाठ एनोटेशन में कुछ पाठ स्ट्रिंग को सत्यापित करना है)। एनोटेशन से मेरा मतलब है कि टूल एनोटेशन , न कि डायनामिक लेबल। ये एनोटेशन लेयर्स 'डिफ़ॉल्ट' के नाम से एक ग्रुप लेयर के अंतर्गत हैं।

ESRI प्रलेखन परतों खुद को किया जा रहा है के रूप में ड्रा एनोटेशन की बात करती है:

मैप दस्तावेज़ में परतों की तीन श्रेणियां अनिवार्य रूप से हैं: फ़ीचर लेयर्स, ग्रुप लेयर्स और रैस्टर लेयर्स। IsFeatureLayer, isGroupLayer, और isRasterLayer गुण आपको परत के अधिकांश प्रकारों को पहचानने या अलग करने की अनुमति देते हैं लेकिन सभी प्रकार की परतें नहीं। कुछ विशेष परतें और डेटासेट हैं जो इन तीन श्रेणियों में से एक में नहीं आते हैं: एनोटेशन उपवर्ग, आयाम सुविधाएँ, नेटवर्क डेटासेट, इलाके डेटासेट, टोपोलॉजी डेटासेट, और इसी तरह। इन मामलों में आपको कुछ करने से पहले ब्याज की एक परत को अलग करने के लिए अन्य गुणों का परीक्षण करने की आवश्यकता हो सकती है।

एक बात से अवगत होना है कि कैसे आर्कजीस एनोटेशन को संभालता है , दो माध्य विन्यास संभव हैं:

आर्कगिस पूरी तरह से दो प्रकार के एनोटेशन का समर्थन करता है: जियोडेटाबेस और मैप दस्तावेज़

मेरे मामले में, यह नक्शा दस्तावेज है।


इस सभी प्रलेखन के प्रकाश में, ऐसा प्रतीत होता है कि ड्रा एनोटेशन केवल परतें हैं, इस प्रकार एक सरल कोड जैसे कि यह काम करना चाहिए:

mxd = arcpy.mapping.MapDocument("some\mxdpath\here")
df = arcpy.mapping.ListDataFrames(mxd,"Layers")
lyr = arcpy.mapping.ListLayers(mxd,"current_annotation_layer",df) 

लेकिन समस्या यह है कि एनोटेशन डेटाफ़्रेम (जो मेरी एनोटेशन परतों में से प्रत्येक एक फ़ीचर परत से जुड़ा हुआ है) पर विचार करने के माध्यम से प्राप्य नहीं लगता है।


पहुँच एनोटेशन के लिए कोई विशिष्ट arcpy वर्ग (एक करने के लिए तुलनीय IAnnotationFeature2 ArcObject SDK के)? कोई वर्कअराउंड?

धन्यवाद !


क्या आपने अपने मानचित्र दस्तावेज़ एनोटेशन समूह को कॉम्पटीप और आर्कओबिज के माध्यम से संशोधित करने का प्रबंधन किया था? अधिक जानकारी के लिए कोई संकेत? बहुत धन्यवाद!!
हेलेने

जवाबों:


3

ArcPy सभी ArcObjects को उजागर नहीं करता है। मैं जो बता सकता हूं, यह उन कई इंटरफेसों में से एक है जो आर्कपी में उजागर नहीं होते हैं। केवल पेज लेआउट तत्वों को आर्कपी में सूचीबद्ध किया गया है: सूचीलैटआउट्स (चापलूसी)

यदि आपको ऐसा करने की आवश्यकता है तो आपकी एकमात्र पसंद आर्कोबजेक्ट्स है। यदि आप पायथन का उपयोग करना चाहते हैं, तो देखें कि मैं पायथन से आर्कोबजेक्ट का उपयोग कैसे करूं?

अन्यथा आप इस बारे में एक आर्किस आइडिया की तलाश या निर्माण कर सकते हैं (केवल प्रासंगिक मौजूदा विचार जो मुझे मिला था वह यह था )।


नमस्ते, मैं इस जवाब की उम्मीद कर रहा था, लेकिन लिंक के लिए धन्यवाद और +1, इससे मदद मिल सकती है।
अखिलेश ने

@Akheloes क्या आपने अपने मैप दस्तावेज़ एनोटेशन समूह को कॉम्पटीप और आर्कओबिज के माध्यम से संशोधित करने का प्रबंधन किया?
Hélène

0

मैं इस मामले में एक प्रतिक्रिया जोड़ रहा हूं कि अन्य लोग इस पर ठोकर खाते हैं। एनोटेशन आर्कपी के माध्यम से सुलभ हैं और इसे परतों के रूप में माना जा सकता है। कोड काम नहीं किया क्योंकि यह एक सूचकांक याद कर रहा है, इसलिए नहीं कि एनोटेशन सुलभ नहीं हैं। ये फ़ंक्शन हर बार एक सूची लौटाते हैं, इसलिए भले ही आप वाइल्डकार्ड का उपयोग कर रहे हों (इस मामले में " परतें " और " current_annotation_layer "), फिर भी आपको इसे पुनः प्राप्त करने के लिए सूचकांक निर्दिष्ट करना होगा और इसे क्रमशः किसी ऑब्जेक्ट ( df & lyr) पर असाइन करना होगा। )।

कोड होना चाहिए:

df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
lyr = arcpy.mapping.ListDataFrames(mxd, "current_annotation_layer", df)[0]

यहाँ एक उदाहरण है जिसका उपयोग मैंने अपने एनोटेशन परत तक पहुँचने के लिए आर्कपी के लिए किया था। मेरे नक्शे के लिए, मैं चाहता था कि एनोटेशन 20% पारदर्शिता के साथ मुखौटा से नीचे चला जाए यदि यह मेरी रुचि के क्षेत्र से बाहर है।

my_annotation_lyr = arcpy.mapping.Layer("Long_ProjectsAnno")
reference_lyr = arcpy.mapping.Layer("counties_mask")
arcpy.mapping.MoveLayer(df, reference_lyr, my_annotation_lyr, "AFTER")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.