XLSForm 的 Esri 自定义列可以为 Survey123 用户提供其他功能。
字段类型
使用 bind::esri:fieldType 自定义列来控制要在 ArcGIS 中针对调查问题创建的字段类型和长度。 有关支持的字段类型的详细信息,请参阅 ArcGIS 字段数据类型。
对于一些问题,您可以更改 Survey123 默认分配的字段类型。 下表列出了一些示例:
问题类型 | 默认字段类型 | 注释 |
---|---|---|
select_one | esriFieldTypeString | 要确保选项存储为整型,请更改为 esriFieldTypeInteger。 |
date | esriFieldTypeDate | esriFieldTypeDate 始终包含时间元素。 要仅存储日期,请更改为 esriFieldTypeDateOnly。 |
dateTime | esriFieldTypeDate | esriFieldTypeDate 不指示时区。 要在字段中包含时区,请更改为 esriFieldTypeTimestampOffset。 设置为 esriFieldTypeTimestampOffset 时,表单中的日期时间问题将显示一个时区选取器。 默认情况下,会应用设备的当前时区。 |
time | esriFieldTypeString | 要将时间存储为时间值,请更改为 esriFieldTypeTimeOnly。 |
要控制字段类型,请在 bind::esri:fieldType 列中提供以下值之一:
- esriFieldTypeString
- esriFieldTypeDate
- esriFieldTypeDateOnly
- esriFieldTypeTimeOnly
- esriFieldTypeTimestampOffset
- esriFieldTypeInteger
- esriFieldTypeBigInteger
- esriFieldTypeSingle
- esriFieldTypeDouble
- esriFieldTypeSmallInteger
- esriFieldTypePointZ
- esriFieldTypeGUID
请注意,bind::esri:fieldType 仅控制在要素图层中创建的字段类型。 要在调查过程中控制问题的字段类型,请使用 bind::type 列。 例如,在 calculate 问题的 bind::type 列中提供值 int,可将该字段视为整数,而不是其默认的字符串字段类型。 bind::type 列接受的值如下:
- int
- decimal
- string
- date
- dateTime
- 时间
bind::esri:fieldType 列还接受 null 值,这将导致该问题在创建的要素图层中被忽略。 虽然问题仍将显示在您的调查中并将正常运行,但是答案将不会提交给要素图层,并且在查看响应时也不会显示答案。 这非常适用于出于演示目的而必须显示,但结果中并不需要的计算、约束或其他问题。
以下问题类型不支持空字段类型:
- select_one or other
- select_multiple or other
- hidden
注:
仅当调查至少包含一个没有空字段类型的其他地理点、geotrace 或 geoshape 问题,或者如果地理点、geotrace 或 geoshape 位于重复中时,地理点、geotrace 和 geoshape 问题才会支持空字段类型。
字段长度
使用 bind::esri:fieldLength 自定义列来控制要在 ArcGIS 中针对调查问题创建的字符串(文本)字段的长度。
注:
您将无法以此方式控制整数和小数问题。 数据库未指定数值字段的长度;有效值的范围由数值字段类型控制。 例如,整数字段将存储 -2,147,483,648 和 2,147,483,647 之间的任何整数值。
字段别名
默认情况下,调查字段的别名将继承字段标注所使用的值,这主要指在 ArcGIS 中打开调查的情况。 可以通过在 bind::esri:fieldAlias 列中提供值来更改别名,从而使该值成为字段的新别名。
由于隐藏和计算问题不会显示在表单上,因此不会保留标注字段的内容。 这意味着当您查看 Survey123 网站或 ArcGIS 中的调查记录时,您将看到显示在列标题中针对这些类型的问题的问题名称。 要强制使隐藏和计算问题的列标题显示标注,请使用电子表格中的 bind::esri:fieldAlias 列指定标注。
输入掩码
输入掩码使用字符和符号为文本问题提供了一种固定格式。 如果将输入掩码应用到问题,则所有答案必须遵照由输入掩码定义的特定模式。 在 Survey123 外业应用程序和 Web 应用程序中,在满足所有输入掩码之前,无法提交调查响应。
提示:
输入掩码仅可以应用于 text 问题类型。 对于 integer 或 decimal 问题,使用 constraint 列来限制答案。 有关详细信息,请参阅约束。
要将输入掩码应用到问题,需要在 body::esri:inputMask 列中定义掩码。 下表列出了输入掩码中可使用的字符和符号:
字符 | 含义 |
---|---|
A | 必须为 ASCII 字母字符。 字符可以为 A 到 Z 以及 a 到 z。 |
a | 允许为 ASCII 字母字符,但不是必需的。 |
N | 必须为 ASCII 字母数字字符。 字符可以为 A 到 Z、a 到 z 以及 0 到 9。 |
n | 允许为 ASCII 字母数字字符,但不是必需的。 |
X | 必须为任意非空字符。 |
x | 允许任意非空字符,但不是必需的。 |
9 | 必须为 ASCII 数字。 数字可以为 0 到 9。 |
0 | 允许为 ASCII 数字,但不是必需的。 数字可以为 0 到 9。 |
D | 必须为 ASCII 数字。 数字可以为 1 到 9。 |
d | 允许为 ASCII 数字,但不是必需的。 数字可以为 1 到 9。 |
# | 允许为 ASCII 数字、加号或减号,但不是必需的。 |
H | 必须为十六进制字符。 字符可以为 A 到 F、a 到 f 以及 0 到 9。 |
h | 允许为十六进制字符,但不是必需的。 |
B | 必须为二进制字符。 字符可以为 0 到 1。 |
b | 允许为二进制字符,但不是必需的。 |
> | 以下所有字母字符均为大写。 |
< | 以下所有字母字符均为小写。 |
! | 关闭大小写转换。 |
\ | 避免以上列出的特殊字符以将其用作分隔符。 |
掩码由包含字符和分隔符的字符串构成,也可以后跟用于结束输入掩码的分号或用于表示空格的字符。 空格字符会在进行编辑后从文本中移除。 下表列出了示例掩码:
示例掩码 | 描述 |
---|---|
>A<xxxxxxxxxxxx | 以大写字母开头,后跟任意小写字符的文本。 |
AAA-AAA-AAA;_ | 此类唯一标识符使用短划线作为分隔符,在输入掩码的末尾有一个分号,后跟一个下划线来表示要完成的每个字符。 |
B9.99;- | 表示 pH 值。 限制数值只能以 0 或 1 开头,并且只能包含 2 个小数位。 使用分号结束输入掩码,后跟一个短划线,以表示要完成的每个字符。 |
999-99-9999 | 美国社会安全号码。 |
(999) 999-9999 | 美国电话号码。 |
900 kg | 重量,以公斤为单位,范围为 0 到 999。 |
99999 | 美国 5 位邮政编码。 |
AAA | IATA 机场代码。 |
工作流
使用 bind::esri:workflow 自定义列指示可以通过从库启动的测距仪切片填充字段。 此列仅适用于文本问题,bind::esri:workflow 列接受以下值:
- rangefinderMode=height
- rangefinderMode=offset
- rangefinderMode=height,offset
- rangefinderHeight
对于外业工作人员来说,所有 rangefinderMode 值提供的用户体验相似。 在选择所需的测距仪工作流后,用户将前往选择调查并使用仪器拍摄 1 至 3 次,然后系统将自动为外业工作人员启动调查以完成任何其他问题。
rangefinderHeight 值唯一,因为它允许外业工作人员使用前进和后退箭头浏览每个配置为接收高度值的调查问题。 在测量所有高度后,外业工作人员点击完成并转至调查以完成任何其他问题。