আরকজিআইএস মডেলবিল্ডারে কালেক্ট ভ্যালু আউটপুট থেকে ডেটা রফতানি করে?


11

আমি বর্তমানে মডেলবিল্ডারের সাথে খেলছি। আমি এই মুহূর্তে আমার কাছে থাকা মডেলের একটি ছবি যুক্ত করেছি।

এই মডেলটি বর্তমানে 6 টি আকারের ফাইলগুলিকে পুনরাবৃত্তি করছে, সুতরাং প্রতিটি 'আউটপুট মান' তালিকায় 6 টি চিত্র থাকে। আমি এই তালিকাগুলি থেকে কোনও টেবিল / পাঠ্য ফাইল বা অনুরূপগুলিতে মানগুলি বের করার কোনও উপায় খুঁজে পাচ্ছি না।

এই কাজ করতে একটি উপায় আছে কি?

মডেল

আমি যখন মডেলটি চালানোর পরে 'আউটপুট মানগুলি' খুলি তখন এটি প্রদর্শিত হয়: এখানে চিত্র বর্ণনা লিখুন

আমি কেবল এই 6 নম্বরটি কোনওভাবে দখল করতে চাই ...


আপনি এখানে যা জিজ্ঞাসা করছেন এটি মূলত একই? gis.stackexchange.com/questions/25922/… মান সংগ্রহ করুন এটি ঠিক তাই করে। আপনি যদি সহায়তাটি পড়েন তবে এটি আপনাকে বলবে যে এটি এমন মানগুলি সংগ্রহ করে যা অন্য কোনও সরঞ্জামে যেতে পারে। সুতরাং আপনি মান সঙ্গে কি করতে চেষ্টা করছেন? এটি কি কেবল একটি ফাইলে লগইন করা হয় বা আরও প্রক্রিয়াজাতকরণের জন্য আপনার এগুলি দরকার?
জোনস

আমি কেবল তাদের একটি ফাইলে লগ করতে চাই। মডেল নির্মাতাকে নিষ্কাশনের জন্য আউটপুট মানগুলিতে ফিড দেওয়ার কোনও সরঞ্জাম আমি খুঁজে পাচ্ছি না।
জেপিডি

উত্তর:


17

আপনি গণনা মান (ডেটা ম্যানেজমেন্ট) সরঞ্জাম এবং কিছু পাইথন ম্যাজিক ব্যবহার করে এটি করতে পারেন । এই সম্পর্কিত প্রশ্নটিও দেখুন: আর্কগিস মডেল বিল্ডারে স্বেচ্ছাসেবক কোড যুক্ত করবেন?

একটি মাল্টিভ্যু ভেরিয়েবল কেবলমাত্র সেমিকোলন-সীমিত মানগুলির স্ট্রিং, সুতরাং multivaluesToCsvনীচের ফাংশনটি মাল্টিভ্যালু ভেরিয়েবলগুলিকে তালিকায় বিভক্ত করে সেগুলি সারিগুলিতে স্থানান্তর করে যা পরে সিএসভি (কমা-বিভাজিত মান) পাঠ্য ফাইলটিতে লিখিত হয়।

মডেল পুনরাবৃত্তিকারীরা পুনরাবৃত্তির জন্য একবারে মডেলটিতে সমস্ত প্রক্রিয়া চালায় - এটি আমাদের গণনা মান মানের জন্য অনাকাঙ্ক্ষিত, যা আমরা কেবল একবারে চালাতে চাই। আপনি যেভাবে এটি সম্পাদন করছেন তা হ'ল আসল, অভ্যন্তরীণ মডেলটি মোড়ানোর জন্য অন্য একটি বাহ্যিক মডেল তৈরি করা। এটি মডেলটির মধ্যে মডেলকে একীভূত করতে সহায়তা বিষয়টিতে আলোচনা করা হয়েছে ।

সুতরাং এই কাজটি পেতে আপনার যা করা দরকার তা এখানে:

অভ্যন্তরীণ মডেল - বৈশিষ্ট্য শ্রেণিগুলি আইট্রেট করে, তাদের প্রক্রিয়া করে, মান সংগ্রহ করে:

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

