PythonスクリプトツールのパラメーターでMultiValueを使用していますか?


10

私のスクリプトは、に対して選択された単一のフィーチャクラスで正常に動作しclip_fc = arcpy.GetParameter(0)ます。

しかし、スクリプトのプロパティでclip_fcを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 2012年

hi @om_henners申し訳ありませんが、私の質問を修正しました。
マット

回答:


21

入力をループする必要があります。複数値はセミコロンで区切られます。その上で分割し、それらをループします。(FCの表示方法を示すAddMessages)

import arcpy

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

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

あなたのワークフローは完全にはわかりませんが。クリップする複数の機能を渡すだけでなく、GDBの複数の機能を反復処理しますか?上記のロジックを使用して、必要な入力の組み合わせを確認する必要があります(GDB内の1つ以上のFC +ツールへの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
ここに、ESRI スクリプトツールパラメータヘルプファイルへのリンクがあります。彼らはコード例も提供しています。
Roy

ありがとう@KHibmaあなたの答えを見て、私はこれについて間違った方向に進んでいると思います。多数のフィーチャクラスを含むジオデータベースがあり、さまざまなシェープファイルを使用して各フィーチャクラスを数回クリップしたい。
マット

@KHibmaはそれを試み、「clip1が存在しないかサポートされていません」を取得しました
Matt

うーん、それは私にとってはうまくいきますか?私が考えることができるのは出力ディレクトリだけです。アウトネームの最後に、gdbではなくフォルダとして「.shp」を追加する必要がある場合があります。
KHibma 2012年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.