Мой скрипт отлично работает с одним классом объектов, выбранным для 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, "")
arcgis-desktop
arcpy
clip
Matt
источник
источник
Ответы:
Вы должны пройти через ваши входы. Многозначный разделен точкой с запятой. Разделитесь на это и пройдитесь по ним. (AddMessages, чтобы показать, как представлены FCS)
Хотя я не совсем уверен в вашем рабочем процессе. Вы передаете несколько функций для закрепления, но также перебираете несколько функций в GDB? Вы должны будете взять логику, которую я разместил выше, и выяснить, какую комбинацию входов вы хотите (1 или много FC внутри GDB + 1 или много входов для вашего инструмента)
РЕДАКТИРОВАТЬ ... Исходя из вашего комментария, вы хотите, чтобы многие классы объектов были обрезаны по множеству классов объектов. Попробуйте эту смесь кода, основанную на вашем и моем:
источник
источник