আউটার মডেল - অভ্যন্তরীণ মডেলটি চালায়, অভ্যন্তরীণ মডেলটি সম্পূর্ণ হওয়ার পরে একবার গণনা মান সরঞ্জাম চালায়:

  1. একটি নতুন মডেল তৈরি করুন - এটি আমাদের "বহিরাগত" মডেল হবে।
  2. আউটপুট সিএসভি ফাইলটি কোথায় তৈরি Folderকরতে হবে তা নির্দিষ্ট করতে আপনাকে অনুমতি দেওয়ার জন্য প্রকারের একটি ভেরিয়েবল যুক্ত করুন।
  3. Stringআপনাকে আউটপুট সিএসভি ফাইলের নাম নির্দিষ্ট করতে অনুমতি দেওয়ার জন্য প্রকারের একটি ভেরিয়েবল যুক্ত করুন।
  4. নতুন মডেলটিতে ইনার মডেল যুক্ত করুন (আর্টটুলবক্স থেকে টেনে এনে ছেড়ে দিন বা ডান-ক্লিক করুন এবং ডেটা বা সরঞ্জাম যুক্ত করুন, অভ্যন্তরীণ মডেলটিতে ব্রাউজ করুন এবং অ্যাড ক্লিক করুন)
  5. অভ্যন্তরীণ মডেলটির যে কোনও প্যারামিটারের জন্য আপনি বাইরের মডেলটি যেমন ইনপুট ওয়ার্কস্পেস সেট করতে সক্ষম হতে চান তার জন্য ভেরিয়েবলগুলি তৈরি করুন (অভ্যন্তরীণ মডেলটিতে ডান ক্লিক করুন এবং পরিবর্তনশীল-থেকে প্যারামিটার তৈরি করুন চয়ন করুন)।
  6. নতুন মডেলে গণনা মান সরঞ্জাম যুক্ত করুন Add
  7. গণনা মান সরঞ্জামের উপযুক্ত বাক্সগুলিতে নিম্নলিখিতটি আটকে দিন:

    অভিব্যক্তি :

    multivaluesToCsv(r"%Output CSV File Location%", "%Output CSV File Name%", "%Feature Class Names%", "%Minimum Distance Values%", "%Average Distance Values%", "%Maximum Distance Values%")
    • এটি ফাংশনে মডেল ভেরিয়েবলগুলি পাস করার জন্য ইন-লাইন ভেরিয়েবল বিকল্প ব্যবহার করে। আপনার মডেল ভেরিয়েবলের নামগুলি মেলাতে সামঞ্জস্য করুন।
    • rসামনে "%Output CSV File Location%"গুরুত্বপূর্ণ: এই নির্দেশ করে যে এটি হল কাঁচা স্ট্রিং ; উইন্ডোজ ফাইল সিস্টেমের পাথগুলিতে সাধারণত ব্যাকস্ল্যাশ থাকে ( পাইথনের একটি অব্যাহতি চরিত্র ), তাই পাইথনকে ব্যাকস্ল্যাশগুলি এবং এরপরের অক্ষরগুলিকে বিশেষ চরিত্রের অনুক্রম হিসাবে ভুল ব্যাখ্যা থেকে আটকাতে আমাদের এটি ব্যবহার করতে হবে।
    • ইন-লাইন ভেরিয়েবলগুলির চারপাশে উদ্ধৃতি অবশ্যই রাখবেন কারণ এগুলি ছাড়া পাইথন ভাবেন তারা স্ট্রিংয়ের পরিবর্তে সনাক্তকারী।

    কোড ব্লক:

    import os, csv
    
    def multivaluesToCsv(csvfilepath, csvfilename, fcnames, minvalues, avgvalues, maxvalues):
        ext = 'csv' # Define output file extension (e.g. csv or txt)
        header = ['FC', 'MIN', 'AVG', 'MAX'] # Define header row (column names)
    
        # Join CSV file path and name, adding extension if necessary
        csvfile = os.path.join(csvfilepath, os.extsep.join((csvfilename, ext)) if not os.path.splitext(csvfilename)[1].lower().endswith(ext) else csvfilename)
    
        # Open text file for writing
        with open(csvfile, 'wb') as f:
            w = csv.writer(f)
            w.writerow(header) # Write header row
            rows = zip(*map(lambda x: x.split(';'), [fcnames, minvalues, avgvalues, maxvalues])) # Transpose the semicolon-delimited values into rows
            w.writerows(rows)
        return csvfile
  8. (Alচ্ছিক) ইনপুট এবং আউটপুট ভেরিয়েবলগুলিকে মডেল প্যারামিটার হিসাবে প্রকাশ করুন যদি আপনি মডেলটির সরঞ্জাম কথোপকথন থেকে চালাতে সক্ষম হন বা অন্যান্য মডেল / স্ক্রিপ্টগুলির সাথে এটি একসাথে চেইন করতে চান। বাইরের মডেলের একমাত্র আউটপুট হ'ল সিএসভি ফাইল।

  9. (Alচ্ছিক) ইনপুট ভেরিয়েবল এবং অভ্যন্তরীণ মডেল আউটপুটগুলি পূর্বশর্ত হিসাবে গণনা মান সরঞ্জামের সাথে সংযুক্ত করুন। আমি মনে করি না এটির আসলে কোনও প্রভাব আছে, এটি কী ঘটছে তা দৃশ্যত এটি আরও স্পষ্ট করে তোলে।

