教程:发布 WFS-T 服务

复杂程度: 入门级 数据要求: 使用自备的数据

本教程为您展示如何使用 ArcGIS Server 管理器发布通过启用事务实现读写访问的 WFS 服务 (WFS-T)。带有事务的 WFS 服务 (WFS-T) 允许 WFS 客户端通过 WFS 服务对源数据库中的数据进行编辑(插入、删除及更新)。要通过 WFS-T 应用更改,数据必须来源于 ArcSDE 地理数据库。该教程说明了处理版本化数据时应使用的工作流。

当发布带有 WFS 功能的地图服务或地理数据服务时,可以通过 OGC 兼容的 WFS 客户端(包括 ArcCatalog 与 ArcMap 中的 Data Interoperability 扩展模块)访问数据。WFS 客户端也可以查看对数据所做的最新更改。如果您不了解 WFS 服务并且想要在学习本教程之前了解更多信息,请参阅 WFS 服务

如果您刚刚安装 ArcGIS Server,那么在登录到管理器或者发布服务之前,需要完成一些准备工作。您可以在此帮助系统的安装完毕后了解入门知识一节中找到这些步骤。

发布服务的所需设置

要创建地图服务或者地理数据服务,您需要在一个 GIS 服务器中所有服务器对象容器 (SOC) 计算机都可访问的共享位置中,放置地图文档 (.mxd)、地理数据库(文件或个人)或者 SED 连接文件。安装后配置期间创建的 SOC 帐户必须也要有权限读取地图文档及其引用的所有数据(地图服务),或者有权限读取您要发布的地理数据库中的所有数据(地理数据服务)。

WFS 服务支持 ESRI 数据源中的简单要素,如 shapefile 和地理数据库。但是,如果要在服务上启用事务 (WFS-T),则您希望编辑的所有数据都必须存储在 ArcSDE 地理数据库内部。

在地理数据服务与地图服务之间作出选择

对于 WFS 服务,您可以选择是发布地理数据服务还是发布地图服务。当您选择要创建的服务类型时,应注意到二者之间的一些不同之处。以下各部分汇总了地理数据服务与地图服务的可用功能,可以帮助确定哪种服务类型最适合您的要求。

地理数据服务

您可以利用 WFS 地理数据服务通过 Internet 或 OGC 兼容的 WFS 客户端来访问地理数据库。可以为任何类型的地理数据库(包括 ArcSDE 地理数据库、个人地理数据库和文件地理数据库)创建地理数据服务。当通过地理数据服务创建 WFS 服务时,牢记地理数据库中的所有的要素类都将在服务中显示是非常重要的。

当您需要访问远程位置上的地理数据库时,地理数据服务是非常有用的。例如,一家公司可能要建立 ArcSDE 数据库来管理洛杉矶与纽约办事处的数据。一旦数据库创建完成,每个办事处都可以在 Internet 上使用地理数据服务发布其 ArcSDE 地理数据库。

地图服务

WFS 地图服务代表一个地图文档 (.mxd),其他用户可以通过 Internet 或者任何 OGC 兼容的客户端访问这个文档。对于通过带有 WFS 功能的地图服务发布的数据,您拥有许多控制权。以下是建立地图服务的一些常见原因:

有一些关于 WFS 地图服务的限制。当通过地图文档发布 WFS 服务时,请注意以下事项:

准备用于 WFS-T 服务的数据

在创建具有读写权限的 WFS 服务之前,需要按照以下一些初始要求来设置数据:

  • 数据必须被加载到 ArcSDE 地理数据库。
  • 如果要使用版本化数据,必须将其注册为版本。
  • 版本必须专供 WFS 编辑人员使用。如果不存在任何版本,则必须创建一个版本。
  • 必须授予指定的 WFS 编辑人员编辑 SDE 连接文件的权限。

按照以下步骤为包含版本化数据的 WFS-T 服务准备数据:

步骤:
  1. 将需要发布的数据加载到 ArcSDE 地理数据库中。关于加载数据的详细信息,请参阅在 ArcCatalog 中加载数据
  2. 将数据注册为版本,方法为右键单击数据集,然后从快捷菜单中选择将数据注册为版本。有关这方面的详细信息,请参阅将数据注册为版本
  3. 现在数据已被版本化,必须专门指定一个版本供 WFS 用户编辑。如果不存在这样的版本,则请按照以下步骤创建一个新版本供 WFS 编辑人员使用。右键单击连接文件,然后选择版本
    这将打开“版本管理器”对话框。
  4. 版本管理器 对话框中,右键单击希望创建子版本的版本,然后单击新建。这将创建一个可由 WFS 编辑人员使用的新版本。
  5. 输入新版本的名称。如果是用户而非创建者要编辑此数据,则必须将权限选项设置为公共

    如果创建的是地理数据服务,则请继续执行步骤 6。如果创建的是地图服务,则请跳至步骤 9。

  6. 用于地理数据服务
  7. 要确保所创建的地理数据服务能够发布相应的数据,必须更新地理数据库的连接属性,以便这些属性引用已经创建的新 WFS 版本。

    为此,请右键单击地理数据库连接文件,然后选择连接属性

  8. 连接详细信息部分下,单击更改按钮。
  9. 选择专用于 WFS 用户的版本,然后单击确定
  10. 用于地图服务
  11. 要确保所创建的地图服务能够发布相应的数据,必须更新地图文档,以便地图文档引用新近创建的 WFS 版本。为此,请在内容列表中单击选项卡。
  12. 右键单击地理数据库,然后选择切换版本。这将打开版本管理器 对话框。
  13. 版本管理器 对话框中,选择专用于 WFS 用户的版本,然后单击确定
  14. 保存对地图文档所做的更改。

