तालिका से ArcMap लेआउट किंवदंतियों के प्रतीक विवरण सेट करना?


9

आर्कमैप में प्रतीक सूची में प्रत्येक आइटम के लिए एक विस्तारित विवरण दिखाने की क्षमता है। मैं उस संपत्ति को तालिका से कैसे आबाद कर सकता हूं? लक्ष्य विवरण को जोड़ने के लिए प्रत्येक प्रतीक को एक-एक करके संपादित करने से बचना है ।

यहां छवि विवरण दर्ज करें

जवाबों:


7

अकेले 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

मैंने यह देखने के लिए कि क्या यह काम करेगा, हालांकि कुछ परीक्षण कोड एक साथ रख दिए हैं और हालांकि कोई भी त्रुटि उत्पन्न नहीं हुई है, अद्यतन विवरण इसे परत पर वापस नहीं लाते हैं। मैं मानचित्रण में चापलूसी करने के लिए नया हूँ इसलिए यह शायद कुछ ऐसा है जो मैंने गलत किया है।
माइकल स्टिमसन

क्या वह काम करता है? मुझे बहुत कुछ मिला है सिवाय इसके कि मैं MapDocument ("वर्तमान") और RefreshActiveView () / RefreshTOC () का उपयोग कर रहा हूं, लेकिन कुछ भी अपडेट नहीं हुआ।
माइकल स्टिमसन

1
@ MichaelMiles-Stimson हां - यह इरादा के अनुसार अपडेट किया गया - मुझे संदेह है कि जो आपने याद किया है वह यह है कि यह टीओसी नहीं है जो विवरण मानों को दिखाता है लेकिन एक लीजेंड लेआउट तत्व। उनमें से एक डालें और एक लेजेंड आइटम स्टाइल चुनें जो विवरण प्रदर्शित करता है और मुझे लगता है कि यह स्पष्ट हो जाएगा कि यह काम करता है।
PolyGeo

थैंक यू @polygeo! बिलकुल ऐसा ही है! यह सब मेरे साथ हो रहा था, मैं सिर्फ गलत जगह देख रहा था।
माइकल स्टिमसन

मैंने विवरण और लुकअप कोड मिलान करने की समस्या को हल किया, मेरा उत्तर देखें।
मैट विल्की

1

क्या आप अपने प्रतीकों को "अद्वितीय मान कई फ़ील्ड्स" के साथ वर्गीकृत कर सकते हैं और कोड के लिए एक क्षेत्र और लंबे विवरण के लिए दूसरा चुन सकते हैं? प्रत्येक आइटम को स्ट्रिंग में "[Field1], [Field2]" के साथ लेबल करना चाहिए

यह छोटे क्षेत्रों के साथ काम करता है, मुझे लगता है कि यह लंबे समय तक तार के साथ होगा, जब तक कि कोई सीमा नहीं होती जिससे मैं परिचित नहीं हूं।

एकमात्र कष्टप्रद हिस्सा यह होगा कि आपको लेबल मूल्य की शुरुआत से कोड मान को हटाना और हटाना पड़ सकता है, लेकिन यह सबसे खराब चीज नहीं होगी जो कभी हुई थी।


एक दिलचस्प विचार जो कुछ स्थितियों में काम कर सकता है। यह यहाँ काम नहीं करेगा, क्योंकि विवरण तालिका सिर्फ एक तालिका है, कोई ज्यामिति नहीं है। कोई भी ज्यामिति और विवरण में शामिल हो सकता है, लेकिन मुझे इस परियोजना के लिए उस अतिरिक्त काम या प्रदर्शन हिट में कोई दिलचस्पी नहीं है।
मैट विल्की

1

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.