আমি এটি মডেলবিল্ডারের সাথে পরীক্ষা করেছি এবং এটি কার্যকর হয়েছি (স্ক্রিনশটগুলি দেখুন)।

অভ্যন্তরীণ মডেল : অভ্যন্তরীণ মডেল

বাইরের মডেল: আউটার মডেল

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


হ্যালো, আপনার জবাবের জন্য অনেক প্রচেষ্টা করার জন্য ধন্যবাদ এবং আমার দেরিতে জবাবের জন্য দুঃখিত। আপনি বর্ণিত হিসাবে আমি মডেল চালানোর চেষ্টা করছি, কিন্তু CSV নিয়ে আমার সমস্যা হচ্ছে। আমি এক্সেলের একটি ফাঁকা সিএসভি ফাইল তৈরি করে এটিকে সংরক্ষণ করেছি, তারপরে এটি মডেলটিতে লোড করেছি। ত্রুটি 000539: চলমান ত্রুটি: এক্সপ্রেশন চলমান: multivaluesToCsv (r "% CSV ফাইল%", "% FC নাম মান%", "% নূন্যতম মান%", "% গড় মান%", "% সর্বাধিক মান%") <টাইপ 'ব্যতিক্রম .IOError '>: [এর্নো 13] অনুমতি অস্বীকার করেছে: u'% CSV ফাইল% 'কার্যকর করতে ব্যর্থ হয়েছে (মান গণনা করুন)। আমি এই ত্রুটি পেতে থাকি। আমার সিএসভি কে CSVFile.csv বলা হয়।
জেপিডি

1
কেবল এটি স্থির করে নিন - এটি হ'ল সঠিক সমাধান। আপনার সাহায্যের জন্য অনেক ধন্যবাদ!
জেপিডি

পাইথন কোডটি আপনার জন্য সিএসভি ফাইল তৈরি করবে, আগে এটি তৈরি করার দরকার নেই। যদিও আপনি দেখেছেন, আপনি যদি এক্সেলের মধ্যে ফাইলটি খোলেন, যা ফাইলটি লক করে এবং এটি বন্ধ না করা পর্যন্ত পাইথন এটিতে লেখা যায় না।
blah238

2
এফওয়াইআই আমি একাধিকবার গণনার মান গণনা এড়াতে নেস্টেড মডেলগুলি ব্যবহার করার জন্য নির্দেশাবলী এবং স্ক্রিনশটগুলি আপডেট করেছি এবং যেখানে পাঠ্য ফাইলটি আগেই উপস্থিত ছিল সেই সমস্যাটি ঠিক করেছি (আপনি এখন এর আউটপুট অবস্থান এবং ফাইলের নাম দুটি পৃথক পরামিতি হিসাবে উল্লেখ করেছেন)।
blah238

দুর্দান্ত উত্তর! একটি সিএসভি ফাইলে জিওস্টাটিস্টিকাল লেয়ার ক্রস বৈধকরণ পরিসংখ্যান আউটপুট করার অনুরূপ সমস্যা সমাধানে আমাকে সহায়তা করেছে। ধন্যবাদ @ ব্লাহ 238!
সুতি.রকউড

1

আপনার মডেলটি যে আউটপুটটি বর্ণনা করে তা কেবল বৈশিষ্ট্যের টেবিলটিতে আপডেট হওয়া কোনও মান নয়? আপনি কি আপডেটড শেফফিলের সাথে সম্পর্কিত .dbf ফাইলটি সহজেই খুলতে পারবেন না?

এটি ব্যর্থ হয়ে সারণী নির্বাচন (বিশ্লেষণ সরঞ্জাম> এক্সট্র্যাক্ট) এর এসকিউএল কোয়েরি নিয়ে কাজ করা উচিত।


হ্যালো, আপনার উত্তরের জন্য ধন্যবাদ। আমি আশঙ্কা করি এটি প্রতিটি শেফফাইলের .dbf ফাইল আপডেট করে না। মডেল বিল্ডারে 'টেবিল নির্বাচন' যুক্ত করা কোনওভাবেই কাজ করে না, কারণ আমি 'ন্যূনতম / গড় / সর্বাধিক দূরত্ব' বা 'আউটপুট মানগুলি' সরঞ্জামটির ইনপুট হিসাবে সংযুক্ত করতে পারি না।
জেপিডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.