发布 WFS 服务

按照以下步骤创建地理数据服务或者地图服务:

步骤:
    启动 ArcGIS Server 管理器,然后登录。有关此步骤的其他帮助,请参阅登录 ArcGIS Server 管理器
  1. 服务选项卡下,单击发布 GIS 资源
  2. 要选择资源,请使用下拉框以浏览要发布的地图文档 (.mxd) 或者地理数据库(个人、文件或者 SDE 连接文件 [.sde])。
  3. 名称框中,输入服务的名称。名称长度不能超过 120 个字符,并且只能包含字母数字字符和下划线。
  4. 有三种方法选择服务要发布到的文件夹:
    • 使用下拉菜单选择现有文件夹。
    • 创建新文件夹。
    • 接受默认文件夹;这将发布到根文件夹。

    选择服务的发布位置后,单击下一步继续。

  5. 选择 WFS 为服务启用该功能,然后单击下一步
  6. 核查将要创建的服务的相关信息,然后单击完成创建服务。

如果您的现有服务没有启用 WFS 功能,请执行以下步骤将其启用:

  1. 列出的服务可能具有已启动状态。要更改服务上的设置,必须停用服务。如果状态显示为已启动,请选中服务旁边的复选框并单击停止按钮。
  2. 单击该服务的编辑选项。这样,您可以编辑包含功能的服务的属性。
  3. 单击功能文件夹。
  4. 选中 WFS 复选框。
  5. 单击确定启用该功能。

启用 WFS 服务上的事务

在发布 WFS 服务后,有一个名为“事务 (WFS-T)”的选项,必须启用该选项才能允许 WFS 用户对源数据库中的数据进行编辑与应用更改。

按照以下步骤启用 WFS 服务上的事务:

步骤:
  1. 在 ArcGIS Server 管理器中的服务选项卡上,单击管理服务
  2. 单击服务位置下拉箭头并导航到包含已发布服务的服务文件夹。
  3. 列出的服务可能具有已启动状态。要更改服务上的设置,必须停用服务。如果状态显示为已启动,请选中服务旁边的复选框并单击停止按钮。
  4. 单击编辑图标打开属性对话框。
  5. 在属性对话框中,选择功能选项卡。
  6. 单击选择并配置功能窗口下的 WFS 选项(单击名称,而不是单击复选框)。这将显示 WFS 服务属性。
  7. 选中启用事务复选框。

如何获取 WFS 服务的 URL

步骤:
  1. 在 ArcGIS Server 管理器中服务选项卡下,单击管理服务
  2. 单击服务位置下拉箭头并导航到包含已发布服务的服务文件夹。
  3. 列出的服务应具有已启动状态。如果状态显示为已停止,那么选中服务旁边的复选框并单击启动按钮。
  4. 要获取 WFS 服务的 URL,单击编辑图标,打开属性对话框。
  5. 单击服务能力选项卡。
  6. 高亮显示选择并配置功能 窗口下的 WFS 选项。这将显示 WFS 服务属性。
  7. WFS 服务的 URL 定位在 Web 访问 窗口中。您和其他用户将使用此 URL 连接已发布的 WFS 服务。

一旦您发布了 WFS 服务,则可以在支持 WFS 1.1 与 GML 的简单要素专用标准的任何客户端(包括 Web 浏览器)中使用 WFS 服务。您同样可以通过 ArcCatalog 与 ArcMap 中的 Data Interoperability 扩展模块使用 WFS 服务。以下各部分将向您展示如何通过 Web 浏览器与 Data Interoperability 扩展模块访问 WFS 服务。

通过 Web 浏览器连接到 WFS 服务

Web 浏览器是 WFS 服务最简单的客户端之一。您可以通过 HTTP 请求信息,然后会通过浏览器返回响应或者异常。

要连接服务,您需要知道 WFS URL,它可能位于 ArcGIS Server 管理器或 ArcCatalog 中功能选项卡的服务属性 中。一旦有了 URL,您就可以使用 OGC 标准操作,通过 HTTP 请求关于服务的信息。以下各项为您可以用来请求信息的操作示例:

GetCapabilities

此请求将通过服务以 GML 格式返回所有可用的要素类型与功能。要在 Web 浏览器中使用 GetCapabilities 操作,请复制 WFS URL 并将其粘贴在地址栏中,并在其后添加 ?request=getCapabilities,如以下示例与屏幕截图所示。

URL 示例: http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getcapabilities

下图是由 GetCapabilities 操作返回的功能示例:

