操作方法
在 Survey123 中选择多个问题将所选选项的名称存储为 CSV 字符串,即 Option1,Option2,Option3,Option4。 虽然存储选择的唯一名称很有用,但有时我们希望轻松访问所选选择的标注列表。 例如,植物名称 Acacia、Banksia、Callistemon 和 Eucalyptus。
与名称相比,在选择标注时,我们在命名约定方面具有更大的灵活性和自由度。 为了提高可读性,还必须重新格式化 CSV 字符串,以在选项之间包含空格,这在手动完成时非常耗时。 可以在 XLSForm 中创建一个新对象,以使用标注而不是名称重新格式化所选选项。 我们可以通过组合“计算”字段中的一系列公式来做到这一点。 本例使用了一些澳大利亚植物的学名和通用名。
由于我们将组合多个功能,因此最好从端点开始并向外构建。 首先,我们将使用 jr:choice-name() 和 selected-at() 函数:
jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}')
我们可以使用 concat() 函数将所有选定答案的所有标注连接成一个字符串,并带有我们想要的标点符号。
concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}'), ', and ', jr:choice-name(selected-at(${PlantSpeciesCSV},3), '${PlantSpeciesCSV}'))
从这里,我们需要创建一系列嵌套的 if 语句,以按所选答案的数量过滤标注。 我们将每个 if 语句的条件设置为在给定数字处有一个值或选择,则返回 true。 计数从零开始,因此“3”将返回第四个选定的选项。 例如,如果我们想在选择三个选项时显示标注,我们将条件设置为 selected-at(${PlantSpeciesCSV},2)。 如果此条件返回 TRUE,则输出串连字符串,即 Gold Dust Wattle、Silver Banksia 和 Willow Bottlebrush。 如果条件为 false,则测试下一个 if 语句。 这一直持续到条件返回 TRUE 为止。 如果不满足任何条件,则可以指定返回自定义语句,例如 No Plants Observed,指示未选择任何选项。
if(selected-at($PlantSpeciesCSV},3),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}'), ', and ', jr:choice-name(selected-at(${PlantSpeciesCSV},3),
'${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},2),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), 'and ', jr:choice-name(selected-at
(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},1),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), 'and ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},0),jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), 'No Plants Observed'))))
有一些事情需要注意:
文章 ID: 000031066
获取来自 ArcGIS 专家的帮助
下载 Esri 支持应用程序