XLSForm 是一项开放标准,用于简化表单的创作。 可以使用电子表格以便于阅读的格式进行创作。 有关 XLSForm 的信息,请访问 https://xlsform.org/。 Survey123 支持大多数(并非所有)XLSForm 标准的要素。
系统提供了多种选项,用于创作符合 XLSForm 的电子表格。 Microsoft Excel 是最常用的工具,也可以使用 Kingsoft Spreadsheets、Google Sheets 和 OpenOffice Calc。 系统还提供在线 XForms 构建器,该构建器可导出与 ArcGIS Survey123 结合使用的 XLSForm 电子表格。
为了帮助您创作表单,ArcGIS Survey123 包含 Survey123 Connect 桌面工具,该工具可与 XLSForm 创作工具结合使用以创建 XLS 文件。 Survey123 Connect 允许在创作或编辑 XLSForm 文件时对其进行预览、将表单发布到 ArcGIS Online 和 ArcGIS Enterprise,以及基于数据采集的表单规范来创建要素图层。 ArcGIS Survey123 Connect 可用于 Windows。
将表单发布到 ArcGIS 后,可以使用 Survey123 网站将您的表单与 ArcGIS 组织的成员进行共享。 您还可以对通过 Survey123 外业应用程序采集的所有数据的地图和表格进行分析,并导出调查结果。
考虑到本主题的目的,假设您使用ArcGIS Survey123 Connect 和 Microsoft Excel 来创作表单。
每个 Excel 工作簿通常具有两个工作表:调查和选项。 下文还将对第三个工作表 settings 进行说明。 工作表具有一组强制列,必须显示这些列,表单才能正常运行。 此外,每个工作表还具有一组可选列,这些可选列允许进一步控制表单中各个条目的行为。 每个强制列的每个条目必须均具有值,但可将可选列留空。 无论强制或可选,添加到 Excel 工作簿的列可以任何顺序进行显示。 您可以忽略可选列并将任意数量的行留空。 将忽略所有 .xls 文件格式,因此可以使用分割线、阴影和其他字体格式以提高表单的可读性。
调查工作表
此工作表可以为表单提供整体结构。 其中包含问题的完整列表以及有关如何在表单中显示问题的信息。 每行通常表示一个问题;但是,可以将以下所述的更多功能添加到表单,以改善用户体验。
调查工作表具有三个强制列:类型、名称以及标注或提示。
- 类型列可指定添加的 XLSForm 问题类型。 针对此列,系统提供详细定义的可能问题类型列表。
- 名称列可确定要素图层中字段的名称,问题的答案将存储在该字段中。 该列中不允许使用空格或特殊字符。 每个图层中所有问题的名称必须唯一。
- 标注和提示列包含问题的文本。 这是您将在表单中看到的文本。 一个问题至少需要一个标注或提示;建议提供标注以避免警告消息。 这些列中允许使用空格和特殊字符。 或者,可以使用翻译列。 标注和提示还支持有限的 HTML 代码和变量,这些代码和变量将在调查中替换为其他问题的响应。 有关详细信息,请参阅注释。
有关调查工作表中列的概述,请参阅调查工作表列。
选择工作表
此工作表用于指定多项选择问题的答案选择。 每行表示一个答案选择。 具有相同列表名称的答案选择会被视为一组相关选择的组成部分,并且将针对问题同时显示。 同时允许针对多个问题(例如,是或否问题)重用一组选择。
选择工作表具有三个强制列:列表名称、名称和标注。
- 列表名称列用于对一组相关答案选择进行分组。 具有相同列表名称的选择将表示为问题的一组答案。
- 名称列可指定 ArcGIS 中将保留的值。 名称列中的值不接受特殊字符。 不建议在选项列表中包含重复的选项名称。 有关重复选项名称的详细信息,请参阅多项选择问题。
- 标注列可按照您需要答案选择呈现在表单中的效果准确显示答案选择。 或者,可以使用标注翻译列。
在 Excel 中创作表格时,您使用的语法必须准确。 例如,如果将 choices 写为 Choices 或者 choice,则表单无法运行。
设置工作表
设置工作表是可选的,并且可进一步对表单进行自定义。 可用的自定义包括对表单进行编辑时所显示的标题、用于唯一标识各个完成表单的实例名称以及调查的唯一版本标识符等。 有关详细信息,请参阅设置。
补充工作表
Survey123 模板包含工作表,这些工作表包含可在表单中使用的属性、运算符和函数。 这些工作表还可用于填充调查和设置工作表中的下拉列表以及其他数据验证规则。 要确保数据验证能够按预期工作,建议您不要修改补充工作表的内容。
问题类型
XLSForm 支持各种问题类型。 例如,要采集商店的名称和位置,请记录如下信息:
下表列出了您可以在 XLSForm 的类型列中输入的问题,可接受的问题输入以及发布表单时在该问题的关联 ArcGIS 要素图层中创建的字段类型。 调查作者可以为许多这样的问题类型更改字段类型。 有关字段类型的详细信息,请参阅 Esri 自定义列。
问题类型 | 答案输入 | 默认字段类型 |
---|---|---|
integer | 整数数值输入。 | esriFieldTypeInteger |
decimal | 小数输入。 | esriFieldTypeDouble |
range | 输入给定范围的数值。 | esriFieldTypeInteger |
text | 自由文本答案。 | esriFieldTypeString |
select_one list_name | 多项选择问题,用户在其中只能选择一个答案。 将 list_name 替换为选项列表的名称。 可以更改字段类型;但是,在外业应用程序中,用于表达式中的选择名称将始终被视为字符串。 | esriFieldTypeString |
select_multiple list_name | 多项选择问题,用户在其中可以选择多个答案。 将 list_name 替换为选项列表的名称。 无法更改字段类型,并且在外业应用程序中,用于表达式中的选择名称将始终被视为字符串。 | esriFieldTypeString |
rank list_name | 评级问题;对选项列表进行评级排序。 将 list_name 替换为选项列表的名称。 无法更改字段类型,并且在外业应用程序中,用于表达式中的选择名称将始终被视为字符串。 | esriFieldTypeString |
note | 在屏幕上显示注释;无输入。 也可以显示隐藏的计算。 | esriFieldTypeString |
geopoint | 采集单个 GPS 坐标。 无法更改字段类型。 | esriFieldTypeGeometry |
geotrace | 在地图上采集线。 无法更改字段类型。 | esriFieldTypeGeometry |
geoshape | 在地图上采集面。 无法更改字段类型。 | esriFieldTypeGeometry |
date | 日期输入。 | esriFieldTypeDate |
时间 | 时间输入。 | esriFieldTypeString |
dateTime | 接受日期和时间输入。 | esriFieldTypeDate |
图像 | 拍照。 | 附件 |
begin group | 开始一组问题。 | 不适用 |
end group | 结束一组问题。 | 不适用 |
begin repeat | 开始一组重复问题。 | 不适用 |
end repeat | 结束一组重复问题。 | 不适用 |
计算 | 针对表单中的值执行计算。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
username¹ | 登录到 ArcGIS Online 或 ArcGIS Enterprise 时,此字段自动使用账户用户名进行填充。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
email¹ | 登录到 ArcGIS Online 或 ArcGIS Enterprise 时,此字段自动使用账户电子邮件地址进行填充。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
hidden | 不显示在表单上的字段。 使用 bind::esri:fieldType 和 bind::esri:fieldLength 列指定数据方案。 | esriFieldTypeString |
barcode | 扫描条形码。 | esriFieldTypeString |
start | 调查的开始日期和时间。 | esriFieldTypeDate |
end | 调查的结束日期和时间。 | esriFieldTypeDate |
deviceid | Survey123 生成的唯一 ID,表示采集调查的特定设备。 它不同于移动设备的国际移动设备识别码 (IMEI),因为运行 Survey123 的设备可能不具有 (IMEI)。 | esriFieldTypeString |
audio | 记录音频样本。 | 附件 |
file | 将文件上传至设备。 | 附件 |
¹ 更灵活的方法是使用 pulldata("@property") 函数检索值。 请参阅设备和用户属性。
Question Types 示例表单包含 ArcGIS Survey123 支持的所有问题类型。 您也可以参考快速参考以了解这些问题类型如何在 Survey123 web 设计器和 web 应用程序中呈现。
元数据
XLSForm 具有以下适用于元数据采集的数据类型选项:
元数据类型 | 描述 |
---|---|
start | 调查的开始日期和时间。 |
end | 调查的结束日期和时间。 |
username | 记录已登录到 ArcGIS Online 或 ArcGIS Enterprise 的当前用户的用户名。 此数据类型无输入。 |
记录已登录到 ArcGIS Online 或 ArcGIS Enterprise 的当前用户的电子邮件地址。 此数据类型无输入。 | |
deviceid | Survey123 生成的唯一 ID,表示采集调查的特定设备。 它不同于移动设备的 IMEI,因为运行 Survey123 的设备可能不具有 IMEI。 |
注:
尚不支持以下 XLSForm 元数据元素:subscriberid、simserial 和 phonenumber。
要采集此元数据的所有元素,请在调查开头添加以下内容:
ArcGIS Survey123 可自动捕获上述元数据条目。 这些条目在表单中不会表示为问题,但是,提交调查后,即可查看值。
如果添加 start 或 end 类型,则 ArcGIS Survey123 将针对调查自动启用要素图层的时间。 通过这种方式,您可以基于提交数据的日期对调查内容进行过滤。 如果要准确了解从打开表单到完成其标记过程中花费的时间,则添加 start 和 end 条目非常有用。
提示
有时,您会希望向表单上的问题添加提示,用来指导用户如何回答问题,但是又不希望将提示作为问题的一部分。 您可以向 XLSForm 中的问题添加提示。 添加提示列并添加提示消息。 请参阅以下示例:
您还可以使用 guidance_hint 列添加问题的指导提示。 指导提示进一步指导用户如何回答问题,但在用户点击显示在提示一侧的指导提示按钮之前,将保持隐藏状态。 仅当问题提示已经存在时,才能使用指导提示。
占位符文本
通过在 body::esri:style 列中设置 placeholderText 参数,还可以为接受键入输入的问题(例如文本、整数和小数问题,以及具有自动完成外观的 select_one 问题)提供占位符文本。 借助 placeholderText=@[hint] 或 placeholderText=@[guidance_hint],提示或指导提示将被隐藏,而提示文本将被放置在问题的输入区域内。 当问题为空时,占位符文本会显示在输入区域中。
注:
begin repeat 和 begin group 问题不支持提示。
Survey123 web 应用程序中不支持占位符文本。
更新模板
高级模板包含 Survey123 中支持的所有 XLSForm 要素,可在 Survey123 Connect 的新建调查对话框中找到该模板。 将定期更新该模板以新增功能并增强调查创作体验。 可以继续使用先前版本的模板,不会出现问题,但是您可能希望将现有调查更新为最新的 XLSForm 模板,以利用最新更改。
更新 XLSForm 模板工具用于将调查的现有 XLSForm 更新为最新版本的高级模板。 为了实现此目的,需要将调查、选择和设置工作表的内容复制到其在新模板中的对应行和列。 已添加的所有列以及 external_choices 工作表(如果正在使用外部选择)也会复制到新模板。
要运行该工具,必须在 Survey123 Connect 中配置 Python 环境。 有关详细信息,请参阅配置 Python。
在 Survey123 Connect 中,打开要更新的调查。 单击工具,然后单击更新 XLSForm 模板。 随即出现一个对话框,用于在工具运行期间显示消息。 在完成该过程后,调查文件夹中的 .xlsx 文件将更新为最新版本,并将在 Survey123 Connect 中重新加载表单预览。 如果在运行工具时遇到错误,将保留现有 XLSForm。
注:
调查的 XLSForm 必须为 .xlsx 文件。 无法对 .xls 文件运行更新 XLSForm 模板工具。
建议验证更新后的 XLSForm 中是否存在原始 XLSForm 中的列、数据验证、单元格格式化以及字体样式。 该工具将在 C:\Users\<username>\ArcGIS\My Survey Designs\<surveyName>\debug\template_updater 中创建现有 XLSForm 的备份和日志文件。 要从备份恢复调查,将 .xlsx 文件从 template_updater 文件夹复制到调查的根文件夹。 删除现有 XLSForm 并重命名备份以与原始表单匹配。
注:
每行的第一列中单元格的填充颜色将应用于更新后的模板的整行。
对于多语言调查,将从更新后的模板中排除 label::language (xx) 和 hint::language (xx) 等默认语言列。