使用Python和ArcGIS Desktop实施具有多列的MultiValue参数?


10

我正在使用ArcGIS(9.3)Python脚本。输入之一是功能列表。对于每个功能,我需要选择一个相应的字段。将参数设置为MultiValue可在UI中为所有正在处理的功能提供漂亮的表格。如何在MultiValue表中添加另一列以为每个功能选择一个字段?

交叉发布:http : //forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

来自ArcGIS论坛的Esri答案:

不幸的是,针对此的解决方案最近才在10.1中使用脚本工具的ValueTable输入实现。您将需要具有一些自定义验证的两个多值参数,才能使此功能适用于9.3.1。


如果您感兴趣的是生成多值选择列表-我最近看过此Esri博客文章,这可能会有所帮助。
Alex Tereshenkov

Answers:


1

尽管已经相当简单地完成了工作,但我已经找到了解决方法。我想创建一个多值参数,在其中添加许多FeatureLayers,然后为每个图层选择一个ID字段。我可以使用它,但是无法使用该字段作为下拉列表,因此用户必须手动输入字段名称。这是界面:

介面范例

如果有人设法解决了这个问题,或者ESRI的一些专家用他们的知识祝福了我们,我很乐于找出如何将我的第二列(站点ID)变成一个下拉列表,列出特定字段。如果要查看此示例,请查看“ 创建TIN”工具。

无论如何创建此界面,我都会创建一个脚本工具,并添加了要素图层类型的参数并将其设置为多值,如下所示。

初始界面设置

然后,我单击顶部的“验证”选项卡,然后单击“编辑”按钮。由于此参数是脚本工具中的第六个参数,因此我更新了以下代码:

def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""

    # Get the 6th parameter
    param = self.params[6]
    param.datatype = "Value Table"
    param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]    
    return

这会将接口重置为我想要的多列表。当您使用GetParameterAsText时,将以我的示例返回以下内容:

pipeline pid;Dredging did


我进行了更多研究,并使用python工具箱创建了该工具。它工作得很好,但是如果您返回并选择另一个ID,确实会有限制。我已经发布了代码的土工网在这里


0

如果要查找“站点ID”参数的下拉列表,则可以使用以下代码:

 param.filters[1].list = ['pid', 'id']

因此,您可以创建一个游标或使用另一种方法来读取FC的所有字段,并将它们作为列表传递给上一个句子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.