如果地图包含可编辑的要素图层(托管要素图层、托管要素图层视图、托管表图层或 ArcGIS Server 要素图层),您可以定义编辑者在更新 web 地图中要素图层的字段值时可以使用的表单。 您可以为地图中的每个可编辑要素图层定义一个表单,或者仅定义那些您知道地图用户需要编辑的图层。
创建表单时,指定表单包含哪些表单元素以及这些元素的显示方式。 拥有表单有助于将编辑者引导到正确的字段和每个可编辑字段的允许属性值。
表单也另存为地图的一部分。 当您共享地图时,其他人可以使用您定义的表单来编辑地图中的要素图层或表图层。
注:
当前,您可以在 Map Viewer、ArcGIS Online、ArcGIS Enterprise 和 ArcGIS Field Maps web 应用程序中配置表单。
您可以在 ArcGIS Field Maps 移动应用程序的 Map Viewer、ArcGIS Online 和 ArcGIS Enterprise 中使用表单编辑要素图层。
创建表单前
在为地图中的要素图层创建表单之前,请先熟悉图层的内容和字段设置。 字段包含的内容会影响您是否为字段创建元素组。 应用于字段的设置(例如是否允许空值、是否定义默认值以及图层所有者是否为字段定义列表)会影响您在表单上设置字段元素的格式。
创建表单
您可以为地图中的每个可编辑要素图层创建一个输入表单。 您可以定义哪些字段(元素)出现在表单上以及所在位置。
当编辑者选择可编辑要素图层中的要素时,会显示表单,以便编辑者可以输入该图层的属性值。
请按照以下步骤为可编辑要素图层创建表单:
- 确认您是否已登录,以及是否具备创建内容的权限。
- 在内容(深色)工具栏中,单击图层以打开图层窗格。
- 将可编辑托管要素图层添加到地图。
- 选择可编辑要素图层后,在设置(浅色)工具栏上单击表单 。
随即显示配置表单窗口。
- 单独使用或组合使用以下选项向表单添加元素。
表单元素是字段分组和显示在表单上的输入字段。 字段元素基于要素图层中的现有字段。
- 在将字段和组作为元素添加到表单画布后,格式化每个元素。
- 或者,定义 Arcade 表达式来确定元素何时应该或不应该显示在表单上。
- 为表单上的元素添加、格式化和配置条件表达式后,单击确定以创建表单。
- 保存地图。
注:
如果关闭地图而不保存,您将丢失表单。
如果您在创建表单后需要更改表单,请重复上述步骤。 请务必在编辑表单后保存地图。
转换现有弹出窗口
如果要素图层已配置弹出窗口,请单击转换弹出窗口以将弹出窗口中的字段添加到表单画布。
弹出窗口配置中不包含的字段出现在表单构建器的字段列表中。 您可以将它们拖到表单画布上,将它们作为元素添加到表单中,如下一章节所述。
将字段作为元素添加到表单后,您可以创建组来聚合相关字段或继续格式化字段元素。
注:
包含高精度 GPS 元数据的字段只有从现有弹出窗口导入时才能出现在表单上。 因为这些字段只能从 GPS 设备填充,所以禁用相应表单元素的编辑。
添加字段
选择图层中的哪些字段作为表单元素呈现给编辑者。 在大多数情况下,您添加编辑者将用于更新值的字段。
例如,如果要素图层包含以下字段 - 站点名称、站点类型、构建状态、景观、编辑日期、编辑者名称、创建日期、创建者名称、ID 和形状 - 您可以仅在表单上放置站点名称、站点类型、构建状态和景观字段,因为编辑日期、编辑者名称、创建日期、创建者名称和 ID 字段是自动填充的,并且在编辑者向图层添加要素时填充形状字段。
您还可以添加字段以供参考并禁用对表单元素的编辑。 在前面的示例中,您可以将“编辑日期”字段作为不可编辑元素包含在表单中,以便编辑者可以查看要素的上次更新时间。
- 使用以下方法之一将字段作为元素添加到表单中:
- 将所有字段添加到表单 - 单击字段列表中的全部添加以在表单的图层中包含所有字段。 当图层中有很多可编辑字段时,添加所有字段并删除一两个系统或不可编辑字段比添加单个字段更快。
- 向表单中添加字段选择 - 要在表单中包括特定的字段选择,请按 Ctrl 键、单击要包括的字段,然后将其拖动到表单画布。
- 逐个添加字段 - 要逐次将单个字段添加到表单,请双击该字段或将其拖动到表单画布中。
提示:
如果图层或表中包含大量字段,则可以使用字段列表中的查找字段搜索栏来定位特定字段。
- 或者,将字段作为元素添加到表单后,创建组(如下一章节所述)或继续格式化字段元素。
创建元素组
要将表单上同一物理位置中的相关字段分组,请创建组元素。 分组元素类似于将问题放在纸质表单的同一章节。 数字表单上的组具有额外的优势,即它们可以收缩以仅显示组标题,直到表单用户展开组。
例如,在用于更新路径要素图层内容的表单上,为与路径属性相关的所有字段(例如路径名称、类型和难度)创建一个组。 您可以为记录路径维护信息的字段创建一个单独的组,例如维护工作队名称、上次执行维护的日期以及执行维护的描述。 如果您选择在组折叠的情况下打开表单,则编辑者在展开组之前只会看到两个组名称。
按照以下步骤在可折叠部分的表单上将相关元素分组在一起:
- 将组元素从表单元素列表拖到表单画布上。
表单元素随即添加到表单画布中。
- 将相关字段拖动到组中。
您可以从表单构建器面板中的字段列表或表单画布中拖动字段。
- 选择组元素以编辑其属性。
属性窗格随即出现,以便您编辑以下信息:
- 显示名称 - 提供描述组中包含的字段的名称。 这类似于纸质表单上的章节标题。 该值为必填项。
- 描述 - 提供对组的描述。
- 初始状态 - 默认情况下,当表单打开时组会展开,这意味着所有字段都自动可见。 如果您希望收缩组的初始状态,请取消选中已展开复选框。 表单用户将单击组以将其展开并查看其包含的字段。
- 条件可见性 - 添加 Arcade 属性表达式以应用有关何时组应显示在表单中的规则。 有关详细信息,请参阅配置条件可见性。
提示:
您可以通过从组工具栏中选择取消分组来从组中移除所有表单元素。 您可以按 Ctrl 键,选择要移除的每个元素,然后将其从组中拖出,以便从组中移除多个元素。
将条件字段组添加到表单
如果数据所有者在 ArcGIS Pro 中为数据创建了条件字段组,则条件字段组将显示在表单画布旁的字段组列表中。
由于字段相关(一个字段的值将确定或限制可为其他字段设置的值),因此当您从字段组列表中添加条件字段时,会将其添加到组元素中的表单。 条件字段应保持分组在一起,以便编辑者随后在 Map Viewer 中填写这些条件字段。 如果您从其字段组中移除字段,则将显示一条警告。
将一起列出共享一个或多个字段的条件字段组。 可将其作为一个字段组添加到表单中。
必须添加到表单的字段组将显示在列表的必填部分中。 如果已在 ArcGIS Pro 中将字段组配置为限制性条件字段组,则这些字段组为必填项,这意味着编辑者在编辑此字段组中的字段时所提供的属性值必须符合条件值定义。
警告:
如果您未将必填条件字段组添加到表单画布,则编辑者无法使用表单来编辑要素图层。
要了解如何在 ArcGIS Pro 中创建条件字段组,请参阅创建和管理条件值。
请按照以下步骤将条件值字段组添加到表单:
将格式应用于表单元素
当您在表单画布上选择表单元素时,将显示属性窗格。
上一章节描述了组元素的设置属性。
对于字段元素,属性窗格的格式化部分显示您可以为表单上的元素定义的属性以及从图层继承且无法为表单更改的属性。 以下几节介绍了可为表单上的字段元素定义的属性。
定义显示名称
每个表单元素都需要显示名称设置的值。 显示名称是伴随表单元素的标注。
对于字段,默认显示名称与字段名称相同。 接受默认名称或为每个字段输入一个更加用户友好或更具描述性的显示名称。
格式化文本元素
如果表单元素引用字符串字段,请按照以下步骤设置元素的格式:
- 选择文本表单元素以打开属性窗格。
- 单击输入类型下拉菜单并选择其中一个选项。
- 条形码 - 这只能在具有条形码阅读器的应用程序中使用。 如果您选择此输入类型,则该元素将在无法读取条形码作为输入的应用程序中恢复为单行文本,例如 Map Viewer。
- 文本 - 单行 - 表单上的输入字段将显示单行文本。
- 文本 - 多行 - 表单上的输入字段将有几行高。 将此输入类型用于最大长度较高的文本字段,以允许编辑者查看该字段中的所有文本。
- 要在提示编辑者输入正确值的字段中显示文本,请在占位符字段中输入该文本。
例如,您可以输入 Type the applicant's first name 作为存储申请贷款人员名字的字段的占位符文本。
占位符文本出现在输入字段元素内,并由编辑者提供的文本替换。
您不能为定义了默认值的字段设置占位符文本。
- 在描述字段中,提供解释该字段中的值所代表内容的文本。
描述显示在表单上的元素下方。
- 设置元素的最小长度(最小字符长度)和最大长度(最大字符长度)。
有时,要素图层会使用默认文本字段大小而不是对该字段有意义的长度发布。 例如,只能具有有限数量值(例如是、否或未知)的字段在要素图层中的字段长度可能为 256 个字符。 但是,如果您希望编辑者在编辑字段中的值时仅键入 y、n 或 u,则可以将最小值和最大值设置为 1。
您不能设置超过字段长度的最大字符长度。
- 选中必填旁边的复选框以定义编辑者必须为该字段输入一个值。
有关详细信息,请参阅根据需要定义元素。
- 要防止编辑者使用表单更新此字段中的值,请取消选中允许编辑。
例如,您可能包含一个用于引用目的的字段,但您不希望编辑者更改该字段中的值。
格式化日期元素
您可以配置日期元素以使用日期选取器或日期和时间选取器。 您还可以通过指定开始和结束日期来设置可接受的日期值范围。
按照以下步骤格式化引用日期字段的元素:
- 选择日期表单元素以打开属性窗格。
- 单击输入类型下拉菜单并选择其中一个选项。
- 日期 - 这允许编辑者提供日期。
- 日期和时间 - 这允许编辑者提供日期和时间。
- 在描述字段中,提供解释该字段中的值所代表内容的文本。
描述显示在表单上的元素下方。
- 对于日期元素,可选择设置开始日期和结束日期参数的值以限制编辑者可以使用的日期范围。
例如,对于记录将在一年第一季度完成的检查的新图层中的日期字段,将相应年份的开始日期设置为一年的第一天,将结束日期设置为 3 月 31 日。
- 对于日期和时间元素,可选择设置开始时间和结束时间参数的值。
例如,对于仅在工作时间使用的表单,您可以限制开始和结束时间,使其不会超出您的工作时间。
- 选中必填旁边的复选框以定义编辑者必须为该字段输入一个值。
有关详细信息,请参阅根据需要定义元素。
- 要防止编辑者使用表单更新此字段中的值,请取消选中允许编辑。
例如,您可能包含一个用于引用目的的字段,但您不希望编辑者更改该字段中的值。
格式化数字元素
如果元素使用双精度或整型数据类型的要素图层字段,请按照以下步骤设置表单元素的格式:
- 选择文本表单元素以打开属性窗格。
- 单击输入类型下拉菜单并选择其中一个选项。
- 条形码 - 这只能在具有条形码阅读器的应用程序中使用。 如果您选择此输入类型,则该元素将在无法读取条形码作为输入的应用程序中恢复为默认输入类型,例如 Map Viewer。
- 数字 - 双精度 - 如果图层中的字段定义为双精度,则用于编辑地图的应用程序不接受条形码作为输入,编辑者必须输入十进制数字,然后选择数字 - 双精度。
- 数字 - 整型 - 如果图层中的字段定义为整型或双精度,则用于编辑地图的应用程序不接受条形码作为输入,编辑者不应输入十进制数字,而是选择数字 - 整型。
- 要在提示编辑者输入正确值的字段中显示文本,请在占位符字段中输入该文本。
例如,您可以输入 Type the applicant's first name 作为存储申请贷款人员名字的字段的占位符文本。
占位符文本出现在输入字段元素内,并由编辑者提供的文本替换。
您不能为定义了默认值的字段设置占位符文本。
- 在描述字段中,提供解释该字段中的值所代表内容的文本。
描述显示在表单上的元素下方。
- 选中必填旁边的复选框以定义编辑者必须为该字段输入一个值。
有关详细信息,请参阅根据需要定义元素。
- 要防止编辑者使用表单更新此字段中的值,请取消选中允许编辑。
例如,您可能包含一个用于引用目的的字段,但您不希望编辑者更改该字段中的值。
格式化包含三个或更多值列表的元素
如果要素图层中的字段定义了一个包含三个或更多值的列表,您可以将表单元素配置为显示为组合框或选项按钮。
- 选择引用字段的表单元素,该字段定义了值列表以打开其属性窗格。
- 在格式化部分中,单击输入类型下拉菜单,然后选择以下的一个选项:
- 组合框 - 表单用户可从可用选项列表中选择一个值。
- 单选按钮 - 所有选项都显示在表单上,旁边有选项按钮。 表单用户可单击适当的按钮。
如果列表包含很多值(例如,七个或更多值),组合框可以节省表单空间。
- 在描述字段中,提供解释该字段中的值所代表内容的文本。
描述显示在表单上的元素下方。
- 选中必填旁边的复选框以定义编辑者必须为该字段输入一个值。
有关详细信息,请参阅根据需要定义元素。
- 要防止编辑者使用表单更新此字段中的值,请取消选中允许编辑。
如果表单元素不可编辑,表单上的按钮或列表选项设置会显示属性的现有值。 如果添加要素,则组合框或按钮元素不会显示任何值,除非该字段定义了默认值。
格式化具有两个可能值的元素
如果要素图层中的字段定义了一个仅包含两个可能值的列表,并且该字段在图层中设置了默认值,则可以将该元素定义为在表单上显示为切换开关,或显示为组合框或按钮。
如果图层中的字段没有设置默认值,您可以将元素配置为在表单上显示为组合框或按钮。
- 选择引用字段的表单元素,该字段定义了双值列表和默认值以打开其属性窗格。
- 在格式化部分中,单击输入类型下拉菜单以选择如何呈现该元素:
- 组合框 - 表单用户可从下拉列表中选择其中一个值。
- 单选按钮 - 两个选项都显示在表单上,旁边有按钮。 表单用户可单击适当的按钮。
- 切换 - 表单用户可启用或禁用切换开关。
您可以通过单击切换值旁边的切换值顺序按钮将哪个值更改为等于启用的开关。
如果字段没有设置默认值并且您选择切换作为输入类型,则该元素在表单上显示为组合框。
- 在描述字段中,提供解释该字段中的值所代表内容的文本。
描述显示在表单上的元素下方。
- 选中必填旁边的复选框以定义编辑者必须为该字段输入一个值。
有关详细信息,请参阅根据需要定义元素。
- 要防止编辑者使用表单更新此字段中的值,请取消选中允许编辑。
如果表单元素不可编辑,表单上的按钮、列表选项或切换开关设置会显示属性的现有值。 如果添加要素,则组合框或按钮元素不会显示任何值。 对于切换元素,默认设置显示在表单上。
根据需要定义元素
要强制为字段输入数据,您可以配置表单元素,以便它们需要条目。 例如,如果所有应用程序都需要提交日期,则将提交日期元素配置为必需。
当编辑者使用表单时,他们会在需要输入的字段旁边看到一个星号,并且在提供值之前他们无法保存他们的编辑。
- 单击字段表单元素以打开属性窗格。
- 选中必填旁边的框并定义要素图层是否允许空值:
- 是 - 如果要素图层中的字段允许空值,但在通过表单进行编辑时,编辑者需要为字段元素提供条目,则选择此选项。
- 否 - 当要素图层中的字段被配置为不可为空字段时,选择此选项。
定义表达式
可以根据使用 ArcGIS Arcade 表达式定义的以下逻辑条件使表单动态化:
配置条件可见性
您可以根据添加到先前字段的值有条件地显示或隐藏表单元素。 例如,“建筑物评估”表单中包含了一个用于指示是否存在水损害的字段。 该表单中还包括一个包含与水损害相关的字段的组表单元素。 可以将条件可见性表达式应用于水损害组,以便仅在较早字段中指示了水损害时才显示该组。 要创建条件可见性表达式,请完成以下步骤:
- 单击字段表单元素以打开属性窗格。
- 在条件可见性部分中,单击 + 添加表达式。
随即显示编辑表达式窗口。
- 通过以下方法之一构建表达式:
- 使用下拉菜单选择字段、操作和值来构建表达式。
- 单击启动 Arcade 编辑器以在 Arcade 编辑器中编写 Arcade 表达式。 这对于更复杂的表达式很有用。
每个表达式由一个或多个条件定义。 条件包括字段名称、运算符和可能的值。 可用运算符列表由字段类型(字符串、数字或日期)决定。
例如,如果一个水损害组元素只需要在较早的字段中指示水损害时才需要出现,则可以使用以下条件来构建表达式:
- 字段名称 - 水损害
- 运算符 - is
- 值 - Yes
以下是 Arcade 语法中相同的表达式:
DomainName($feature, "water_damage") == "Yes"
Map Viewer 将应用 Arcade 约束配置文件来评估要素是否符合表达式中定义的条件。 如果 water_damage 字段中指示了 Yes 以外的值,则水损害组将不显示在表单中。
- 要应用多个条件,请单击添加条件,然后重复上述步骤。
注:
如果定义了多个条件,请选择要显示的表单元素是所有条件都必须为 true(匹配所有条件)还是只有一个条件必须为 true(至少匹配一个条件)。
- 单击保存。
条件可见性表达式随即应用于组或字段。
现在您已经保存了表达式,您可以通过选择表单元素并单击您创建的表达式将其应用于任何表单元素。 您可以通过单击条件可见性下的属性窗格中表达式旁边的数字来查看哪些元素正在使用表达式。
您可以随时通过条件可见性菜单复制、编辑或删除表达式。 要使用 Arcade 编辑表达式,请从此菜单中单击编辑(高级)。
添加表达式以计算字段值
可以向表单添加计算表达式来字段计算和填充数据。 这将自动计算字段值,从而节省编辑者时间并保证数据完整性。
使用 Arcade 根据要素属性和几何构建计算表达式。 例如,可以向存储桥梁检测计划日期的字段添加计算表达式。 例如,当编辑者将桥梁状况字段值设置为 damaged 时,在检测日期字段上定义的表达式可通过在桥梁检测字段中填充该日期,自动将下一次检测计划为在一周后进行。
计算表达式为动态表达式,意味着它们会在信息更改时自动更新表单。 因此,编辑者可以在提交表单之前查看更新计算。 由于计算表达式字段中的值填充为表达式,因此编辑者无法在表单中为该字段键入值。
要创建计算表达式,请完成以下步骤:
- 单击字段表单元素以打开属性窗格。
警告:
如果为表单元素启用了编辑功能,则表达式将不会运行。
- 在计算表达式部分中,单击 + 添加表达式。
随即显示 Arcade 编辑器。 Arcade 编辑器允许您在将表达式保存到所选表单元素之前编写和测试表达式。
- 单击标题旁边的编辑,然后为表达式提供标题。
- 写入计算表达式。
例如,以下表达式用于在计算以平方米为单位的面积之前检查面要素几何是否为空。 将在下一部分节中提供其他示例。
要了解有关使用 Arcade 计算面积的详细信息,请参阅面积(几何函数)。if (IsEmpty(Geometry($feature))){ return; } else{ Area($feature, 'square-meters') }
有关 Arcade 中提供的所有函数列表,请参阅 Arcade 函数索引。
- 单击测试确保表达式不会生成错误。
- 单击确定关闭 Arcade 编辑器。
计算表达式将应用于表单元素。
- 单击保存保存表达式和表单。
在保存表达式后,您可以通过选择表单元素,然后单击之前创建的表达式将其应用于任何表单元素。 您可以通过单击计算表达式下的属性窗格中表达式旁边的编号,来查看哪些元素正在使用 Arcade 表达式。
注:
您可以随时通过计算表达式菜单复制、编辑或删除表达式。
计算表达式示例
以下是计算表达式的示例:
- 提供日期信息 - 以下示例表达式为日期字段提供当前日期:
要了解有关可使用 Arcade 访问的日期信息的详细信息,请参阅日期函数。return Today();
- 从相交图层提取信息 - 以下表达式适用于表单中的邮政编码字段并从相交宗地图层提取邮政编码值:
要了解有关使用 Arcade 从相交图层提取信息的详细信息,请参阅相交(几何函数)。if (IsEmpty(Geometry($feature))){ return; } else{ var parcels_FS = Intersects($feature, FeatureSetByName($map,"Redlands parcels")); if (Count(parcels_FS) == 1){ return Text(First(parcels_FS).ZIP_CODE); } }
有关 Arcade 中提供的所有函数列表,请参阅 Arcade 函数索引。