Survey123表单设计?XLSForm怎么写?

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

如果你正在搜索“Survey123表单设计?XLSForm怎么写?”,大概率是已经知道 Survey123 可以做外业调查,但卡在 XLSForm 表格到底怎么组织、字段怎么写、约束和跳题逻辑怎么配置。本文以 GIS 外业采集场景为例,讲清楚 Survey123 表单设计的基本结构、常用字段写法、常见错误和发布前检查方法。

引言:Survey123表单设计为什么离不开XLSForm

ArcGIS Survey123 是 Esri 生态中常用的移动端表单采集工具,适合做巡查、核查、资产登记、灾害调查、样点记录等 GIS 外业任务。它的核心不是“画一个表单界面”,而是通过 XLSForm 定义字段、控件、逻辑、校验规则和提交到图层的属性结构。

简单说,XLSForm 就是一个 Excel 表格规范。你在 Excel 中写好字段类型、字段名称、显示标签、是否必填、取值约束、选择项、跳题逻辑,Survey123 Connect 会把它转换成可发布的调查表单。

对于 GIS 用户来说,正确设计 XLSForm 的价值主要有三点:

  • 让外业人员按统一规则采集数据,减少漏填和错填。
  • 让提交结果直接进入 ArcGIS Online 或 Portal 要素图层,便于制图、分析和共享。
  • 通过约束、默认值、计算字段和地理位置字段,提高数据质量。
Survey123表单设计 XLSForm怎么写 工作流程示意图
Survey123 表单设计的典型流程:编写 XLSForm、预览校验、发布调查、采集并进入 GIS 图层。

背景:XLSForm文件通常由哪几个工作表组成

在 Survey123 Connect 中新建高级模板后,你会看到一个 Excel 文件。最常用的 XLSForm 工作表包括 surveychoicessettings

工作表 作用 GIS表单设计中的典型用途
survey 定义表单问题、字段、控件、逻辑和校验规则 巡查编号、设施类型、坐标点、照片、备注、检查结果
choices 定义单选、多选、下拉列表的选项 设施类型、道路等级、问题类型、处理状态
settings 定义表单标题、表单ID、提交图层等整体配置 调查名称、实例名称、发布服务名称

其中最重要的是 survey 工作表。很多 Survey123 表单设计问题,其实都是 survey 表中的 typenamelabelrequiredconstraintrelevant 这些列没有写对。

原理:XLSForm怎么写才能变成可用的GIS采集表

XLSForm 的基本原理是:每一行代表表单中的一个问题或一个结构控制项,每一列代表这个问题的属性。Survey123 Connect 会读取这些配置,生成移动端和网页端可填写的调查表。

survey表的核心列

列名 含义 示例
type 问题类型或控件类型 textintegerselect_one facility_typegeopoint
name 字段名,通常会成为图层字段名 facility_idcheck_datestatus
label 用户在表单中看到的问题文字 设施编号检查日期是否存在破损
required 是否必填 yes
constraint 填写约束 . >= 0
relevant 跳题显示条件 ${is_damaged}='yes'

choices表的核心列

如果你在 survey 表中使用了 select_oneselect_multiple,就必须在 choices 表中定义选项。

列名 含义 示例
list_name 选项列表名称,需要和 type 中的列表名一致 facility_type
name 实际存储值 road_lamp
label 显示给调查员看的文字 路灯

这里要特别注意:name 是入库值,label 是显示值。后续在 ArcGIS Pro、Web Map、Dashboard 或 Python 中统计时,通常处理的是 name 存储值。

步骤:从零写一个Survey123表单设计示例

下面用“市政设施巡查”作为示例,演示 XLSForm 怎么写。这个表单包含设施编号、设施类型、位置、是否损坏、损坏类型、照片和备注。

步骤1:在Survey123 Connect中新建高级表单

  1. 打开 Survey123 Connect。
  2. 点击新建调查。
  3. 选择高级模板或从 XLSForm 创建。
  4. 输入调查名称,例如“市政设施巡查”。
  5. 打开生成的 Excel XLSForm 文件。

如果你只是用网页设计器拖拽控件,可以完成简单表单。但只要涉及跳题、计算、复杂约束、重复记录、外部选择列表,建议使用 Survey123 Connect 和 XLSForm。

步骤2:编写survey工作表

survey 工作表中,可以按下面的方式组织字段。

