मैं आर्कजीआईएस 10.2 के लिए एक अजगर मैक्रो लिखने की कोशिश कर रहा हूं जो विभिन्न प्रकार के अपार्टमेंट के आधार पर एक परत में बिंदुओं को लेबल करने की प्रक्रिया को स्वचालित करेगा। उदाहरण के लिए, अपार्टमेंट की एक शैली में एक लेबल के रूप में सफेद बोल्ड पाठ के साथ एक नीला वर्ग होगा; दूसरे में काले रंग के बोल्ड टेक्स्ट के साथ एक गुलाबी वर्ग होगा; दूसरे में एक सफेद बोल्ड पाठ के साथ एक लाल वर्ग होगा, आदि।
इन लेबलों की शैली को बदलने के लिए आप आर्कपी में किस अभिव्यक्ति या कार्य का उपयोग करेंगे?
वर्तमान में, स्क्रिप्ट एक मैप कोड द्वारा अपार्टमेंट को लेबल करती है और अपना नाम TOC में अपार्टमेंट में बदल देती है, जैसा कि यह होना चाहिए।
अब मैं प्रत्येक के लिए एक अनूठा लेबल बनाने के लिए लेबल के फ़ॉन्ट, ग्राफिक और आकार को बदलना चाहता हूं, और फिर किसी भी समय हमें इन परतों में से किसी एक को करने के लिए प्रक्रिया को स्वचालित करने के लिए एक बटन दबाना होगा।
क्या पायथन स्क्रिप्टिंग (ArcPy, IDLE, आदि) के उपयोग से फोंट, लेबल और ग्राफिक्स को बदला जा सकता है?
मैंने इस पोस्ट को संपादित करने का फैसला किया, जो मैं यहां के लिए जा रहा हूं, इसका अंतिम विवरण देने के लिए ताकि कोई भ्रम न हो। अनिवार्य रूप से, नक्शे पर अंक इस से ऊपर की तस्वीर की तरह लगेंगे:
मैंने lblClass.expression
फ़ंक्शन का उपयोग करने की कोशिश की है, हालांकि मैं जिस कोड का उपयोग करने की कोशिश कर रहा हूं वह काम नहीं करता है। मुझे लगता है कि शायद सही दिशा में कदम है। नीचे कुछ कोड हैं जो मैंने लेबल के फोंट को बदलने के लिए लेबलक्लास.कप्रेशन प्राप्त करने के लिए उपयोग करने का प्रयास किया है।
for lblClass in aptLayer.labelClasses:
lblClass.showClassLabels = True
def getLabel (Code, Type):
if Type == "MRR":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "TAX":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "MRT":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "GSS":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "TGS":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
else:
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
lblClass.expression = getLabel( [Map_Code],[Type])