ব্যবহারকারীর ইনপুট দিয়ে মডেলবিল্ডার ব্যবহার করে অ্যাট্রিবিউট দ্বারা এক্সট্রাক্ট করা?


11

মডেলবিল্ডার ব্যবহার করে, আমি এমন একটি সরঞ্জাম তৈরি করতে চাই যা কোনও ব্যবহারকারীকে একটি মানচিত্র বা মান নির্বাচন করতে দেয় যা কোনও আকার-ফাইল বের করতে ব্যবহৃত হয়।

আমার কাছে "পার্সেলটাইপ" ক্ষেত্র সহ একটি পার্সেল স্তর রয়েছে। আমি চাই যে ব্যবহারকারীটি নিষ্কাশনের জন্য পার্সেলের প্রকারটি চয়ন করতে সক্ষম হন। সুতরাং যদি ব্যবহারকারী "EL" টাইপের সাথে পার্সেলগুলি বের করতে চান তবে তাকে কেবল একটি ভেরিয়েবল হিসাবে "EL" প্রবেশ করতে হবে। যদি তিনি "EL" এবং "CDD" টাইপ করতে চান তবে সেগুলি তাদেরকে বহু-ভেরিয়েবল হিসাবে প্রবেশ করানো দরকার। এই মডেল সঙ্গে একমাত্র মানুষের মিথস্ক্রিয়া হবে।

তাহলে আমি কীভাবে এই মডেলগুলিতে সেই পরিবর্তনগুলি ব্যবহার করতে পারি?

উত্তর:


14

এই ধরণের অপারেশনটি প্রায়শই সর্বদা যেখানে একটি ক্লজ লেখার সাথে জড়িত তাই আমি মনে করি পাইথন কমপক্ষে একটি সামান্য বিট ব্যবহার করা হচ্ছে।

মডেলবিল্ডার, আইএমওর সাথে এটি করা সম্ভব হওয়ার সাথে সাথে কাস্টম বৈধকরণের সাথে পাইথন স্ক্রিপ্ট সরঞ্জাম তৈরি করা এবং প্যারামিটার সেটিংসের উপর আরও নিয়ন্ত্রণ আরও ভাল ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করতে পারে - উদাহরণস্বরূপ, ফিল্ড এবং মাল্টিভ্যালু * পরামিতিগুলি ড্রপ-ডাউন মেনু তৈরি করে এগুলি টাইপ না করে আপনি মানগুলি চয়ন করতে পারেন।

* সম্ভবত, মাল্টিভ্যালু পরামিতি সম্পর্কে আসলে নিশ্চিত নয়

তবে, যেহেতু এটি অন্য বিষয়ের জন্য আরও উন্নত অনুশীলন, আমি কেবল পাইথন ব্যবহার করে কেবল যেখানে ক্লিয়ার ক্লজটি তৈরি করেছি:

  1. একটি নতুন মডেল তৈরি করুন
  2. বৈশিষ্ট্য স্তর , ক্ষেত্র এবং মাল্টিভ্যালু পরামিতিগুলির জন্য ভেরিয়েবলগুলি তৈরি করুন (খালি ক্যানভাসে ডান ক্লিক করুন এবং পরিবর্তনশীল যুক্ত করুন ক্লিক করুন ) ।
  3. এগুলির প্রত্যেকটিতে রাইট ক্লিক করুন এবং মডেল পরামিতি নির্বাচন করুন
  4. ক্যানভাসে একটি গণনা মান (ডেটা ম্যানেজমেন্ট) সরঞ্জাম যুক্ত করুন। পূর্বের শর্ত হিসাবে এটির সাথে 3 টি ভেরিয়েবলগুলি সংযুক্ত করুন (কেবলমাত্র এই ক্ষেত্রে প্রদর্শনের জন্য, তবে এটি অন্যান্য পরিস্থিতিতে মৃত্যুদণ্ড কার্যকর করার ক্ষেত্রে একটি পার্থক্য আনতে পারে)।
  5. সেট আপ করতে গণনা মান সরঞ্জামটি ডাবল ক্লিক করুন:

    5a। এক্সপ্রেশন বাক্সে নিম্নলিখিতগুলি অনুলিপি করুন / আটকান (আপনার ভেরিয়েবলের নামগুলি মেলাতে সামঞ্জস্য করুন):

    buildWhereClauseMultiValue(r"%Feature Layer%","%Field%","%Values%")

    5B। কোড ব্লক বাক্সে নিম্নলিখিতটি অনুলিপি করুন / আটকান :

    import arcpy
    
    def buildWhereClauseMultiValue(table, field, values):
        """Takes a semicolon-delimited list of values and constructs a SQL WHERE
        clause to select those values within a given field and table."""
    
        # Add DBMS-specific field delimiters
        fieldDelimited = arcpy.AddFieldDelimiters(arcpy.Describe(table).path, field)
    
        # Split multivalue at semicolons and strip quotes
        valueList = [value[1:-1] if (value.startswith("'") and value.endswith("'")) else value for value in values.split(';')]
    
        # Determine field type
        fieldType = arcpy.ListFields(table, field)[0].type
    
        # Add single-quotes for string field values
        if str(fieldType) == 'String':
            valueList = ["'%s'" % value for value in valueList]
    
        # Format WHERE clause in the form of an IN statement
        whereClause = "%s IN(%s)" % (fieldDelimited, ', '.join(valueList))
        return whereClause
    

    5c। এসকিউএল এক্সপ্রেশন হতে আউটপুট ডেটা প্রকার সেট করুন ।

    5D। ক্যালকুলেট মান সরঞ্জাম থেকে আউটপুট ভেরিয়েবল ওকে ক্লিক করুন এবং এটিকে "WHERE Clause" এর মতো আরও বর্ণনামূলক কিছুতে নামকরণ করুন।

  6. ক্যানভাসে অ্যাট্রিবিউট (ডেটা ম্যানেজমেন্ট) সরঞ্জামটি নির্বাচন করুন Add বৈশিষ্ট্য স্তর দ্বারা বৈশিষ্ট্য স্তর এবং যেখানে ক্লাউজ ভেরিয়েবলগুলি নির্বাচন করুন স্তরটি এট্রিবিউট সরঞ্জামের সাথে সংযুক্ত করুন।
  7. ক্যানভাসে একটি অনুলিপি বৈশিষ্ট্য (ডেটা ম্যানেজমেন্ট) সরঞ্জাম যুক্ত করুন। কপিরাইট বৈশিষ্ট্য সরঞ্জামে অ্যাট্রিবিউট টুল দ্বারা সিলেক্ট লেয়ারের আউটপুটটিকে সংযুক্ত করুন। আউটপুট ফিচার ক্লাস ভেরিয়েবলটি ডান ক্লিক করুন এবং মডেল প্যারামিটার এবং (বিকল্পভাবে) প্রদর্শন করতে যোগ করতে বিকল্পগুলি পরীক্ষা করুন।

    এই মুহুর্তে এটি কিছু দেখতে হবে: মডেল ক্যানভাস

  8. মডেল -> মডেল প্রোপার্টি মেনু এর অধীনে এটি একটি ভাল নাম এবং লেবেল দেয় এবং এটি সংরক্ষণ এবং বন্ধ করে দেয়।

  9. মডেল কথোপকথনটি আনতে আর্টটুলবক্সে মডেলটিতে ডাবল ক্লিক করুন। আপনার পরামিতি লিখুন এবং ঠিক আছে ক্লিক করুন। এটি নির্বাচিত বৈশিষ্ট্যগুলি একটি নতুন বৈশিষ্ট্য শ্রেণিতে রফতানি করা উচিত এবং মানচিত্রে এটি যুক্ত করা উচিত (যদি আপনি আউটপুট বৈশিষ্ট্য শ্রেণিতে "প্রদর্শন করতে যোগ করুন" চেক করেন)।

    মডেল ডায়ালগ

