多项选择

XLSForm 支持 select_one(单选)、select_multiple(多选)和评级(对选项列表进行评级排序)问题。 记录多项选择问题需要向 Excel 工作簿添加选择工作表。 以下是 select_one 问题的示例:

表单中的单选问题
表单中的单选问题

请注意,调查工作表中的 yes_no 必须与选择工作表中列表名称列中的 yes_no 相匹配。 由此确保表单可针对特定问题显示正确的答案选项列表。

默认情况下,在发布调查后,select_one 问题中的选项将添加至调查要素图层作为编码值属性域。 可以禁止在发布过程中创建属性域。 有关详细信息,请参阅发布选项

当修改 select_one 问题的选择并重新发布调查时,Survey123 Connect 将显示更改汇总并允许您确定是否应将这些更改应用于要素图层中的属性域。 有关详细信息,请参阅更新调查

警告:

以下是使用包含重复选项名称的选项列表时的限制:

  • select_multiple 问题不支持重复选项名称。
  • 多语言调查不支持重复选项名称。
  • jr:choice-name() 函数将返回列表中第一个重复选项的标注。
  • 当从收件箱草稿发件箱已发送概述文件夹打开时,select_one 问题会恢复至列表中的第一个重复选项。

还可以添加允许选择多个答案的多项选择问题,例如:

表单中的多选问题
表单中的多选问题

默认情况下,这些选择将按照选择工作表中提供的顺序显示。 您也可以通过在参数列输入 randomize=true 来对选择显示顺序进行随机化。

警告:

在 select_multiple 或评级问题中收集的所有值将保存为以逗号分隔的列表,因此请避免在选项列表的名称列中使用逗号。 另请注意,select_multiple 和评级问题仅将选择的名称发送到要素服务,而非由 select_one 问题提交的名称和标注。

评级问题的值将保持为空,直到用户修改选择顺序为止。 如果已设置默认值,则除非用户更改选择顺序,否则将应用默认顺序。

可以使用 selected-at 函数返回有关 select_multiple 问题的单个答案。 以下将返回针对 select_multiple 问题的第一个答案的名称值:

selected-at(${species}, 0)

要发送答案的标注,您可以使用 jr:choice-name 函数。 要获取同一 select_multiple 问题的第二个答案的标注值,请使用以下命令:

jr:choice-name(selected-at(${species}, 1), '${species}')

指定其他

对于多项选择问题,如果未列出所需选择,则调查可能包含选择其他答案的选项。 随后系统可能要求调查对象指定其他选项。 您可以使用手动方法或内置方法在 XLSForm 中执行此操作。 内置方法比手动方法更快速且更容易配置,但存在一些限制。

手动方法

建议使用手动方法,因为该方法允许您指定其他选择的名称和标注,以及采集其他响应的文本问题的名称和标注。 您可以为这些名称和标注提供译文。 您还可以将约束和外观应用于文本问题并将其设置为必填问题。

首先,在选择工作表上的问题的选择列表中添加其他选择。 为该选择指定名称和标注,就像为列表中的任何其他选择指定的那样。 在以下示例中,颜色选择列表中有一个名为其他的选择。

选择工作表上具有其他选择的选择列表

在调查工作表上,添加一个文本问题以采集其他响应。 添加相关表达式,从而使文本问题仅在选中其他选择时才相关。 在以下示例中,当 select_one 问题的答案是其他时,other_color 问题将相关。

调查工作表上附加文本问题的相关表达式

对于多语言调查,可以翻译问题和选择。 在以下示例中,调查工作表中为 select_one 问题和文本问题提供了法语和希腊语译文。

调查工作表上的已翻译问题标注

此外,选择工作表上也提供了译文,其中包括其他选择。

选择工作表上的已翻译选择

内置方法

通过此方法,Survey123 Connect 会自动创建其他选项和问题,以采集其他响应。 要使用此方法,请在调查工作表中类型列的选项列表名称后面输入 or_other其他选择将显示在问题的选择列表中。 在选择其他选择后,将显示指定其他问题,以供用户提供其自己的答案。 为了存储此答案,Survey123 Connect 会自动使用多选问题的名称加上 _other(例如 favorite_toppings_other)在要素图层中额外创建一个字段。 请参阅以下示例:

在表单中选择多个或其他问题
警告:

指定其他问题的标注只能以英语显示。

