发布时,要素服务包含了添加到地图的图层和表格。您需要配置数据以满足要素服务的要求。
无论数据源是地理数据库还是数据库,某些数据定义要求是通用的。接下来的部分会介绍通用要求。在其他情况下,定义数据的方法取决于数据是位于地理数据库还是数据库中。企业级或工作组级地理数据库特定要求和数据库特定要求部分中会介绍这些区别。
如果要离线使用要素服务,则需要其他数据准备。有关这些要求的详细信息,请参阅准备供离线使用的数据。
注:
路径事件、x,y 事件和宗地结构之类的虚拟图层在要素服务中是只读的。
数据库和地理数据库通用要求
无论源数据存储在数据库、工作组级地理数据库还是企业级地理数据库中,以下要求均适用:
- 发布到要素服务的数据必须来自单个源地理数据库或数据库。无法在单个地图中发布来自多个数据库连接中的数据。
- 必须为数据定义有效的空间参考。如未定义,请于发布前在 ArcMap 或 ArcGIS Pro 中进行指定。如果未定义空间参考,则不能发布数据。
- 要素服务中不支持基于视图的图层。由于无法使用 ArcGIS 客户端编辑视图,因此系统不支持发布包含视图的要素服务,但可以启用要素服务进行编辑。要使用视图中的数据以便在地图或应用程序中引用,请在地图服务中发布视图。
- 与注册到 GIS Server 站点的数据库连接文件一同存储的数据库帐户必须具有访问数据所需的权限。如果要素服务将保持只读,则帐户只需选择数据的访问权限。如果要使用要素服务进行编辑,必须授予对数据的编辑权限。如果注册到站点的数据库连接使用操作系统身份验证,则必须向 ArcGIS Server 帐户授予这些权限。
- Esri 建议在发布为可编辑要素服务的地图中仅包含要编辑的数据。将底图图层等不想编辑的数据发布为另一服务。有关规划业务服务和底图服务的详细信息,请参阅地图服务规划。还可以使用 ArcGIS Online 底图。有关设计地图以叠加在线地图和服务的详细信息,请参阅设计地图以叠加 ArcGIS Online、Google Maps 或 Bing Maps。
- 如果其他用户要将要素服务添加到 ArcMap 或 ArcGIS Pro 并对其进行编辑,请不要为发布为要素服务的地图文档的相同要素类定义多个图层。例如,如果您想要为同一要素类提供不同的符号系统或应用不同的定义查询,请单独创建要素服务;不要使得同一要素服务的同一要素类中包含不同配置的表达。
- 如果数据包含 z 值,而编辑者需要在编辑要素几何时不支持添加 z 值的客户端(例如 ArcGIS Online 和 ArcGIS Enterprise 门户中的 Map Viewer)上编辑要素服务,请请配置要素服务以插入默认 z 值。
- 如果数据包含 z 值,而编辑者需要在编辑要素几何时不支持添加 z 值的客户端(例如 ArcGIS Online 和 ArcGIS Enterprise 门户中的 Map Viewer)上编辑要素服务,请配置要素服务以针对 m 值插入 NaN。
提示:
ArcGIS Desktop 客户端支持对含有 m 值和 z 值的要素进行所有编辑操作(插入、删除和更新,包括几何更新),甚至支持创建要素服务数据的本地副本以在 ArcMap 中进行编辑。如果编辑者仅在这些客户端中编辑要素服务,则您不需要配置默认 z 值和 NaN m 值。
企业级或工作组级地理数据库特定要求
此处列出的要素服务要求特定于企业级或工作组级地理数据库中存储的数据。您的数据需要满足以上部分所述要求,同时也需要满足本部分所述要求。
- 可以发布未在地理数据库中注册的表或要素类;但不支持发布视图。
- 如果允许对要素服务进行编辑,并且要素服务包含参与几何网络的要素类,则要素类数据必须与编辑客户端应用程序处于相同的投影和坐标参考系中。例如,如果计划将要素服务添加到 Map Viewer 进行编辑,则数据必须存储在 WGS 1984 Web 墨卡托 (Auxiliary Sphere) 中。在发布服务之前不能只更改在 ArcMap 的投影或 ArcGIS Pro 地图;数据必须使用与编辑客户端相同的投影或坐标参考系。
- 要素服务中支持版本化(传统和分支)和非版本化地理数据库数据。Esri 建议您在要素服务中使用非版本化数据,因为非版本化数据比例范围更利于编辑。还有一些复杂数据类型(例如,网络边),但是,必须对其进行版本化才能通过要素服务对其进行编辑。
- 要编辑分支版本化数据,您必须在参考已注册数据的 ArcGIS Pro 中发布要素图层。有关详细信息,请参阅 ArcGIS Pro 帮助中的共享分支版本化数据。
- 如果地图中存在下列任意一种图层,则不能通过 ArcMap 文档发布启用要素访问的地图服务,也不能通过 ArcGIS Pro 发布参考已注册数据的要素图层:
- 尺寸
- 图层组
- 基于视图的图层和表
- 包括虚拟列、where 子句或连接的查询图层
- 栅格
- 地形
- 通过 ArcGIS Pro 发布引用已注册数据的图层时,可以在地图中包括注记图层。而通过 ArcMap 地图文档发布启用要素访问的地图服务时,则无法包括注记图层。
- 通过要素服务访问宗地结构时,宗地结构始终为只读。
- 可以发布属于复杂类型(如几何网络、拓扑和网络数据集)的图层,但是要素服务不会返回类型本身。例如,您可以查询参与拓扑的图层,但无法查询拓扑。
- 仅当关系是通过地理数据库关系类定义时,要素服务才允许对相关数据进行查询。如果发布的地图文档具有通过地理数据库关系类相关联的图层和表,要素服务允许对图层进行查询以返回关联表中的对象。要支持返回关联对象的查询,关系类中涉及的表和图层必须包含在发布的地图文档中。如果原始或目标图层或表未包含在地图文档中,则要素服务将忽略该关系。
注:
对于属性关系类,需要在地图文档中包含关系类表。
- 要维护公共设施网络,您必须通过 ArcGIS Pro 将其发布为要素图层。有关详细信息,请参阅 ArcGIS Pro 帮助中的通过公共设施网络发布和使用服务。
准备地理数据库数据以供离线使用
要离线使用地图,在地图所使用的要素服务中启用同步功能。有关详细信息,请参阅准备供离线使用的数据。
注:
ArcGIS 客户端和开发人员 SDK 会逐步在要素服务中增加同步功能支持,该功能已引入 ArcGIS 10.2.1。支持离线使用地图的首批客户端为 Collector for ArcGIS 和 ArcGIS Runtime SDK。无法在 ArcGIS 10.2.1 之前发布的要素服务中启用同步功能。
其他客户端可通过 ArcGIS REST API 访问同步功能。
数据库特定要求
下面将介绍数据库中所存储数据的特定要素服务数据要求。您的数据除了满足地理数据库和数据库的通用要求外,还必须满足这些要求。
- 向 ArcMap 或 ArcGIS Pro 中的地图添加数据库数据时,将创建一个查询图层。如果改变查询图层定义,请确保查询只包含一个表、没有重复列,且不包含连接、where 子句、虚拟列或合并列。
- 为表定义的查询图层将决定发布什么数据。例如,含有 ArcGIS 不支持的数据类型的表可以进行发布,但不能通过 ArcGIS 或要素服务访问不受支持的数据类型。有关向地图添加数据库表时如何初始定义查询图层的信息,请参阅在 ArcGIS 中查看数据库数据。
- 表格必须包含由数据库维护的唯一整型列。如果您使用 ArcGIS 创建表并将数据加载到数据库,则将自动添加一个数据库维护的唯一整型 ObjectID。如果表格数据是在 ArcGIS 外部创建的,则需要确保其中包含一个由数据库维护的唯一非空整型列。如果不存在这种列,则不能发布要素服务。 如果数据库维护的整型列位于 IBM Db2、Microsoft Azure SQL Database、Microsoft SQL Server、Oracle 或 PostgreSQL 数据库中,则您可以使用添加增量 ID 字段地理处理工具将其添加到表中。如果位于其他数据库,则使用数据库管理系统工具或 SQL 来创建 ID 列。
- 支持发布要素服务的数据库平台包括 Dameng、Db2(Linux、UNIX 或 Windows 上)、IBM Informix、Microsoft Azure SQL Database、Oracle、PostgreSQL、SAP HANA、SQL Server 和 Teradata Data Warehouse Appliance。