GetCapabilities 也可返回所有可用要素类和表的列表:

DescribeFeatureType

该请求描述有关 WFS 服务中一个或多个要素的字段信息。这包括字段名称、字段类型、允许的最小与最大字段值以及在要素类或者表的字段上设置的任何其他限制。

要在 Web 浏览器中使用 DescribeFeatureType 操作,请复制 WFS URL 并将其粘贴到地址栏中,然后在 URL 末尾添加 ?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0。这将返回有关要素服务中各个可用要素类型和表的字段信息,如以下屏幕截图所示。

URL 示例:http://bobmk/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

在下例中,DescribeFeatureType 请求用于识别名为 cities 的要素类型的字段信息。

URL 示例:http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0

GetFeature

该请求通过 WFS 服务返回有关可用的指定要素类型的信息。此外,过滤器还可用于优化返回的信息。了解有关 WFS 服务可用的不同过滤器的详细信息,请参阅“WFS 服务”。

要在 Web 浏览器中使用 GetFeature 操作,请复制 WFS URL 并将其粘贴到地址栏中,然后在 URL 末尾添加 ?request=getFeature&typename=[在此输入要素类型]。这将返回有关此要素类型中各个要素和行的所有属性和几何信息。

URL 示例:http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

添加过滤器

您也可以在请求中添加过滤器来优化返回的结果。例如,可以请求返回指定坐标范围内的所有城市。在下例中,两个城市位于指定的坐标范围内。

URL 示例:http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88

使用 Data Interoperability 扩展模块连接 WFS 服务

可以使用 Data Interoperability 扩展模块读取和写入非 ArcGIS 格式的数据。您可以使用位于 ArcCatalog 中的“互操作连接”工具直接连接到非 ESRI 数据格式的服务(包括 WFS 服务)。一旦建立了连接,数据源就会出现在目录树中的互操作连接条目下。连接就像任何其他数据集一样,您可以将连接添加到 ArcMap 中,也可以在地理处理工具中使用它。有关如何在 ArcMap 中结合使用 Data Interoperability 扩展模块与 WFS 服务的详细信息,请参阅如何通过 ArcGIS Desktop 使用 WFS。

管理通过包含版本化数据的 WFS-T 服务创建的编辑

要管理通过 WFS-T 服务所做的编辑,创建一个有效的工作流十分重要。假设您已按照推荐的方法创建了单独的供 WFS-T 编辑人员使用的 WFS 版本,则所构建的系统应该与下图类似:

在本示例中,WFS-T 编辑人员与 ArcMap 编辑人员使用不同的版本,这样每个组可以拥有各自独立的地理数据库视图。ArcMap 编辑人员直接通过 ArcMap 编辑“默认”版本。WFS-T 编辑人员可通过 Internet 访问 WFS 服务。这就允许 WFS-T 编辑人员能在作为“默认”版本子版本创建的 WFS 版本中进行编辑。要了解有关版本的详细信息,请参阅桌面帮助系统中的版本化快速浏览

要保持这两个版本同步,可定期运行相应的过程,以便通过“默认”版本的编辑内容更新 WFS 版本以及通过 WFS 版本的编辑内容更新“默认”版本。在任何版本化系统的编辑工作流中,这是一个两步过程,称为协调过程和提交过程。该过程可自动执行,也可通过编辑人员(取决于用户的权限)或数据库管理员进行管理。要了解有关协调过程和提交过程的详细信息,请参阅版本编辑过程快速浏览

在运行时,协调操作将从“默认”版本中提取更新信息,然后放入 WFS 版本上的当前编辑会话中。如果在这两种版本中都对同一要素都做了编辑,则可能发生冲突。您可以将冲突解决方式设置为自动解决冲突,也可以选择通过冲突解决对话框手动解决冲突。

处理完冲突后可运行提交操作。该过程可将 WFS 版本中所做的更改合并到“默认”版本中。

在下图中对整个协调过程和提交过程进行了汇总。其中,在协调期间,WFS 版本从“默认”版本中提取更新信息。在合并更改之后,WFS 版本使用提交操作将其更新信息提交到“默认”版本中。现在,“默认”版本与 WFS 版本所包含的内容即相同。

在完成协调过程和提交过程后,这两个版本都是最新版本,具有要素的当前最新制图表示,然后 WFS 编辑人员可以再继续进行编辑。

要特别注意在运行协调过程和提交过程时是否有未完成的锁,因为如果存在未完成的锁,系统不会允许继续执行该过程。这就可以防止 WFS-T 客户端锁定的要素与协调过程和提交过程更改的要素之间发生冲突。此外,运行协调过程和提交过程也会锁住 WFS-T 版本,以防止在协调过程和提交过程期间 WFS-T 编辑人员执行任何锁定和事务调用。

为适应该防护措施,推荐在所有 WFS-T 编辑人员预先知道的固定时间运行协调过程和提交过程。这样,各个编辑人员可以获得提交到数据库中的各自的更改内容。在协调和提交之前,管理员可能也需要将锁从锁表中手动删除。

要了解有关 WFS-T 锁定方案的详细信息,请参阅 WFS 服务。


7/10/2012