如果基于现有要素图层创建调查,则不会自动创建指定其他问题的字段,并且不会发布调查。 必须在要素图层中手动创建指定其他问题字段,在多选问题名称的后面加上 _other,例如 favorite_toppings_other

外部选项列表

可以将 select_one 和 select_multiple 问题的选项列表存储在外部 .csv 文件中。 当选项列表较大、调查包含多个选项列表和在 Survey123 外部管理选项列表时,此方法是理想之选。 请勿将外部选项列表与外部选择混淆,后者的选项必须在其他工作表中列出。

.csv 文件必须包含名称和标注列。

注:

如果您的 .csv 文件缺少列标题,或者在文件的行末尾具有一个尾随逗号,则无法将文件导入到调查中。

为获得最佳结果,请使用 UTF-8 字符编码对 .csv 文件进行编码。 如果您使用 Microsoft Excel 创建 .csv 文件,请将其另存为 CSV UTF-8

.csv 文件中可能包含翻译后的标注列,但翻译后的选项仅会显示在 Survey123 ConnectSurvey123 外业应用程序中,而不会显示在 Survey123 Web 应用程序中。

要包含具有外部选项列表的问题,请输入问题类型(select_one_from_file 或 select_multiple_from_file),然后输入 .csv 文件的名称(例如 select_one_from_file CoverType.csv)。 文件名称区分大小写,且不允许有空格。

添加 .csv 文件的方法有两种:将文件存储在调查的 media 文件夹中,或链接到 ArcGIS 中托管的 .csv 文件

提示:

运行将选项列表转换为 CSV 工具以自动将选项列表从选项工作表迁移到 .csv 文件。

链接 .csv 文件

要将 .csv 文件从 ArcGIS 内容链接到调查,请执行以下操作:

  • 确保 .csv 文件托管在 ArcGIS OnlineArcGIS Enterprise 中,并且具有与调查相同的共享权限。
  • 在尝试链接内容之前,请确保将调查发布到 ArcGIS。
  • Survey123 Connect 中,打开调查,然后单击链接内容选项卡。 单击链接内容按钮,选择 CSV,然后浏览至要链接的 .csv 文件并选择该文件。

要使表单预览显示链接的 .csv 文件中的选项,在 Survey123 Connect 中的链接内容选项卡上,单击下载按钮 下载。 这会将 .csv 文件的副本放置在调查的媒体文件夹中。 链接的文件将随调查一起在 Survey123 外业应用程序中自动下载。

如果您手动将 .csv 文件放置在调查的媒体文件夹中,然后在稍后将同名的 .csv 文件上传到 ArcGIS 并将其链接到调查,则调查中的 .csv 文件将从链接的内容(如果较新)中更新。

将选项列表转换为 CSV

运行 Survey123 Connect 中的将选项列表转换为 CSV 工具,以自动将指定的选项列表从选项工作表迁移到媒体文件夹中的新 .csv 文件。 此工具还会将调查工作表中的相应问题修改为使用 select_one_from_file 和 select_multiple_from_file 问题类型。

要运行工具,请完成以下步骤:

  • Survey123 Connect 中配置 Python 环境,以便运行工具。 有关详细信息,请参阅配置 Python
  • 打开调查的 XLSForm。 在选项工作表中,添加一个名为 esri_tool_convert_csv 的列。 在您想要转换为外部选项列表的每个选项列表中,至少为其中一行添加值 yes。 保存并关闭文件。
  • Survey123 Connect 中,打开调查,单击工具,然后选择将选项列表转换为 CSV

转换完成后,.csv 文件将保存到各个迁移选项列表的媒体文件夹中。 文件名称与原始选项列表的名称值一致(list_name 列)。 选项工作表将更新为仅包含其余未迁移的列表。 其中仍包含原始的自定义列标题。 在调查工作表中,适用的 select_one 和 select_multiple 问题更改为 select_one_from_file 和 select_multiple_from_file 以引用新的外部选项列表。 原始选项工作表会保存至 choices_backup 工作表,以供您验证结果或将其恢复。 您可以保留或删除备份工作表。

对于评级问题、表-列表组或包含搜索外观的问题,该工具不会转换选项列表。 不会修改调查中任何使用这些选项列表的问题。

如果工具检测到不受支持的问题,则会在调试文件夹中创建一个 .xlsx 文件,文件中包含受影响的选项列表的名称。 您可以在以下文件夹找到此文件:

C:\Users\<username>\ArcGIS\My Survey Designs\<surveyName>\debug\convertchoicelists