Mon script fonctionne correctement avec une seule classe d'entités sélectionnée pour clip_fc = arcpy.GetParameter(0)
.
Cependant, lorsque j'ai défini clip_fc sur MultiValue dans les propriétés du script, puis que j'ai sélectionné plusieurs classes d'entités, j'obtiens une erreur «Les paramètres ne sont pas valides».
Quelqu'un peut-il me montrer où je me trompe?
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, "")
Réponses:
Vous devez parcourir vos entrées. Les valeurs multiples sont délimitées par des points-virgules. Séparez-les et parcourez-les. (AddMessages pour montrer comment les fcs sont présentés)
Bien que je ne sois pas entièrement sûr de votre flux de travail. Vous passez plusieurs fonctionnalités à clipser, mais vous parcourez également plusieurs fonctionnalités dans un GDB? Vous devrez prendre la logique que j'ai placée ci-dessus et déterminer quelle combinaison d'entrées vous voulez (1 ou plusieurs FC à l'intérieur d'un GDB + 1 ou plusieurs entrées pour votre outil)
EDIT ... Sur la base de votre commentaire, vous souhaitez que de nombreuses classes d'entités soient coupées par de nombreuses classes d'entités. Essayez ce mélange de code basé sur le vôtre et le mien:
la source
la source