पायथन स्क्रिप्ट टूल पैरामीटर में मल्टीवैल्यू का उपयोग करना?


10

मेरी स्क्रिप्ट एक एकल फीचर वर्ग के लिए ठीक काम करती है जिसके लिए चुना गया है clip_fc = arcpy.GetParameter(0)

हालाँकि जब मैं स्क्रिप्ट गुणों में MultiValue के लिए क्लिप_फेक सेट करता हूं और फिर कई फ़ीचर कक्षाएं चुनता हूं, तो मुझे एक त्रुटि मिलती है "पैरामीटर मान्य नहीं हैं।"

क्या कोई मुझे दिखा सकता है कि मैं कहाँ गलत हो रहा हूँ?

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
क्या आप इसमें fc_list के साथ स्क्रिप्ट डाल सकते हैं यह देखने के लिए कि आप इसका उपयोग कैसे कर रहे हैं?
om_henners

hi @om_henners क्षमा करें, मैंने अपना प्रश्न ठीक कर लिया है, अब और अधिक अर्थ निकालना चाहिए।
मैट

जवाबों:


21

आपको अपने इनपुट के माध्यम से लूप करने की आवश्यकता है। मल्टीवल्यू अर्धविराम सीमांकित है। उस पर विभाजित करें और उनके माध्यम से लूप करें। (AddMessages दिखाने के लिए कैसे fcs प्रस्तुत कर रहे हैं)

import arcpy

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

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

हालाँकि मैं आपके वर्कफ़्लो के बारे में पूरी तरह से निश्चित नहीं हूँ। आप एक क्लिप में कई विशेषताओं से गुजर रहे हैं, लेकिन एक GDB में कई विशेषताओं के माध्यम से पुनरावृत्ति भी कर रहे हैं? आपको मेरे द्वारा ऊपर रखा गया तर्क लेना होगा और यह पता लगाना होगा कि आप कौन सा इनपुट चाहते हैं (1 या कई एफडी एक GDB + 1 या आपके उपकरण के कई इनपुट के अंदर)

EDIT ... आपकी टिप्पणी के आधार पर आप चाहते हैं कि कई फ़ीचर वर्ग कई फ़ीचर क्लास से जुड़े हों। अपनी और मेरी के आधार पर कोड के इस मैश का प्रयास करें:

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
यहां ESRI स्क्रिप्ट टूल पैरामीटर हेल्प फाइल्स का लिंक दिया गया है । वे एक कोड उदाहरण भी प्रस्तुत करते हैं।
रॉय

धन्यवाद @KHibma आपके उत्तर को देखते हुए मुझे लगता है कि मैं इस गलत तरीके के बारे में जा रहा हूं। मेरे पास एक जियोडैटबेस है जिसमें कई फीचर क्लास हैं, और मैं अलग-अलग शेपफाइल्स का उपयोग करके प्रत्येक फीचर क्लास को कई बार क्लिप करना चाहता हूं।
मैट

@ हबीमा ने कोशिश की और 'क्लिप 1 मौजूद नहीं है या समर्थित नहीं है'
मैट

उम्म यह मेरे लिए ठीक काम करता है? केवल एक चीज जो मुझे लगता है कि आउटपुट डायर है। आपको एक फ़ोल्डर के रूप में अपने outname के अंत में ".shp" जोड़ने की आवश्यकता हो सकती है, gdb की नहीं।
काइबमा

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