创作要素服务
要素服务的创作过程包括设置地图文档以定义将由服务提供的数据和符号系统。如果要允许对服务进行编辑,还可以定义编辑环境。
定义数据
添加到地图文档的图层和表格通过服务提供。无论数据源是地理数据库还是数据库,有关数据定义方法的某些内容是通用的。下面会介绍这些内容。在其他情况下,定义数据的方法取决于数据是位于地理数据库还是数据库中。后续章节中将介绍这些差别。支持的地理数据库和数据库平台包括 SQL Server、PostgreSQL、Oracle、Informix 和 DB2。
必须为数据定义有效的空间参考。如果未定义,则必须先在 ArcMap 中指定一个空间参考,然后才能发布数据。如果未定义空间参考,则不能发布数据。
如果计划使用要素服务进行编辑,则建议仅将要编辑的数据添加到地图文档中。底图图层等不想编辑的数据则应发布为另一服务。有关规划业务服务和底图服务的详细信息,请参阅地图服务规划。还可以将 ArcGIS Online 服务用作底图服务。有关设计地图以叠加在线地图和服务的详细信息,请参阅设计地图以叠加 ArcGIS Online、Google 地图和 Bing 地图。
可以编辑具有 z 值的要素。有关详细信息,请参阅在要素服务中编辑具有 z 值的要素。
如果数据包含 m 值,则可删除这些要素,然后插入新要素并编辑现有要素的属性,但不能编辑几何。通过 REST 和 SOAP 端点插入新要素时,所有新要素的 m 值都将被设置为 NaN。如果您是在 ArcMap 中使用本地编辑命令通过要素服务编辑包含 m 值的要素,则将支持所有的编辑操作。
此外,如果计划使用 ArcMap 中的要素服务进行编辑(参阅下文),请确保在创作地图文档时只为每个要素类加入一个图层。
路径事件、x,y 事件和地籍结构之类的虚拟图层在要素服务中是只读的。
企业级或工作组级地理数据库
下面介绍要素服务数据要求,这些要求特定于企业或工作组级地理数据库中存储的数据:
- 所有数据必须来自单个地理数据库。
- 所有数据必须注册到地理数据库。例如,如果数据库包含企业级地理数据库,则不能从此数据库中发布未注册到地理数据库的空间表。
- 如果要允许编辑数据,将需要数据的写入权限。使用操作系统身份验证时,必须向 ArcGIS Server 帐户授予这些权限。
- 支持版本化和未版本化的地理数据库数据;但是,如果您计划使用此服务编辑非简单类型(例如,网络边),则需要进行版本化。除非需要,否则建议使用非版本化数据。非版本化数据比例缩放更利于编辑。
要素服务不支持以下数据类型:
- 注记
- 维度
- 图层组
- 基于视图的图层和表
- 栅格数据集
- Terrain
如果这些图层显示在地图文档中,在尝试发布启用要素访问的地图服务时,则会出现分析器错误。
支持参与非简单类型(如几何网络、拓扑和网络数据集)的图层,但是服务不会返回类型本身。例如,您可以查询参与拓扑的图层,但无法查询拓扑本身。
要素服务还允许对相关数据进行查询。例如,发布的地图文档可能具有通过地理数据库关系类进行关联的图层和表。在这种情况下,要素服务允许对图层进行查询以返回关联图层或表中的对象。请注意,如果要支持返回关联对象的查询,那么,关系类中涉及的表和图层都必须处于发布的地图文档中。如果原始或目标图层或表未包含在地图文档中,则该关系将被要素服务忽略。
对于属性关系类,还必须在地图文档中包含关系类表。
准备地理数据库数据以供离线时使用
要在离线时使用地图,您可以在地图所使用的要素服务中启用同步功能。有关详细信息,请参阅准备离线使用的数据。
ArcGIS 客户端和开发人员 SDK 会逐步在要素服务中增加同步功能支持。支持离线使用地图的首批客户端为 ArcGIS Collector 和 ArcGIS Runtime SDK 的 10.2.1 版本。这两种客户端预计在 2014 年初发布。
数据库
下面介绍对存储于数据库中的数据特定的要素服务数据要求:
- 所有数据必须来自单个数据库。
- 如果要允许编辑数据,将需要数据的写入权限。使用操作系统身份验证时,必须向 ArcGIS Server 帐户授予这些权限。
- 向 ArcMap 添加数据库数据时,将创建一个查询图层。如果改变查询图层定义,请确保查询只包含一个表,没有重复列,且不包括虚拟列或合并列。
- 在 ArcMap 中为表定义的查询图层决定着发布的数据。例如,含有 ArcGIS 不支持的数据类型的表可以进行发布,但不能通过 ArcGIS 或要素服务访问不受支持的数据类型。有关向 ArcMap 添加数据库表时如何初始定义查询图层的相关信息,请参阅在 ArcGIS 中查看数据库数据。
- 表格必须包含由数据库维护的唯一整型列。如果您使用 ArcGIS for Desktop 创建表并将数据加载到数据库,则将自动添加一个数据库维护的唯一整型 ObjectID。如果表格数据是在 ArcGIS 外部创建的,则需要确保其中包含一个由数据库维护的唯一整型列。如果不存在这种列,则不能发布要素服务。如果数据库维护的整型列位于 IBM DB2、Microsoft SQL Server、Oracle 或 PostgreSQL 数据库中,则您可以使用添加增量 ID 字段地理处理工具将其添加到表中。
设置地图文档
添加完要发布到地图文档的数据后,接下来就要设置图层和表的属性。这些属性将用于定义数据如何显示以及客户端能够对数据进行哪些处理。
对于数据库和地理数据库数据,地图文档的设置相似。但是,如果地图文档包含地理数据库数据,则在发布之前您将在地图中设置一些额外的可用功能。此类功能将在本节结尾部分介绍。
定义符号系统
要素服务可用于查询要素及获取要素的符号系统。客户端可以使用此信息通过与服务中定义的内容一致的符号系统来绘制要素。
服务所返回的符号完全基于 ArcMap 文档中所设置的图层符号系统。每个图层中的每个符号都被称为类型。例如,用简单渲染器(一个符号)符号化后的图层具有一个类型。如果使用唯一值渲染器,将会为渲染器中的每个唯一值返回一个类型。
要素服务支持简单、唯一值、分类间隔以及制图表达等渲染器。如果使用了不受支持的渲染器,服务将无法启动。在这种情况下可以查看服务器日志来确定哪些图层具有不受支持的渲染器。
要素服务不支持比例符号以及基于多个字段的唯一值渲染器。
大多数符号类型都可用于要素服务;但是,某些情况下,符号会自动降级。
线图层支持简单线符号。如果使用其他符号,则要素服务会将其转换为可最好地表示原始符号的简单线符号。例如,地图文档中的制图线符号可以在要素服务客户端中绘制为简单实线。如果线符号比较复杂或包含多个图层,则要素服务会将线降级,尽可能以最好的方式表示原始线符号。
面图层支持简单填充符号和图片填充符号。如果使用其他符号,要素服务会将它们自动降级为简单填充符号。对于多图层填充符号,要素服务会只考虑顶部图层。而且,填充符号的轮廓符号具有与上面所述的线图层相同的支持级别。
点图层支持简单标记符号和图片标记符号。如果使用其他符号,要素服务会将它们降级为图片标记符号。多图层标记符号也会降级为图片标记符号,其中的图层会合并到单个图层中。不支持掩膜属性(即,可在其中设置标记符号的晕圈)。
启动带要素访问的地图服务时,如有需要将检查符号并对其进行降级。如果需要降级,则会在服务器日志中加入相关警告信息以描述降级了哪些符号。
另外还需注意:如果地图文档中存在使用制图表达渲染器的图层,则当客户端通过 REST 访问服务时,渲染器会报告为唯一值渲染器。
建议在符号中使用 RGB 颜色;否则,当颜色转换为 RGB 颜色格式时会发生微小的变化。
定义要素模板
使用地图文档中的要素模板可实现通过要素服务插入新要素。模板可用于数字化新要素,以及相应设置属性的默认值。要素服务需要每个要素类型都具有模板。启动编辑会话或发布服务时,将为每个类型创建一个默认模板。
默认模板始终可用于数据库数据。您可以创建用于地理数据库数据的自定义模板。有关详细信息,请参阅自定义要素模板部分。
字段属性
ArcMap 中设置的字段属性通过要素服务显示;其中包括字段别名、字段可见性和字段的只读属性。只读字段包括系统管理的字段(如 ObjectID 和 globalid)、编辑器追踪字段(仅限地理数据库)以及地图文档中设置为只读的字段。
应用更新时,如果为只读字段设置了值,则要素服务将忽略该值。应用插入时,将对只读字段和不可见字段应用默认值。如果未定义默认值,将会应用空值。如果字段不能存储空值,则插入将失败。
图层描述和版权信息
地图文档中指定的图层描述和制作者名单(版权)将在要素服务中作为图层描述和版权信息针对每个图层分别进行显示。
HTML 弹出窗口
要素服务支持在 ArcMap 中配置的 HTML 弹出窗口。HTML 弹出窗口是共享有关要素的 HTML 格式信息的有效而简单的方式。除了能够以自定义的 HTML 格式显示信息,这些工具的工作方式与“识别”工具非常相似。有关如何在 ArcMap 中设置 HTML 弹出窗口的详细信息,请参阅为要素图层设置 HTML 弹出窗口属性。
如果要在 Web 上使用要素服务并使弹出窗口可用,可以考虑在 ArcGIS.com map viewer 地图查看器中对其定义。或者,开发人员可以使用客户端 API 本身(例如 ArcGIS API for JavaScript)来定义弹出窗口的样式。
时间支持
要素服务支持时态数据(表示某个时间点状态的数据)并可对其进行显示。时间信息将存储在单个或多个属性字段中并且可用于在特定时间或以时间间隔显示数据。在图层属性对话框的时间选项卡中启用时间后,可通过要素服务来显示时态数据。有关如何对数据集启用时间的详细信息,请参阅对数据启用时间。
坐标系
要素服务支持地图文档中的图层具有不同坐标系的情况。使用要素服务时,如有必要可执行坐标系转换。例如,如果客户端使用与图层坐标系不同的坐标系通过要素服务插入要素,则要素在存储前会转换为图层的坐标系。涉及几何的空间查询在应用前也会转换为图层的坐标系,以返回正确的结果。
如有必要,还可以使用地理(基准面)变换。例如,如果图层存储在 NAD27 中并且通过服务插入了坐标系为 WGS 1984 的要素,则在存储要素前会执行 WGS 1984 到 NAD27 的基准面变换。在发布前设置地图文档的数据框属性中的变换,可以控制变换方法。如果未在地图中定义变换,将执行默认变换。
虽然可以发布坐标系不相同的独立图层,但单个表中的所有记录必须使用相同的坐标系。
附加地理数据库功能
如果数据存储在地理数据库中,则可利用某些附加功能。必须设置此类功能才能发布要素服务。
定义子类型和属性域
如果发布的数据位于地理数据库中,则在适当情况下可配置数据集以使用子类型和属性域,从而增强要素服务的用户体验并防止数据输入错误。属性域和子类型可用于对数据进行分类,并确保编辑数据时自动输入合适的值。要素服务可以检测并使用子类型和属性域。例如,如果有一个属性域将消火栓颜色限制为红色、黄色或蓝色,则 Web 应用程序会显示一个下拉列表,并只允许从这三种颜色中选择一个。
自定义要素模板
在 ArcMap 中,可以创建新模板或修改现有模板以通过要素服务自定义编辑体验。这包括设置用于创建该要素类型的默认构造工具。如果删除特定要素类型的模板,则将在发布服务时创建一个默认模板。
根据模板要创建的要素类型,可使用几种不同类型的构造工具。例如,如果拥有线模板,则只能选择用于创建线要素的工具。随模板保存的构造工具可通过要素服务获取。唯一的例外是被称为“线末端的点”的点工具,要素服务不支持该工具。有关模板的详细信息,请参阅设置要素模板属性。
保存地图文档时,模板会随地图中的图层一同保存。发布地图文档时,这些模板可供要素服务客户端使用。在地图文档中定义了图层、类型和模板后,即可准备发布服务。发布要素服务一节介绍了如何发布要素服务。
工作流示例:观鸟要素服务
以下部分将演示一个示例,向您展示如何设置地图文档、如何定义数据以及如何定义将通过观鸟要素服务显示的符号系统。要素服务允许观鸟人群将观鸟活动直接提交到地图上并将照片、音频文件和视频文件等介质文件附加到特定观赏点。
本例中的步骤适用于地理数据库和数据库;但是,要素附件和自定义要素模板在数据库中不可用。如果您使用的数据未存储于地理数据库,则可跳过介绍此功能的内容。
定义数据
创作要素服务的第一步是定义通过服务可用的数据。在本例中,首先要处理的是地理数据库中称为 Bird_Sightings 的要素类。要使附件与此要素类关联,必须在 ArcCatalog 中或在 ArcMap 的目录窗口中添加附件。为此,首先连接到数据库,然后右键单击该要素类,最后选择管理 > 创建附件。这样便会创建一个表,其中将存储附件和将要素类与附件表关联的关系类。有关如何将附件添加到要素类的详细信息,请参阅在要素类中启用附件。
某些类型的数据需要版本化才能在企业级地理数据库中进行编辑。这一要求也适用于编辑要素服务。有关更多详细信息,请参阅快速浏览:版本化。
定义符号系统
设置数据后,下一步是向 ArcMap 中添加数据并定义符号系统。要素服务返回的符号基于 ArcMap 文档中图层的符号系统。每个图层中的每个符号都被称为类型。在本例中,默认情况下,Bird_Sightings 图层通过简单渲染器(一个符号)进行符号化。
但在这种情况下,您可能想要基于观赏类型而将观鸟图层符号化。为此,可使用唯一渲染器。要更改渲染图层的方式,可以右键单击该图层并选择属性。在“属性”对话框中,单击符号系统选项卡并且在类别下选择唯一值。随后,可以选择要用于符号化图层的字段。本例有三种特有的观赏类型(观鸟、观巢和观赏珍稀鸟),因此服务将返回三种类型(每种观赏类型一种)。
选择完渲染器后,接下来要选择将表示每种观赏类型的符号。在本例中,在 Esri 符号选择器中选择鸟类符号。将每种观赏类型的前景和背景设置为不同的颜色,以便在要素服务中轻松地加以区分。发布地图文档时,这些符号将转换为 PNG 图形返回到客户端。
设置完符号系统后,下一步是定义可通过要素服务使用的编辑环境。
定义编辑环境
此要素服务的目标是允许鸟类爱好者向地图中输入观鸟信息和全部相关信息。使用地图文档中的要素模板可实现通过要素服务进行编辑。如果未创建模板,则发布服务时会为每种类型创建一个默认模板。不过,您还可以创建新模板或修改现有模板以自定义编辑体验。
在本例中,您想要为此要素服务创建模板。为此,右键单击要素类并选择编辑要素,然后选择组织要素模板。在图层下,选择该图层并单击新建模板。将弹出“模板” 向导,可在其中创建模板。选择为所有不同的观鸟类型创建模板。创建模板后,可通过复制模板来创建其他模板。
在本要素服务中,您想要为珍稀鸟类观赏类型添加一个附加模板。珍稀鸟类是区域中的非时令鸟类或濒危鸟类。要创建模板的副本,请选择要复制的模板并单击复制。在本例中,创建了珍稀鸟类观赏模板的副本,这样一来就可以自定义每个模板以表示两种类型的珍稀鸟类观赏。要自定义模板,可在组织要素模板 窗口中双击它。这将打开模板属性,可在其中编辑模板名称及默认字段值。
濒危珍稀鸟类观赏的模板将观赏类型设置为珍稀鸟类观赏,将描述设置为濒危。非时令珍稀鸟类观赏的模板将观赏类型设置为珍稀鸟类观赏,将描述设置为非时令。
其余的属性还可以设置为每个模板中相应的默认值。在本例中,濒危珍稀鸟类观赏需要追踪调查,因此追踪属性可默认设置为是。非时令珍稀鸟类观赏不需要追踪,因此可将追踪属性设置为否。
在模板中将某些属性设置为默认值可简化最终用户的编辑环境,因为他们只需选择要素类型并对其进行数字化。在地图文档中定义了图层、类型和模板后,即可准备发布服务。要素服务发布后,最终用户可通过 Web 客户端或 ArcGIS for Desktop 访问该服务进行查询和编辑。
有关发布要素服务的详细信息,请参阅发布要素服务。
其他示例教程
如果需要有关如何设置和使用要素服务的详细指导,下列教程将提供分步示例,向您展示如何设置地图文档、定义数据以及如何定义通过要素服务提供的符号系统以执行 Web 编辑。根据您的数据存储于企业级地理数据库还是数据库,这些教程将有所不同: