जवाबों:
अकेले ArcMap अनुप्रयोग का उपयोग करने की कोशिश करने के बजाय, मैं चित्र में ArcPy लाया हूं।
मैंने अभी परीक्षण किया और प्राप्त किया जिसे आपने UniqueValuesSymbology (arcpy.mapping) वर्ग का उपयोग करके वर्णित किया है, जिसमें एक गुणकारी गुणधर्म गुण है, जिसे निम्न पर सेट किया जा सकता है:
तार या संख्याओं की एक सूची जो प्रत्येक अद्वितीय मूल्य के विवरण का प्रतिनिधित्व करती है जो वैकल्पिक रूप से मानचित्र दस्तावेज़ की किंवदंती में दिखाई दे सकती है। ये मान केवल ArcMap उपयोगकर्ता इंटरफ़ेस में लेबर प्रॉपर्टीज़ डायलॉग बॉक्स में सिम्बॉलॉजी टैब के भीतर प्रदर्शित प्रतीक को राइट-क्लिक करके और संपादित विवरण का चयन करके सुलभ हैं। ClassDesaches सूची में तत्वों की समान संख्या होनी चाहिए और समान क्रम में ClassValues गुण के रूप में व्यवस्थित होना चाहिए।
कोड खोज तालिका को किसी सूची में देखने के लिए खोज कर्सर का उपयोग करता है , और फिर उस सूची को परत के सिम्बॉलॉजी वर्ग के गुणांक गुण में लिखता है। ध्यान दें कि लुकअप टेबल में पंक्तियों की समान संख्या होनी चाहिए और अद्वितीय सिम्बॉलॉजी वर्गीकरण के मूल्यों के समान क्रम में होनी चाहिए । मेरे कोड को इस बात के लिए बढ़ाने की आवश्यकता होगी कि मामला न हो लेकिन उस आदेश को मैन्युअल रूप से सुनिश्चित करना मेरे परीक्षण के मामले में आसान था।
import arcpy
vegDescList = []
vegCodes = arcpy.SearchCursor(r"C:\temp\test.gdb\LookupTable")
for vegCode in vegCodes:
vegDescList.append(vegCode.Description)
mxd = arcpy.mapping.MapDocument(r"C:\temp\test.mxd")
lyr = arcpy.mapping.ListLayers(mxd,"testFC")[0]
if lyr.symbologyType == "UNIQUE_VALUES":
lyr.symbology.classDescriptions = vegDescList
mxd.save()
del mxd
क्या आप अपने प्रतीकों को "अद्वितीय मान कई फ़ील्ड्स" के साथ वर्गीकृत कर सकते हैं और कोड के लिए एक क्षेत्र और लंबे विवरण के लिए दूसरा चुन सकते हैं? प्रत्येक आइटम को स्ट्रिंग में "[Field1], [Field2]" के साथ लेबल करना चाहिए
यह छोटे क्षेत्रों के साथ काम करता है, मुझे लगता है कि यह लंबे समय तक तार के साथ होगा, जब तक कि कोई सीमा नहीं होती जिससे मैं परिचित नहीं हूं।
एकमात्र कष्टप्रद हिस्सा यह होगा कि आपको लेबल मूल्य की शुरुआत से कोड मान को हटाना और हटाना पड़ सकता है, लेकिन यह सबसे खराब चीज नहीं होगी जो कभी हुई थी।
PolyGeo के कोड से कार्य करना , यहाँ पर मैं क्या कर रहा हूँ कि देखने की मूल्यों और विवरण के बीच सटीक संख्या में आइटम और समान ऑर्डर मैच होने की समस्या के आसपास काम करने के लिए। पूरी वर्किंग स्क्रिप्ट यहां है ।
# name and path of the lookup table
lookup_table = r"..\default.gdb\vegMajorComm_Lookup"
# change these to match the relevant field names in the lookup table
code = 'VegCode'
description = 'Description'
##...snip...
# build the descriptions dictionary
descriptions = {}
rows = arcpy.SearchCursor(lookup_table)
for item in rows:
#print item.getValue(code), item.getValue(description)
descriptions[item.getValue(code)] = item.getValue(description)
# lyr.symbology requires the classValues and classDescriptions to have
# same number of rows and be in same order. So extract only matching
# elements from the description dictionary
desclist = []
if lyr.symbologyType == "UNIQUE_VALUES":
#extract matches
for symbol in lyr.symbology.classValues:
desclist.append(descriptions[symbol])
# assign the descriptions
lyr.symbology.classDescriptions = desclist
mxd.saveACopy(output_map)
del mxd