সারণী থেকে আর্কম্যাপ লেআউট কিংবদন্তীর প্রতীক বর্ণনা সেট করছেন?


9

আর্কম্যাপে প্রতীক তালিকার প্রতিটি আইটেমের জন্য বর্ধিত বিবরণ প্রদর্শন করার ক্ষমতা রয়েছে। আমি কীভাবে এই সম্পত্তিটি একটি টেবিল থেকে পপুলেশন করতে পারি? লক্ষ্যটি হ'ল বর্ণনাটি যুক্ত করতে প্রতিটি প্রতীককে একে একে সম্পাদনা করা এড়ানো ।

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


7

একা অর্কম্যাপ অ্যাপ্লিকেশনটি ব্যবহার করার চেষ্টা করার পরিবর্তে আমি ছবিতে আরকিপিকে নিয়ে এসেছি।

আপনি কেবল ইউনিকভ্যালিউস সিম্বোলজি (আরকিপি.ম্যাপিং) শ্রেণীর ব্যবহার করে যা বর্ণনা করেছেন তা যাচাই করেছিলাম এবং তা অর্জন করেছি যা লেখার যোগ্য শ্রেণীর বিবরণ সম্পত্তি যা এতে সেট করা যেতে পারে:

স্ট্রিং বা সংখ্যার একটি তালিকা যা প্রতিটি অনন্য মানের বর্ণনার প্রতিনিধিত্ব করে যা মানচিত্রের নথির উপকথায় optionচ্ছিকভাবে উপস্থিত হতে পারে। স্তর বৈশিষ্ট্য ডায়ালগ বাক্সে সিম্বোলজি ট্যাবের অভ্যন্তরে প্রদর্শিত প্রতীককে ডান ক্লিক করে এবং সম্পাদনা বিবরণ নির্বাচন করে এই মানগুলি কেবল আর্কম্যাপ ব্যবহারকারী ইন্টারফেসে অ্যাক্সেসযোগ্য। শ্রেণি বিবরণী তালিকার একই সংখ্যক উপাদান থাকা এবং ক্লাসভ্যালু সম্পত্তি হিসাবে একই ক্রমে সাজানো দরকার।

কোড একটি ব্যবহার অনুসন্ধান কার্সার একটি মধ্যে লুকআপ টেবিল পড়তে তালিকা , এবং তারপর লেয়ারটির symbology ক্লাসের classDescriptions সম্পত্তিতে সেই তালিকাটি লিখেছেন। নোট করুন যে সন্ধানের সারণিতে সারি একই সংখ্যার হওয়া আবশ্যক এবং অনন্য প্রতীকতত্ত্ব শ্রেণিবদ্ধকরণের মানগুলির মতো একই ক্রমে থাকা উচিত । আমার কোডটি সেই ক্ষেত্রে না হয়ে অ্যাকাউন্টের জন্য বাড়ানো দরকার তবে সেই আদেশটি নিজেই নিশ্চিত করা আমার পরীক্ষার ক্ষেত্রে সহজ ছিল।

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

এটি কাজ করবে কিনা তা দেখার জন্য আমি কিছু পরীক্ষার কোড একসাথে রেখেছি এবং যদিও কোনও ত্রুটি উত্পন্ন হয় না তবে আপডেট বর্ণনগুলি স্তরটিতে ফিরে আসে না। আমি ম্যাপিংয়ে তোরণে নতুন আছি তাই সম্ভবত এটিই আমি ভুল করেছি।
মাইকেল সিসটেমসন

ওইটা কি কাজ করে? আমি ম্যাপডোকামেন্ট ("বর্তমান") এবং রিফ্রেশএকটিভভিউ () / রিফ্রেশটোক () ব্যবহার করা বাদ দিয়ে অনেক কিছু পেয়েছি তবে কিছুই আপডেট হয় না।
মাইকেল সিলিমসন

1
@ মাইকেলমাইলস-সিমিটসন হ্যাঁ - এটি ইচ্ছাপূর্ণ আপডেট হয়েছে - আমার সন্দেহ হয় যে আপনি যা হারিয়েছেন তা হ'ল এটি টিও নয় যা বর্ণনামূলক মানগুলি দেখায় তবে একটি লেজেন্ড লেআউট এলিমেন্টটি দেখায়। এর মধ্যে একটি সন্নিবেশ করুন এবং বিবরণ প্রদর্শন করে এমন একটি কিংবদন্তী আইটেম স্টাইল চয়ন করুন এবং আমি মনে করি এটি স্পষ্ট হয়ে উঠবে যে এটি কাজ করে।
পলিজিও

আপনাকে ধন্যবাদ পোলিজেও! ঠিক এটাই! এটি কেবলমাত্র ভুল জায়গায় দেখছিলাম বরাবর এটি করছিল।
মাইকেল সিলিমসন

আমি বর্ণনা এবং লকআপ কোডগুলি মিলিয়ে দেওয়ার সমস্যাটি সমাধান করেছি, আমার উত্তর দেখুন।
ম্যাট উইলকি

1

আপনি কি আপনার প্রতীকগুলিকে "অনন্য মূল্যবোধ অনেক ক্ষেত্র" দিয়ে শ্রেণিবদ্ধ করতে পারেন এবং কোডের জন্য একটি ক্ষেত্র এবং দ্বিতীয়টি দীর্ঘ বিবরণের জন্য চয়ন করতে পারেন? এতে প্রতিটি আইটেমকে "[Field1], [Field2]" আকারে স্ট্রিং সহ লেবেল করা উচিত

এটি ছোট ক্ষেত্রগুলির সাথে কাজ করে, আমি কল্পনা করি এটি দীর্ঘতর স্ট্রিংগুলির সাথে হবে, যদি না সীমাবদ্ধতা থাকে যার সাথে আমি পরিচিত নই।

একমাত্র বিরক্তিকর অংশটি হ'ল আপনাকে লেবেল মানটির শুরু থেকেই কোড মানটি দিয়ে যেতে হবে এবং মুছতে হতে পারে, তবে এটি কখনও ঘটেনি worst


একটি আকর্ষণীয় ধারণা যা কিছু পরিস্থিতিতে কাজ করতে পারে। এটি এখানে কাজ করবে না যদিও বিবরণ টেবিলটি কেবল একটি টেবিল, কোনও জ্যামিতি নেই। কেউ জ্যামিতি এবং বর্ণনায় যোগদান করতে পারে তবে আমি এই প্রকল্পের জন্য অতিরিক্ত কাজ বা পারফরম্যান্সের জন্য আগ্রহী না।
ম্যাট উইলকি

1

পলিজিওর কোড থেকে কাজ করা , আমি এখানে আইটেমগুলির সঠিক সংখ্যা এবং একই ধরণের অর্ডারের সাথে তালিকার মান এবং বর্ণনার মধ্যে মিলের সমস্যাটি নিয়ে কাজ করতে এসেছি। পূর্ণ পরিশ্রমী স্ক্রিপ্ট হয় এখানে

# 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.