পাইথন স্ক্রিপ্ট সরঞ্জাম পরামিতিগুলিতে মাল্টিভ্যালু ব্যবহার করছেন?


10

আমার স্ক্রিপ্টটির জন্য নির্বাচিত একক বৈশিষ্ট্য শ্রেণীর সাথে দুর্দান্ত কাজ করে clip_fc = arcpy.GetParameter(0)

তবে আমি যখন স্ক্রিপ্ট বৈশিষ্ট্যে মাল্টিভ্যালুতে ক্লিপ_এফসি সেট করি এবং তারপরে বেশ কয়েকটি বৈশিষ্ট্য শ্রেণি নির্বাচন করি, তখন আমি একটি ত্রুটি পাই "প্যারামিটারগুলি বৈধ নয়।"

আমি কোথায় ভুল করছি কেউ আমাকে দেখাতে পারে?

import arcpy
import os.path
from arcpy import env

arcpy.env.workspace = r"C:\GIS Home\project_1\clipshps\Combined_mf.gdb"
arcpy.env.overwriteOutput = True
clip_fc = arcpy.GetParameter(0)
clip_name = str(clip_fc)
output_dir = r"C:\GIS Home\project_1\clipshps\outputs_clip"

for fds in arcpy.ListDatasets():
    for fc in arcpy.ListFeatureClasses('','',fds):
        out = os.path.join(output_dir, fc + "_" + clip_name[40:] + "_clip.shp")
        arcpy.Clip_analysis(fc, clip_fc, out, "")

1
আপনি কীভাবে এটি ব্যবহার করছেন তা দেখতে আপনি কী এতে স্ক্রিপ্টটি এফসি_লিস্টের সাথে রাখতে পারেন?
om_henners

হাই @ অ্যাম_হেনার্স দুঃখিত, আমি আমার প্রশ্নটি সংশোধন করেছি, এখন আরও বেশি বোঝা উচিত।
ম্যাট

উত্তর:


21

আপনাকে আপনার ইনপুটগুলি লুপ করতে হবে। মাল্টিভ্যালুটি সেমিকোলন সীমাবদ্ধ। এতে বিভক্ত হয়ে সেগুলির মধ্য দিয়ে লুপ করুন। (এফসিএস কীভাবে উপস্থাপন করা হয় তা দেখানোর জন্য অ্যাডমেসেজগুলি)

import arcpy

ins = arcpy.GetParameterAsText(0)
arcpy.AddMessage(ins)

for fc in ins.split(';'):
    arcpy.AddMessage(fc)
    arcpy.Clip_analysis(fc, clipfeats, out)

যদিও আমি আপনার কর্মপ্রবাহ সম্পর্কে পুরোপুরি নিশ্চিত নই। আপনি ক্লিপ করতে একাধিক বৈশিষ্ট্যে চলে যাচ্ছেন, তবে একটি জিডিবিতে একাধিক বৈশিষ্ট্যগুলির মাধ্যমে পুনরাবৃত্তি করছেন? আমি উপরে যে যুক্তি রেখেছি তা আপনাকে নিতে হবে এবং কী ইনপুটগুলির সংমিশ্রণটি চান তা নির্ধারণ করতে হবে (একটি জিডিবি + 1 এর মধ্যে 1 বা অনেকগুলি এফসি বা আপনার সরঞ্জামটিতে অনেকগুলি ইনপুট)

সম্পাদনা করুন ... আপনার মন্তব্যের উপর ভিত্তি করে আপনি অনেকগুলি বৈশিষ্ট্য শ্রেণি দ্বারা ক্লিপযুক্ত অনেকগুলি বৈশিষ্ট্য শ্রেণি চান। আপনার এবং আমার উপর ভিত্তি করে কোডটি এই ম্যাশ আপ ব্যবহার করে দেখুন:

import arcpy, os

ins = arcpy.GetParameterAsText(0)
arcpy.AddMessage(ins)

arcpy.env.workspace = r"C:\GIS Home\project_1\clipshps\Combined_mf.gdb"
output_dir = r"C:\GIS Home\project_1\clipshps\outputs_clip"


for fds in arcpy.ListDatasets():

    # will loop for every featureclass
    for fc in arcpy.ListFeatureClasses('','',fds):            

        # will loop for each input fc from the tool
        for fc_clip in ins.split(';'):
            outName = os.path.join(output_dir, str(os.path.basename(fc)) + "_" + str(os.path.basename(fc_clip)))
            arcpy.Clip_analysis(fc, fc_clip, outName, "")

2
এখানে ইএসআরআই স্ক্রিপ্ট সরঞ্জামের পরামিতি সহায়তা ফাইলগুলির লিঙ্ক । তারা একটি কোড উদাহরণও দেয়।
রায়

ধন্যবাদ @ কিব্বমা আপনার উত্তরটির দিকে তাকিয়ে আমার মনে হয় আমি এটিকে ভুল পথে চালাচ্ছি। আমার একটি জিওডাটাবেস রয়েছে যা বেশ কয়েকটি বৈশিষ্ট্যযুক্ত ক্লাস রয়েছে এবং আমি প্রতিটি ফিচার ক্লাসে বিভিন্ন শেফফায়ার ব্যবহার করে বেশ কয়েকবার ক্লিপ করতে চাই।
ম্যাট 19

@ কিব্বা চেষ্টা করেছিলেন এবং পেয়েছেন যে 'ক্লিপ 1 বিদ্যমান নেই বা সমর্থিত নয়'
ম্যাট

উম্মম এটা আমার জন্য ভাল কাজ করে? আমি ভাবতে পারি কেবলমাত্র আউটপুট ডির। আপনার আউটনেমের শেষে আপনাকে ".shp" যুক্ত করতে হবে এটি একটি ফোল্ডার হিসাবে, কোনও জিডিবি নয়।
KHibma

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