মন্তব্য:

  • আপনি সর্বদা হার্ডকোড মানগুলি করতে পারেন এবং "প্যারামিটারাইজ" ভেরিয়েবলগুলি নাও আপনি চান না যে ব্যবহারকারী বৈশিষ্ট্য স্তর বা ক্ষেত্রের পরামিতিগুলির মতো পরিবর্তন করতে পারে। আমি ঠিক এমন সরঞ্জামগুলি পছন্দ করি যা জেনেরিক / পুনরায় ব্যবহারযোগ্য হয় তাই আমি সেই মডেলগুলির পরামিতি তৈরি করেছিলাম। আসলে আমি যা করব তা হ'ল জেনেরিক মডেলটিকে একটি নতুন মডেলের মধ্যে টেনে আনুন এবং তারপরে আপনার পূর্বনির্ধারিত পরামিতিগুলি সেট করুন - এই উপায়ে আপনি বেশ কয়েকটি বিভিন্ন পূর্বনির্ধারিত "র‍্যাপার" মডেল তৈরি করতে পারেন, তবে কেবল একটি অন্তর্নিহিত মডেল কাজ করে চলেছে, তাই আপনার যদি এর কার্যকারিতা পরিবর্তন করতে হয় তবে আপনাকে কেবল এটি এক জায়গায় পরিবর্তন করতে হবে।

  • আপনি যদি ভাগ্যবান হন তবে আমিই আপনার মতো ছিলাম আপনাকে বৈধতা দেওয়ার পরে কেবল মডেলটি যাচাই করতে হবে এবং কিছু ডামি তথ্য সরবরাহ করতে হবে না (নোটের সমস্ত উপাদান কীভাবে ফাঁকা / সাদা, অর্থাত তারা "চালানোর জন্য প্রস্তুত নয়" - তবে আমি এটি মডেল ডায়ালগের পরামিতিগুলি পূরণ করার পরেও চালাতে সক্ষম হয়েছি)।


3

আপনি যদি আপনার জিইউআই প্রয়োজনীয়তাগুলি @ blah238 দ্বারা চিত্রিত সুনির্দিষ্ট সংলাপের জন্য না হন তবে এই কর্মপ্রবাহটি অর্জন করতে নির্বাচন করুন নামক একটি সাধারণ জিওপ্রসেসিং সরঞ্জাম ব্যবহার করতে পারেন।

এটি খুঁজে পেতে অনুসন্ধান উইন্ডোটি ব্যবহার করুন বা আর্টটুলবক্স> বিশ্লেষণ সরঞ্জাম> এক্সট্র্যাক্ট> নির্বাচন করুন এ যান।

নির্বাচন করুন (বিশ্লেষণ) টুল আপনি একটি বৈশিষ্ট্য বর্গ থেকে কোন ক্ষেত্র (অ্যাট্রিবিউট) ব্যবহার বৈশিষ্ট্য নিষ্কাশন করতে দেয়।

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