type name label required constraint relevant
text facility_id 设施编号 yes
select_one facility_type facility_type 设施类型 yes
geopoint location 采集位置 yes
select_one yes_no is_damaged 是否损坏 yes
select_multiple damage_type damage_type 损坏类型 ${is_damaged}='yes'
image photo 现场照片 ${is_damaged}='yes'
text remark 备注

这个 Survey123 表单设计示例里,geopoint 用于采集空间位置,最终会成为 GIS 要素的几何位置;image 用于采集附件;relevant 用于控制“是否损坏”为“是”时才显示损坏类型和照片。

步骤3:编写choices工作表

choices 工作表中,选项列表名称必须和 survey 表中的 select_one facility_typeselect_one yes_noselect_multiple damage_type 对应。

list_name name label
facility_type road_lamp 路灯
facility_type manhole_cover 井盖
facility_type traffic_sign 交通标志
yes_no yes
yes_no no
damage_type broken 破损
damage_type missing 缺失
damage_type tilted 倾斜

建议选项的 name 使用英文、小写、下划线,不要使用空格和特殊字符。这样后续在 ArcGIS Pro 符号化、Arcade 表达式、Python 脚本或 Dashboard 统计时更稳定。

步骤4:配置settings工作表

settings 工作表用于配置调查整体信息。常用列包括 form_titleform_idinstance_name

form_title form_id instance_name
市政设施巡查 municipal_facility_check ${facility_id}

instance_name 决定提交记录在 Survey123 收件箱、草稿或已发送列表中的显示名称。对于外业调查,建议使用编号、名称或日期组合,而不是空值。

步骤5:添加必填、约束和提示信息

一个可用的 XLSForm 不只是能填写,还要能减少错误。常见校验列包括 requiredconstraintconstraint_messagehint

type name label required constraint constraint_message hint
integer risk_level 风险等级 yes . >= 1 and . <= 5 风险等级必须填写1到5之间的整数 1最低,5最高

这里的点号 . 表示当前问题的填写值。约束条件不满足时,Survey123 会阻止提交并显示提示信息。

步骤6:使用relevant实现跳题逻辑

跳题逻辑是 Survey123 表单设计中最常用的功能之一。比如只有当“是否损坏”为“是”时,才显示“损坏类型”。

${is_damaged}='yes'

这段写在 damage_typephoto 字段的 relevant 列中。注意这里判断的是 choices 表里的 name 值,而不是中文 label 值。

步骤7:在Survey123 Connect中预览和发布

  1. 保存 Excel 文件。
  2. 回到 Survey123 Connect,等待表单自动刷新。
  3. 如果出现红色错误提示,先修正 XLSForm 再继续。
  4. 在预览窗口逐项填写,检查控件、必填项、跳题逻辑和照片附件。
  5. 确认无误后点击发布。
  6. 发布后到 ArcGIS Online 或 Portal 检查生成的要素图层字段。

发布前一定要确认字段名。Survey123 表单一旦发布并产生数据,后续随意修改字段名或字段类型,可能导致数据结构不一致,甚至影响已有服务。

常见坑:Survey123表单设计和XLSForm怎么写最容易出错

1. name字段使用中文或特殊字符

name 最好使用英文、数字和下划线,并且不要以数字开头。虽然某些情况下中文字段名能被识别,但在服务发布、脚本处理、跨系统共享时更容易出问题。

2. choices表的list_name和survey表不一致

如果 survey 表中写的是 select_one facility_type,那么 choices 表中必须有 list_namefacility_type 的选项。大小写、空格、拼写不一致都会导致表单无法正常显示。

3. relevant判断写成中文label

很多新手会写成:

${is_damaged}='是'

如果 choices 表中 nameyes,正确写法应该是:

${is_damaged}='yes'

XLSForm 逻辑表达式判断的是实际存储值,不是界面显示文字。

4. select_multiple后续统计不方便

select_multiple 适合多选,但它会把多个选项存储在同一个字段中。后续如果要在 ArcGIS Pro、Dashboard 或 Python 中按单个类型精确统计,需要额外拆分或使用表达式处理。

如果业务上每类问题都需要独立统计,可以考虑改成多个 select_one yes_no 字段,或者在后续数据处理中拆分多选结果。

5. geopoint没有考虑定位精度

geopoint 能采集点位,但外业数据质量不仅取决于字段类型,还取决于设备定位精度、采集环境、是否手动偏移和底图参考。对于精度要求高的项目,应配合高精度 GNSS 设备,并记录精度字段。

