教程:发布 WFS 服务
本教程介绍了如何使用 ArcMap 将 WFS 服务发布到 ArcGIS Server。WFS 是开放地理空间联盟 (OGC) 针对于在 Internet 上操作地理要素而发布的规范。当发布带有 WFS 功能的地图服务或地理数据服务时,可以通过 OGC 兼容的 WFS 客户端(包括 ArcGIS for Desktop 中的 适用于 Desktop 的 ArcGIS Data Interoperability 扩展模块)访问数据。WFS 客户端也可以查看对数据所做的最新更改。如果您不了解 WFS 服务并且想要在学习本教程之前了解更多信息,请参阅 WFS 服务。
开始学习本教程前
如果您刚刚安装 ArcGIS Server,则在连接到服务器和发布服务之前,需要完成一些准备工作:
- 有关如何配置 ArcGIS Server 站点的详细信息,请参阅本帮助系统的安装后配置入门部分。
- 要了解如何使 GIS 资源所引用的数据对于服务器可用,请参阅主题使数据能被 ArcGIS Server 访问。
在地理数据服务与地图服务之间作出选择
对于 WFS 服务,您可以选择是发布地理数据服务还是发布地图服务。当您选择要创建的服务类型时,应注意到二者之间的一些不同之处。以下各部分概述了地图服务与地理数据服务的可用功能,以帮助确定哪种服务类型最适合您的要求。
地图服务
WFS 地图服务代表了一个地图文档,其他用户可以通过 internet 或者任何 OGC 兼容的客户端访问这个文档。对于通过服务发布的数据,具有 WFS 功能的地图服务这种形式赋予您许多数据控制权限。以下是建立地图服务的一些常见原因:
- 与地理数据服务不同,单个地图服务可能包括来自于各种源的数据,如,来自各种地理数据库(文件和 ArcSDE)以及 shapefile 的数据。
- 您可以选择要通过地图服务显示哪些要素类。
- 您可以在地图文档中重命名要素类,这样服务将不显示数据源的真实名称。
有一些关于 WFS 地图服务的限制。当由地图文档发布 WFS 服务时,请注意以下事项:
- 地图文档只是对 WFS 服务中所有可用图层的一种说明。在图层级别定义的符号系统、查询定义以及字段别名将不会被传递到 WFS 服务中,因为该服务的目的在于显示数据中的要素。要通过 OGC 规范显示地图的可视属性,请使用 WMS 服务。
- 地图中两个或两个以上的图层不可以引用同一个要素类。
- 地图中两个或两个以上的图层不可以拥有相同的名称。
- 因为 WFS 仅作用于要素,所以地图中的任何栅格图层都将从服务中排除。
- 不显示非空间表。
- 如果您想要 WFS 服务支持编辑事务 (WFS-T),那么地图中所有图层的源数据必须来自同一工作空间,例如同一 ArcSDE 地理数据库。
地理数据服务
您可以利用 WFS 地理数据服务通过 Internet 或任何 OGC 兼容 WFS 客户端来访问 ArcSDE 地理数据库或文件地理数据库。当通过地理数据服务创建 WFS 服务时,牢记地理数据库中的所有要素类都将在服务中显示是非常重要的。
当您需要访问远程位置上的地理数据库时,地理数据服务是非常有用的;例如,一家公司可能要建立 ArcSDE 数据库来管理洛杉矶与纽约办事处的数据。一旦数据库创建完成,每个办事处都可以在 Internet 上使用地理数据服务发布其 ArcSDE 地理数据库。
发布 WFS 服务到 ArcGIS Server
要初步了解 WFS 服务的发布,请执行以下步骤。
- 按照下表中基于要发布到服务器的服务类型的说明进行操作:
选项
描述
如果要发布 WFS 地图服务...
...在 ArcMap 中打开地图文档并选择文件 > 共享为 > 服务 > 发布服务。单击下一步。
如果要发布 WFS 地理数据服务...
...浏览到 ArcCatalog 或目录 窗口中的 ArcSDE 地理数据库或文件地理数据库,右键单击它,然后选择共享为地理数据服务。
- 在共享为服务 窗口中,选择发布服务。单击下一步。
- 在发布服务对话框中,单击连接到 ArcGIS Server 以创建到服务器的新连接。
- 在添加 ArcGIS Server 窗口中,选择发布 GIS 服务。单击下一步。
- 对于服务器 URL,输入要连接的 ArcGIS Server 站点的 URL。例如,http://myserver:6080/arcgis。
- 在服务器类型下拉列表中选择 ArcGIS Server。
- 在发布过程中,将创建服务定义文件并将其临时存储到本地磁盘上。发布过程完成后,服务定义将上传到服务器并删除本地文件。考虑到本教程的目的,接受默认的过渡文件夹并继续。
- 如果服务器管理员已为您的站点启用了安全功能,请输入用户名和密码。单击完成。
- 还可以在发布服务 窗口中,输入新的服务名称。名称长度不能超过 120 个字符,并且只能包含字母数字字符和下划线。单击下一步。
- 默认情况下,服务会发布到 ArcGIS Server 的根文件夹下。也可将服务组织到根文件夹下的子文件夹中。选择要将服务发布到其中的目标文件夹,或创建一个新文件夹存储服务。单击继续。
- 服务编辑器 随即显示。您将使用服务编辑器 选择用户可对 WFS 服务执行的操作,还可对服务器显示服务的方式进行精细的控制。单击服务功能选项卡。
- 默认情况下,自动启用了地图和 KML 两项功能。选择 WFS。
- 在服务编辑器 的左侧窗格中,单击 WFS。使用此窗格可选择如何配置 WFS 服务的属性。通过提供 WFS 服务属性,用户可对服务发布程序有更好的了解。
- URL 字段显示了客户端用来访问 WFS 服务的 URL。URL 格式如下:http://<服务器名称>:6080/arcgis/services/<文件夹名称(如果适用)>/<服务名称>/MapServer/WFSServer。注:
复制并保存 WFS 服务 URL。您需要用这个 URL 来执行本教程中的其他步骤。
- 如果要使用系统生成的服务功能文件发布 WFS 服务,则使用默认的在下面输入服务属性选项。“名称”、“标题”和“在线资源”字段会自动填充,不应对其进行修改。也可使用列表中的字段填充其他属性。有关详细信息,请参阅 WFS 服务的可用属性。
- 如果要配置 WFS 服务以使用外部功能文件,请选择使用外部功能文件。要使用此选项,您必须已创建了一个 WFS 功能文件。有关详细信息,请参阅对 WFS 服务使用外部功能文件。
- URL 字段显示了客户端用来访问 WFS 服务的 URL。URL 格式如下:http://<服务器名称>:6080/arcgis/services/<文件夹名称(如果适用)>/<服务名称>/MapServer/WFSServer。
- 单击分析 。该操作用于对地图文档或地理数据库进行检查,看其是否能够发布到服务器。提示:
配置 WFS 服务时为获得更多视图区域,请单击服务编辑器 顶部的折叠 按钮。
- 在准备 窗口中修复任何错误 ;必须在发布前完成此操作。另外,您还可以修复警告和通知消息,以进一步完善 WFS 服务的性能和外观。有关解决这些问题的详细信息,请参阅分析 GIS 资源。注:
可将文件夹和地理数据库注册到 ArcGIS Server 站点,从而确保服务器可识别并使用数据。如果继续以下步骤,那么 GIS 资源所引用的来自取消注册 的文件夹或地理数据库的任何数据都将在发布时复制到服务器。这是一种预防性措施,可确保服务器能够访问服务所使用的所有数据。有关将文件夹或地理数据库注册到 ArcGIS Server 站点的完整说明,请参阅使用 ArcGIS for Desktop 将数据注册到 ArcGIS Server。
- 还可以在服务编辑器 中,单击预览 。这样您便可以了解在 Web 上查看地图时 WFS 服务的外观。有关详细信息,请参阅预览地图。
- 修复了地图文档或地理数据库中的错误后,请单击发布 。
使用 WFS 服务
一旦您发布了 WFS 服务,则可以在支持 WFS 1.0.0 或 1.1.0 与 GML 的简单要素规范的任何客户端(包括 Web 浏览器)中使用 WFS 服务。Web 浏览器是 WFS 服务最简单的客户端之一。您可以通过 HTTP 请求信息,然后响应或者异常会通过浏览器返回。
请按照以下步骤通过 Web 浏览器访问 WFS 服务:
- 打开 Web 浏览器。
- 执行 GetCapabilities、DescribeFeatureType 和 GetFeature 请求,如以下部分中所示。
GetCapabilities
此请求将通过服务以 GML 格式返回所有可用的要素类型与功能。要使用 GetCapabilities 操作,请复制 WFS 服务 URL 并将其粘贴到地址栏中,然后在 URL 末尾添加 ?request=getcapabilities。
URL 示例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=GetCapabilities
下图是由 GetCapabilities 操作返回的功能示例:
GetCapabilities 也可返回所有可用要素类和表的列表:
DescribeFeatureType
该请求描述了有关 WFS 服务中一个或多个要素的字段信息。这包括字段名称、字段类型、允许的最小与最大字段值以及在要素类或者表的字段上所设置的任何其他限制。
要使用 DescribeFeatureType 操作,请复制 WFS URL 并将其粘贴到地址栏中,然后在 URL 末尾添加 ?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0。这将返回有关要素服务中各可用要素类型和表的所有字段信息。
URL 示例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0
添加过滤器
通过将下列带有要素类型名称或表名称的请求添加到 URL 的末尾,您也可以指定您需要其字段信息的单个要素类或表:?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<在此输入要素类型>&VERSION=1.1.0。
了解有关 WFS 服务可用的不同过滤器的详细信息,请参阅在 Web 浏览器中与 WFS 服务进行通信。
在下例中,DescribeFeatureType 请求用于识别名为 cities 的要素类型的字段信息。
URL 示例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0
GetFeature
该请求通过 WFS 服务返回有关可用的指定要素类型的信息。
要在 Web 浏览器中使用 GetFeature 操作,请复制 WFS URL 并将其粘贴到地址栏中,然后在 URL 末尾添加 ?request=getFeature&typename=<在此输入要素类型>。这将返回有关此要素类型中各个要素和行的所有属性和几何信息。
URL 示例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities
添加过滤器
您也可以在请求中添加过滤器来优化返回的结果。例如,可以请求返回指定坐标范围内的所有城市。在下例中,两个城市位于指定的坐标范围内。了解有关 WFS 服务可用的不同过滤器的详细信息,请参阅在 Web 浏览器中与 WFS 服务进行通信。
URL 示例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88
使用 Data Interoperability 扩展模块连接 WFS 服务
可以使用 适用于 Desktop 的 ArcGIS Data Interoperability 扩展模块读取和写入非 ArcGIS 格式的数据。您可使用位于 ArcCatalog 中或 ArcGIS for Desktop 的目录 窗口中的“互操作连接”工具直接连接到外部 Esri 数据格式的服务(包括 WFS 服务)。一旦建立了连接,数据源就会出现在目录树中的互操作连接条目下。连接就像任何其他数据集一样,您可以将连接添加到内容列表中,也可以在地理处理工具中使用它。要了解有关如何使用 适用于 Desktop 的 ArcGIS Data Interoperability 扩展模块连接到 WFS 服务的详细信息,请参阅如何通过 ArcGIS for Desktop 使用 WFS。