Meu script funciona bem com uma única classe de recurso selecionada para clip_fc = arcpy.GetParameter(0)
.
No entanto, quando defino clip_fc como MultiValue nas propriedades do script e, em seguida, seleciono várias classes de recursos, recebo o erro "Os parâmetros não são válidos".
Alguém pode me mostrar onde estou errado?
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, "")
arcgis-desktop
arcpy
clip
Matt
fonte
fonte
Respostas:
Você precisa percorrer suas entradas. O valor múltiplo é delimitado por ponto e vírgula. Divida isso e passe por eles. (AddMessages para mostrar como os fcs são apresentados)
Embora eu não tenha muita certeza do seu fluxo de trabalho. Você está passando vários recursos para gravar, mas também iterando através de vários recursos em um GDB? Você terá que seguir a lógica que eu coloquei acima e descobrir qual combinação de entradas você deseja (1 ou muitos FCs dentro de um GDB + 1 ou muitas entradas para sua ferramenta)
EDITAR ... Com base no seu comentário, você deseja muitas classes de recursos cortadas por muitas classes de recursos. Experimente este mash up de código com base no seu e no meu:
fonte
fonte