6. 发布后频繁改字段结构

Survey123 表单发布后,字段结构会和托管要素图层绑定。后续可以增加一些字段,但删除字段、改字段类型、改字段名都要谨慎。正式采集前,建议先用测试调查完整跑一遍流程。

方法比较:网页设计器、Survey123 Connect和XLSForm怎么选

方法 适合场景 优点 限制
Survey123网页设计器 简单问卷、基础属性采集 上手快,不需要写 XLSForm 复杂逻辑、外部列表、重复记录等能力有限
Survey123 Connect 专业外业调查、GIS资产巡查、复杂表单 支持完整 XLSForm,逻辑控制能力强 需要理解字段、表达式和表单结构
直接维护XLSForm模板 多项目复用、标准化采集、批量表单设计 结构清晰,便于版本管理和复制修改 对命名规范和测试流程要求更高

如果只是做一次简单信息收集,可以先用网页设计器。如果是 GIS 项目中的正式外业采集,尤其涉及位置、照片、跳题、质量控制和后续空间分析,建议直接使用 Survey123 Connect 编写 XLSForm。

检查清单:发布Survey123表单前必须核对什么

  • 字段名:name 是否为英文、数字、下划线组合,是否避免重复。
  • 字段类型:textintegerdecimaldategeopoint 是否符合业务含义。
  • 选项列表:select_oneselect_multiple 是否在 choices 表中有对应列表。
  • 必填项:关键字段是否设置 required
  • 约束条件:数值范围、日期范围、文本格式是否有 constraint
  • 跳题逻辑:relevant 是否使用 choices 表中的 name 值判断。
  • 空间字段:是否配置了 geopoint,是否需要记录定位精度。
  • 附件字段:照片、签名、文件上传是否符合外业网络和存储要求。
  • 预览测试:是否在 Survey123 Connect 中完整填写过至少3条测试记录。
  • 图层检查:发布后是否在 ArcGIS Online 或 Portal 中检查字段、域值、附件和空间位置。

FAQ:Survey123表单设计?XLSForm怎么写常见问题

Survey123表单设计一定要写XLSForm吗?

不一定。简单表单可以用网页设计器完成。但如果你需要复杂跳题、计算字段、重复记录、外部选择列表、批量维护模板,XLSForm 更适合。

XLSForm里的type、name、label分别是什么意思?

type 决定控件和数据类型,name 是字段名或变量名,label 是用户在表单界面看到的问题文字。GIS 项目中最需要谨慎设计的是 name,因为它通常会影响发布后的要素图层字段。

Survey123的select_one和select_multiple有什么区别?

select_one 是单选,只能选择一个选项;select_multiple 是多选,可以选择多个选项。多选适合现场问题类型勾选,但后期统计会比单选复杂。

XLSForm跳题逻辑relevant怎么写?

常见写法是 ${字段名}='选项name值'。例如 ${is_damaged}='yes' 表示只有“是否损坏”的存储值为 yes 时,当前问题才显示。

Survey123采集的位置是什么坐标系?

Survey123 采集的空间位置会进入 ArcGIS 平台的要素图层,通常在 Web GIS 环境中以 WGS 84 或 Web Mercator 相关方式显示和服务化。实际项目中应关注发布图层、底图和后续分析环境的坐标系统一,避免和本地投影数据直接混用时产生偏移或面积长度计算误差。

发布后的Survey123表单还能修改吗?

可以修改部分内容,例如标签、提示、部分逻辑和新增字段。但字段名、字段类型、选择列表结构等涉及数据模型的内容要谨慎。正式项目建议先做测试版,确认无误后再发布生产版。

结论:先设计数据结构,再写Survey123 XLSForm

Survey123 表单设计的关键不是把问题堆进表格,而是先想清楚 GIS 数据最终要怎么入库、怎么制图、怎么统计、怎么质检。XLSForm 怎么写,本质上是在把业务调查流程转换成可执行的数据采集规则。

实操时可以按这个顺序推进:先确定字段和空间类型,再写 survey 表;需要选择项时补充 choices 表;最后配置 settings 并在 Survey123 Connect 中反复预览测试。只要字段命名规范、选择列表一致、跳题逻辑清楚、发布前检查完整,一个稳定可用的 Survey123 外业采集表单就能搭建起来。