ArcGIS Python工具箱参数依赖项



我正在尝试连接两个参数。在第一个示例中,用户输入一个包含列表的文件(每行是一项)。在第二个,我希望设置字段或GPValueTable类型的参数。下面看看这部分代码当前的样子:

def getParameterInfo(self):
#Define parameter definitions
# Input Features parameter
in_features = arcpy.Parameter(
displayName="Input Features",
name="in_features",
datatype="DETextFile",
parameterType="Required",
direction="Input")
# User selection
selection_field = arcpy.Parameter(
displayName="Selection list",
name="selection_field",
datatype="Field",
parameterType="Required",
direction="Input")

selection_field.parameterDependencies = [in_features]

# Derived Output Features parameter
out_features = arcpy.Parameter(
displayName="Output Features",
name="out_features",
datatype="GPFeatureLayer",
parameterType="Derived",
direction="Output")

out_features.parameterDependencies = [in_features.name]
parameters = [in_features, selection_field]

return parameters

文本文件看起来像这样:

A
B
C

工具箱对话框输出只是a。我很难理解ArcGIS打算在这里创建什么。也许我使用了错误的数据类型,但是它们的参数解释并不是很清楚。

任何想法?

我想你是把这个术语搞混了。第二个参数的datatype="Field"并不意味着数据可以从写入数据列的文本文件中读取/解析,实际上它是一个适当表的模式/字段,期望不是一个简单的文本,而是表/特征类的字段对象(在工具箱的运行时,分配给arcpy.Parameter产生一个地理处理值对象,但这是一个不同的讨论)。如果你看一下"创建值表参数"章节,GPFeatureLayer的(param0)字段在param1自动填充时,依赖设置。

解决方案是将selection_field设置为GPValueTable,并通过在参数更改后读取in_features的内容来填充selection_field.filters[0].list,但在def updateParameters(...)中尚未验证。看一看https://gis.stackexchange.com/questions/370250/updating-valuetable-parameter-of-arcpy-python-toolbox-tool

最新更新