教程:发布 WFS 服务
本教程将向您展示如何使用 ArcGIS Server 管理器发布只读访问的 WFS 服务。当发布带有 WFS 功能的地图服务或地理数据服务时,可以通过 OGC 兼容的 WFS 客户端(包括 ArcCatalog 与 ArcMap 中的 Data Interoperability 扩展模块)访问数据。WFS 客户端也可以查看对数据所做的最新更改。如果您对 WFS 服务还很陌生,并且想要在了解更多相关信息之后再学习本教程,请参阅 WFS 服务。
如果您刚刚安装 ArcGIS Server,那么在登录到管理器或者发布服务之前,需要完成一些准备工作。您可以在此帮助系统的安装完毕后了解入门知识一节中找到这些步骤。
发布服务的所需设置
要创建地图服务或者地理数据服务,您需要在 GIS 服务器中可供所有服务器对象容器 (SOC) 计算机访问的共享位置,放置地图文档 (.mxd)、地理数据库(文件或个人)或者 SED 连接文件。安装后配置期间创建的 SOC 帐户必须也要有权限读取地图文档及其引用的所有数据(地图服务),或者有权限读取您要发布的地理数据库中的所有数据(地理数据服务)。
在地理数据服务与地图服务之间作出选择
对于 WFS 服务,您可以选择是发布地理数据服务还是发布地图服务。当您选择要创建的服务类型时,应注意到二者之间的一些不同之处。以下各部分汇总了地理数据服务与地图服务的可用功能,可以帮助确定哪种服务类型最适合您的要求。
地理数据服务
您可以利用 WFS 地理数据服务通过 Internet 或 OGC 兼容的 WFS 客户端来访问地理数据库。可以为任何类型的地理数据库(包括 ArcSDE 地理数据库、个人地理数据库和文件地理数据库)创建地理数据服务。当通过地理数据服务创建 WFS 服务时,牢记地理数据库中的所有的要素类都将在服务中显示是非常重要的。
当您需要访问远程位置上的地理数据库时,地理数据服务是非常有用的。例如,一家公司可能要建立 ArcSDE 数据库来管理洛杉矶与纽约办事处的数据。一旦数据库创建完成,每个办事处都可以在 Internet 上使用地理数据服务发布其 ArcSDE 地理数据库。
地图服务
WFS 地图服务代表一个地图文档 (.mxd),其他用户可以通过 internet 或者任何 OGC 兼容的客户端访问这个文档。如果通过具有 WFS 功能的地图服务发布数据,则可以对这些数据实现全面的控制。以下是建立地图服务的一些常见原因:
- 与地理数据服务不同,单个地图服务可能包括来自于各种源的数据,而这些源中包括来自多个地理数据库(个人、文件或者 ArcSDE)以及 shapefile 的数据。
- 您可以选择通过地图服务显示哪些要素类。
- 您可以在地图文档中重命名要素类,这样在数据源中服务将不显示真实名称。
此外,WFS 地图服务有一些局限性。当通过地图文档发布 WFS 服务时,请考虑以下事项:
- 对于地图文档,只有图层规范在 WFS 服务中是可用的。在图层级别定义的符号系统、查询定义以及字段别名将不会传输到 WFS 服务,因为该服务的目的在于显示数据中的要素。要通过 OGC 规范显示地图的可视属性,请使用 WMS 服务。
- 地图中不能有两个或两个以上的图层引用同一个要素类。
- 地图中不能有两个或两个以上的图层使用相同名称。
- 因为 WFS 仅使用要素,所以地图中任何矢量图层都将从服务中排除。
- 不显示非空间表。
- 如果您想要 WFS 服务支持编辑事务 (WFS-T),那么地图中所有图层的源数据必须来自同一工作空间,例如相同的 ArcSDE 地理数据库。
发布 WFS 服务
按照以下步骤创建地理数据服务或者地图服务:
- 在服务选项卡中,单击发布 GIS 资源。
- 要选择资源,请使用下拉框以浏览要发布的地图文档 (.mxd) 或者地理数据库(个人、文件或者 SDE 连接文件 [.sde])。
- 在名称框中,输入服务的名称。名称长度不能超过 120 个字符,并且只能包含字母数字字符和下划线。
-
有三种方法选择服务要发布到的文件夹:
- 使用下拉菜单选择现有文件夹。
- 创建新文件夹。
- 接受默认文件夹;这将发布到根文件夹。
- 选择 WFS 为服务启用该功能,然后单击下一步。
- 检查将要创建的服务的相关信息。然后单击完成创建服务。
如果您的现有服务没有启用 WFS 功能,请执行以下步骤将其启用:
- 您的服务可能以状态为已启动的形式列出。要更改服务上的设置,必须停用服务。如果状态显示为已启动,请单击服务旁边的复选框并单击停止按钮。
- 为该服务单击编辑选项。这样,您可以编辑服务的属性,包括各功能。
- 单击功能文件夹。
- 单击 WFS 复选框。
- 单击确定以启用该功能。
如何获取 WFS 服务的 URL
- 在 ArcGIS Server 管理器中服务选项卡下,单击管理服务。
- 单击服务位置下拉箭头并导航到包含已发布服务的服务文件夹。
- 您的服务可能以状态为已启动的形式列出。如果状态显示为已停止,那么选中服务旁边的复选框并单击启动按钮。
- 要获取 WFS 服务的 URL,单击编辑图标,打开属性对话框。
- 在属性对话框中,选择功能选项卡。
- 高亮显示选择并配置功能 窗口下的 WFS 选项。这将显示 WFS 服务属性。
- WFS 服务的 URL 位于 Web 访问 窗口中。您和其他用户将使用此 URL 连接已发布的 WFS 服务。
通过 WFS 客户端使用已发布数据
一旦您发布了 WFS 服务,则可以在支持 WFS 1.1 与 GML 的简单要素专用标准的任何客户端(包括 Web 浏览器)中使用 WFS 服务。您同样可以通过 ArcCatalog 与 ArcMap 中的 Data Interoperability 扩展模块使用 WFS 服务。以下各部分将向您展示如何通过 Web 浏览器与 ArcCatalog 中的 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 格式或非 ArcGIS 格式的数据。您可以使用 ArcCatalog 中的“互操作连接”工具直接连接到非 ESRI 数据格式的服务(包括 WFS 服务)。一旦建立了连接,数据源就会出现在目录树中的互操作连接条目下。连接就像任何其他数据集一样,您可以将连接添加到 ArcMap 中,也可以在地理处理工具中使用它。要了解有关如何使用 Data Interoperability 扩展模块连接到 WFS 服务的详细信息,请参阅如何通过 ArcGIS Desktop 使用 WFS。