WFS 服务

使用 ArcGIS Server,您可以发布符合开放地理空间联盟 (OGC) 的网络要素服务 (WFS) 规范的服务。WFS 是通过 Web 提供地理要素服务的开放规范。

要通过 ArcGIS Server 使用 WFS 来发布数据,您必须具有相应的 ArcGIS Server 许可。有关许可要求的信息,请参阅功能图

本主题由以下各部分构成:

为何使用 WFS 服务?

通过 WFS 服务提供数据服务的情况下,任何使用 Web 服务的应用程序均可访问地图或地理数据库中的地理要素。与返回地图图像的 OGC Web 地图服务 (WMS) 不同,WFS 服务返回的是带有几何和属性信息的实际要素,客户端可以将这些要素与属性用于任何类型的地理空间分析。WFS 服务也支持过滤器,由此用户可以在数据上执行空间查询和属性查询。

技术注意事项

如何创建 WFS 服务

有两种方法可以创建 WFS 服务:从地图或从地理数据库中创建。

从地图创建 WFS 服务

您可以从 ArcMap 地图文档 (.mxd) 入手创建 WFS 服务。使用 ArcGIS Server 管理器或者 ArcCatalog 将地图文档作为 ArcGIS Server 地图服务发布。当提示您选择要启用的功能时,请选中 WFS。这将创建一个任何 WSF 客户端访问此服务都可以使用的 URL。

如果您发布服务时需要帮助,请参阅将 GIS 资源发布到服务器

对于地图文档,只有图层规范在 WFS 服务中是可用的。在图层级别定义的符号系统、查询定义以及字段别名将不会传输到 WFS 服务,因为该服务的目的在于显示数据中的要素。要通过 OGC 规范显示地图的可视属性,请使用 WMS 服务。当从地图文档发布 WFS 服务时,请牢记以下事项:

  • 如果您想要 WFS 服务支持编辑事务 (WFS-T),那么地图中所有图层的源数据必须来自同一个 ArcSDE 地理数据库。否则,该地图可以包含来自多个源的图层。
  • 地图中两个或两个以上的图层不可以引用同一个要素类或拥有相同的名称。否则,您可能会收到错误工作空间项目或者名称出现重复情况。
  • 图层的名称将会是从 WFS 返回的类型名。
  • 要通过 WFS 服务发布数据,必须在地理数据库中注册数据(包括 SDE 视图在内)。
  • 因为 WFS 仅使用要素,所以地图中任何矢量图层都将从服务中排除。
  • WFS 服务不支持虚拟类(例如,连接、关联、XY 事件、路径、coverage 或基于 Data Interoperability 扩展模块的图层)。

如果您将源地图文档用于除了发布 WFS 服务之外的其他多种用途,则可能需要一份地图文档的副本,此副本将作为 WFS 服务的源文档。然后,您可以更改副本,使其达到以上要求而不影响您的原始地图文档。

从地理数据库创建 WFS 服务

创建 WFS 服务的另一个方法是从地理数据库入手。该地理数据库可为以下任意一种类型:个人地理数据库、文件地理数据库或 ArcSDE 地理数据库。使用管理器或者 ArcCatalog 将地理数据库作为 ArcGIS Server 地理数据服务发布。当提示您选择要启用的功能时,请选中 WFS。这将创建一个任何 WSF 客户端访问此服务都可以使用的 URL。

当从地理数据服务创建 WFS 服务时,连接用户有权访问的所有要素类都将在该服务中显示。同样,该服务中仅显示在地理数据库中注册的要素类、表格以及 SED 视图。

如果您发布服务时需要帮助,请参阅将 GIS 资源发布到服务器

从地理数据库中创建 WFS 服务允许您编辑要素、读取要素以及对它们进行查询。

创建 WFS 服务的注意事项

如果地图中或者地理数据库中的要素类使用一个不能用 EPSG 编码表示的空间参考,WGS 84 将用作此要素类的空间参考。

WFS 服务将忽略使用未知空间参考系统的地图或地理数据库中的要素类。

设置 WFS 属性

WFS 服务一旦发布,您便可以设置它的特定属性。这些属性定义了服务的元数据信息供客户端检索和访问。默认情况下,已设置某些服务级别的属性,而其他级别的属性则处于未设置状态。以下内容描述了如何使用 ArcGIS Server 管理器或 ArcCatalog 来设置定义服务级别元数据的属性:

  1. 启动 ArcCatalog 或 ArcGIS Server 管理器。
  2. 打开服务属性 对话框。要在 ArcCatalog 中实现这一点,右键单击现有服务,然后单击服务属性。在 ArcGIS Server 管理器中,单击服务选项卡,单击管理服务,然后单击该服务的编辑图标。
  3. 单击功能选项卡。
  4. 如果未在功能列表中选中 WFS,请将其选中。如果已选中,仅单击字母 WFS 便可。即会出现某些 WFS 特定的属性。
  5. 单击在下面输入服务属性
  6. 在文本框中,输入您要包括在内的任意服务级别的元数据(例如,服务的名称、标题以及作者联系信息)。
  7. 当您完成添加元数据时,请单击保存并重新启动。您输入的信息将显示在系统生成的服务能力文件中。

有关这些属性的描述,请参阅 OGC Web 服务常见规范版本 1.0。

请注意,启用事务复选框用于允许通过 WFS-T 应用编辑内容。有关详细信息,请参阅下面的编辑和 WFS 服务部分。

定义元数据的另一个方法是使用一个外部服务能力文件。使用外部服务能力文件,可以针对您的要素类型添加除了默认值以外的其他投影。默认值包括图层或要素类的坐标系以及 WGS84 (EPSG 4326)。有关使用外部服务能力文件的详细信息,请参阅下面的高级主题部分。

作为 ArcGIS 10.0 中的新增功能,您也可以设置 DefaultMaxFeatures 属性,这样您便可以控制由服务返回的最大要素数。此属性可在配置服务文件或外部服务能力文件中设置。只有 WFS 1.1.0 支持 DefaultMaxFeatures 属性,所以如果您在使用外部服务能力文件,仅需在引用 1.1.0 属性的文件中设置此属性即可。

在配置服务文件中,DefaultMaxFeatures 属性应在 WFSServer 部分中定义如下:

<Extension>
	 <TypeName>WFSServer</TypeName>
  <Enabled>true</Enabled>
  <Properties>
    ...
    <EnableDefMaxFeatures>true</EnableDefMaxFeatures>
    <DefMaxFeaturesValue>200</DefMaxFeaturesValue>
  </Properties>
  ...
</ows:Constraint>
</Extension>

如果您使用的是外部服务能力,则 DefaultMaxFeatures 属性应在 WFSServer 1.1.0 文件的元数据部分中定义如下:

<ows:Constraint name="DefaultMaxFeatures">
	 <ows:Value>200</ows:Value>
</ows:Constraint>

特殊字符

所有的服务属性都不能包含以下字符:&、<、>、" 和 '。如果您需要使用其中的某个字符,则必须通过下表中相应的转义字符进行替换:

&

&amp;

<

&lt;

>

&gt;

"

&quot;

'

&apos;

WFS 服务的安全性

WFS 服务向 WFS 客户提供 ArcGIS Server 地图或地理数据服务。通过控制 WFS 服务父地图或地理数据服务的安全来管理 WFS 服务的安全性。如果拒绝某个特殊角色(例如规划人员)访问地图,则无论尝试通过 SOAP、REST 还是 WFS 接口使用地图,规划人员都将无法访问该地图。

ArcGIS Server 支持多种不同的身份验证方案。通常会通过 OGC 接口访问的服务应使用 HTTP Basic、HTTP Digest 或集成的 Windows 身份验证进行保护。大多数 OGC 客户端(非 ESRI 客户端和 ESRI 客户端)都能够识别并使用这些应用广泛的标准身份验证方案。

访问 WFS 服务

当您使用 ArcGIS Server 创建 WFS 服务时,此服务可用于支持 WFS 的任何客户端。

客户端的类型

Web 浏览器是 WFS 服务最简单的客户端。您可通过 HTTP 发出 WFS 请求,然后会通过浏览器返回响应或者异常。所有 WFS 服务都支持三种操作:GetCapabilities、DescribeFeatureType 以及 GetFeature。通过 URL 参数,您可以使用这些操作来获取 WFS 服务中的服务元数据、要素类型信息和 GML 编码的要素。在 OGC WFS 规范中有这些操作与参数的详细介绍。

有许多第三方客户端可以使用 WFS 服务:要使用由 ArcGIS Server 创建的 WFS 服务,客户端必须支持 WFS 1.1 或 1.0 以及 GML 简单要素专用标准。

ArcGIS Server 随附的开箱即用的 Web 制图应用程序不支持添加 WFS 服务。但是,ArcCatalog 和 ArcMap 可以使用 WFS 服务。有关在 ArcMap 中使用 WFS 服务的帮助,请参阅如何通过 ArcGIS Desktop 使用 WFS

WFS 1.1 规范指出,许多地理坐标系(包括 WGS84)的坐标都以纬度、经度 (y,x) 的顺序返回。通过 ArcGIS Server 发布的 WFS 服务遵守此规范。但是某些 WFS 客户端希望坐标以经度、纬度 (x,y) 的顺序返回。在这种情况下,您可以选择交换从 WFS 服务中返回的要素的坐标顺序,即以经度、纬度 (x,y) 的顺序返回。有关详细信息,请参阅下面的高级主题

URL 结构

要连接该服务,您需要了解 URL。URL 遵循以下模式:

http://<服务器名称>/<实例名称>/services/<文件夹名称(如果适用)>/<服务名称>/<服务类型>/WFSServer?

  • 服务器名称为您的 Web 服务器计算机的名称。
  • 实例名称为当您安装 ArcGIS Server 时指定的 ArcGIS Server 实例名称。
  • 服务类型可以是 MapServer 或 GeoDataServer,这取决于您是从地图还是从地理数据库中创建 WFS 服务。

例如,如果您在地图服务 WFSDemoService(位于带有默认实例名称 arcgis 的服务器 MyServer 上的文件夹 DemoFolder 中)上启用了 WFS 功能,URL 将如下所示:http://MyServer/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?

同样,如果您在地理数据服务上启用 WFS 功能,URL 将如下所示:http://MyServer/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

使用过滤器

当您使用 WFS 服务时,您可以使用一系列过滤器来选择各组要素。ArcGIS Server 创建的 WFS 服务使用的是 OGC OpenGIS 过滤器编码执行规范 (FE) 版本 1.1。以下是您可以应用的过滤器:

几何

空间

逻辑

比较

排序

Envelope

BBOX

And

EqualTo

SortBy*

Point

Equals

Or

NotEqualTo

MultiPoint

Disjoint

Not

LessThan

LineString

Intersects

GreaterThan

Crosses

LessThanOrEqualTo

Touches

GreaterThanOrEqualTo

Within

Like

Contains

Between

Overlaps

NullCheck

注意注意:

SortBy 过滤器仅可以应用于基于存储在 ArcSDE 地理数据库中数据的 WFS 服务。

示例

使用带有这些过滤器的 GetFeature 示例可以在网络要素服务执行规范的 9.5 部分中找到。

使用 FeatureID 参数。

在 GetFeature 请求中可使用 FeatureID 参数来请求 WFS 服务中的指定要素。FeatureID 参数由 FeatureType 和 gml:id(不是要素的 OBJECTID)组成。ArcGIS WFS 服务中要素的 FeatureID 格式为 <FeatureType>.<gml:id>。在 WFS 服务中标识要素的 gml:id 的一个方法是在感兴趣的 FeatureType 上执行 GetFeature 请求。

注意注意:

基于 shapefile 的 WFS 服务中不提供要素的 gml:ids。

例如:WPS 服务中有一个名为 Cities 的 FeatureType。如果您对 Cities 执行 GetFeature 请求,则响应将包括每个要素的 gml:id。

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

GetFeature 请求

在此示例中,城市 Vancouver 的 FeatureID 将为 cities.F293__1。以下请求可使用 FeatureID 专用于请求城市 Vancouver:http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

使用 Filter 参数。

在 GetFeature 请求中可使用 Filter 参数来请求 WFS 服务中的指定要素。Filter 参数的优势在于,它是 WFS 规范中定义的标准关键字-值对编码的一部分,并且可追加到 HTTP Get 请求的末尾。Filter 参数的值必须设置为 URL 编码的 OGC Filter XML 字符串。可对上表中列出的任何受支持的过滤器进行编码,并可通过 Filter 参数将其发送到服务器。

例如,如果在 WFS 服务中创建了一个名为 blockgroups 的 FeatureType,则可通过发送以下 GetFeature 请求来获取 -122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143 范围内的 blockgoup 要素:

http://server/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:BBOX><ogc:PropertyName>Shape</ogc:PropertyName><gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:coordinates>37.7877919206256,-122.423192682619 37.7893634225143,-122.421377806544</gml:coordinates></gml:Box></ogc:BBOX></ogc:Filter>

如果要请求包含特定点要素(如 122.431577, 37.749936)的 blockgroups 要素,可发送以下 GetFeature 请求:

http://server/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:Contains><ogc:PropertyName>Shape</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:pos srsName="urn:x-ogc:def:crs:EPSG:4326">37.749936 -122.431577</gml:pos></gml:Point></ogc:Contains></ogc:Filter>

注意注意:

WFS 要求过滤器 XML 字符串中包含相关的命名空间前缀。此外,为避免 Web 浏览器或 Web 服务器完成不正确的转换,应先对过滤器 XML 字符串进行 URL 编码,然后再将其发送到服务器。

编辑和 WFS 服务

地图服务与地理数据服务都可用于发布 ESRI 数据源(例如地理数据库)数据。当您发布带有 WFS 服务能力的地图或者地理数据服务时,可通过 OGC 兼容的 WFS 客户端访问该数据。WFS 客户端也可以查看对数据所做的最新更改。

当从 WFS 客户端(例如,查看器)发出请求时,将返回相应数据,因为此时数据源中存在此数据。例如,假设有一个包含要素类的地图文档。此要素类来自于一个文件地理数据库。现在您将该地图文档作为地图服务发布并且启用 WFS 服务能力。带有 WFS 查看器的客户端可以使用由地图服务提供的 WFS 的 URL 访问要素类中的数据。

假设某人访问源文件地理数据库,并添加、更新和删除了要素类中的要素。带有 WFS 查看器的客户端下次刷新时,用户将看到最新编辑后的数据。

当数据源为 ArcSDE 地理数据库时,地理数据服务和地图服务会发布特定版本的数据。如果数据是在此特定版本中进行了编辑,那么 WFS 客户端和非 WFS 客户端均能看到这些更改。但是,如果是在其他版本中进行了编辑,则只有使用已发布版本对更改进行协调之后,客户端才能看到这些更改。

上述功能可以使您对通过您的服务显示的数据进行更多控制。假设您从名为 WFS 的版本中发布带有 WFS 服务能力的某些数据。配有 WFS 查看器的客户端随后开始通过您的服务访问数据。与此同时,内业编辑人员在使用 ArcGIS 更新默认版本。如有必要,稍后将对编辑人员做出的更改进行检查和调整。一旦完成评估,WFS 版本将与默认版本进行协调。此时,WFS 客户端将看到编辑人员的最新更新。

事务 WFS 服务

使用事务性 WFS 服务(有时称为 WFS-T),WFS 编辑器可以应用通过 WFS 服务对源数据库中的数据所做的更改。要通过 WFS-T 应用更改,数据必须来源于 ArcSDE 地理数据库。可在具有版本化数据、非版本化数据或者以上两者组合的服务上启用事务功能。如果您选择使用版本化数据,同样建议您由非默认版本发布服务。

要将您的地理数据库作为事务性 WFS 服务发布,请执行以下步骤:

  1. 确定您要将通过 WFS 服务发布的数据进行版本化还是非版本化。如果您要发布版本化数据,请创建一个您的事务性 WFS 编辑器专用的版本。如果您要使用非版本化的数据,则可以在默认版本上发布该服务。
  2. 选择您将数据作为 WFS 服务发布时要使用的服务类型。您可以发布一个地理数据库连接文件(作为地理数据服务)或一个地图文档(作为地图服务)。如果您要对版本化数据使用地图服务,请确保地图文档中的数据仅引用了来自于为 WFS 编辑器创建的特定版本中的数据。确保在服务上启用 WFS 服务能力。
  3. 在服务上启用事务。可在 ArcCatalog 或 ArcGIS Server 管理器中按以下步骤完成此操作:
    • 停止服务。
    • 显示服务属性
    • 单击功能选项卡。
    • 单击名称 WFS(不是复选框)。
    • 单击启用事务
    • 启动该服务。

一旦启用了事务功能,WFS 客户端便可使用事务性 WFS 方法应用对地理数据库的更改。下面是如何应用更改的示例:

  • WFS 客户端连接到启用事务的已发布 WFS 服务。
  • 在服务器上锁定所编辑的要素和行(可使用 GetFeatureWithLock WFS 方法执行此操作)。
  • 在 WFS 客户端上使用 WFS 编辑器执行编辑。
  • 随后在服务器上应用编辑(可使用事务 WFS 方法执行此操作)。

当提交编辑内容后,将解除锁定并且要素可由其他 WFS 编辑器进行编辑。如果时间超时,锁定同样也可解除。默认情况下,5 分钟后锁定将超时,但可通过使用 GetFeatureWithLock 方法指定一个超时分钟数来调整锁定时间。管理员可通过手动编辑配置和设置元素 DefaultLockExpiration(以分钟为单位的时间)来设置默认超时时间。

当客户端使用 DefaultLockExpiration 请求锁定时,将返回带有锁定要素的要素集合和一个 lockID。如果不能锁定任何请求要素,该请求将失败并且客户端需要再次调用 GetFeatureWithLock。只有解除这些要素的锁定之后,其他客户端才可以获取这些要素上的锁定。

仅插入事务不要求锁定要素。因为现有要素不能被修改(更新或删除),所以不必调用 GetFeatureWithLock。任何要求更新或删除的事务请求必须有 lockID。

当更改内容通过 WFS-T 提交时,它们将应用到已发布的版本(带有版本化数据)或应用到业务表格(带有非版本化数据)。当使用版本化数据或者非版本化数据时,您都需要注意以下部分讨论的重要工作流程差异。

WFS-T 服务和版本化数据

版本管理的功能允许您向 WFS 和非 WFS 编辑器显示您的地理数据库,也允许您通过完全冲突检测有效合并由两组用户所做的编辑。要合并编辑内容,您可以将发布的 WFS-T 版本与其父版本进行协调并提交发布的 WFS-T 版本。如果存在未完成的锁,系统不会允许继续执行协调与提交。这就可以防止 WFS-T 客户端锁定的要素与因为协调过程和提交过程更改的要素之间发生冲突。此外,协调和提交将锁定发布的版本,防止在协调过程和提交过程中执行 GetFeatureWithLock 和事务调用。有关使用版本化数据的详细信息,请参阅:版本化快速浏览

带有版本化数据的 WFS-T 服务工作流

要素锁定通过锁表的方法在服务器上保留。当事务被启用并且以常规表出现在地理数据库中时,将创建锁表。表的命名遵循 VERSION_<versionID>_ROW_LOCKS 约定。要防止协调和提交受到阻止,管理员可能要在调用协调和提交之前通过直接从锁表上删除行来删除未完成的锁定。

已发布的 WFS-T 版本不应使用 ArcGIS 进行编辑。ArcGIS 编辑器不会注意要素锁定,所以可对锁定的要素进行编辑。这这种情况下,在 ArcGIS 中所做的编辑可能会导致冲突,阻止 WFS-T 客户端上载所做的更改。如果更改被协调并提交到所发布版本中,则创建并编辑所发布版本的子版本可能也会引起类似的问题。

多个 WFS-T 服务可以引用相同的发布版本,因为所有的 WFS-T 服务都共享同一个锁表。发布版本与其锁表之间存在 1 对 1 的关联。

如果您禁用事务或者将 WFS 服务移除,锁表不会自动删除。一旦不再有任何 WFS-T 服务引用此版本,可以手动删除相应的锁表。

WFS-T 服务和非版本化数据

如果您在 WFS-T 服务中发布非版本化数据,编辑内容将直接应用到地理数据库的业务表中,所以一旦提交了编辑内容,就无法撤消。有关使用非版本化数据的详细信息,请参阅:

对于基于 WFS-T 服务的非版本化数据,要素锁定同样保存在锁表的服务器上,该锁表当在服务上启用事务时创建。如果您计划仅使用 WFS-T 客户端编辑服务,这将与基于服务的版本化数据的行为相同。但是如果您计划使用非 WFS-T 客户端(例如,ArcMap)编辑在服务中发布的数据,则需要注意一些重要的事项;

  1. ArcMap 编辑器不会注意到要素锁定,所以可以编辑通过 WFS-T 服务锁定的要素。
  2. 如果 ArcMap 编辑器编辑要素,这些要素将以对 WFS-T 客户端锁定的形式出现。所以只有 ArcMap 编辑器保存这些编辑内容之后,WFS-T 客户端才能锁定、更新或者删除这些要素。

如果您禁用事务或者将 WFS 服务移除,锁表不会自动删除。一旦不再有任何 WFS-T 服务引用此版本,可以手动删除相应的锁表。

  • ArcGIS Server 用于连接到 ArcSDE 地理数据库的 DBMS 用户必须被授予在 DBMS 中创建表格的权限,才能成功使用 WFS-T。
  • ArcMap 不存在事务 WFS 编辑的机制,这意味着您必须使用第三方客户端来编辑使用 WFS 的要素。
  • 当通过 WFS-T 编辑时,您可以使用池化服务,因为不要求始终访问服务。
  • 无法使用 WFS-T 编辑具有 Z 值的要素类。

高级主题

本部分包含了关于 WFS 服务的高级条目信息。

使用外部服务能力文件

使用外部服务能力文件发布 WFS 服务的目标对象是熟悉 OGC WFS 规范与 WFS 服务能力文件语法的用户。这种选择方式为您最大程度地提供了自定义 WFS 服务的灵活性。使用外部服务能力文件,您可以执行以下操作:

  • 将服务级别的元数据信息添加到 WFS 服务能力文件。
  • 将要素级别的元数据信息添加到 WFS 服务能力文件。
  • 添加来自 ArcGIS Server 预定义投影列表中的其他预定义空间参考系统。

使用外部服务能力文件发布 WFS 服务将节省每次访问服务时从头开始创建服务能力文件所花的时间。这可提高连接到您 WFS 服务的速度,尤其是当您的服务中有多种类型名称时。但是,如果您对服务的基础地图文档或者地理数据库进行了更改,您也必须相应地更新该服务的服务能力文件后才能继续工作。

有两种不同的方法可用于创建外部服务能力文件:您可以在 XML 或文本编辑器中从头开始创建服务能力文件。您也可以通过发布带有默认设置的 WFS 服务并从 Web 浏览器中调用 GetCapabilities 的方法生成服务能力文件。从 GetCapabilities 请求返回的内容可以保存为 .xml 文件、可根据需要进行修改以及可用作外部服务能力文件。如何构造并填写外部服务能力文件的内容已超出本帮助系统的范围,有关详细信息,请访问本主题底部的更多阅读材料链接。

从 ArcGIS 9.3 SP1 开始,ArcGIS Server 与 1.1.0 和 1.0.0 OGC WFS 规范都兼容。因此,对于 ArcGIS 9.3 SP1,创建并使用外部服务能力文件的各步骤已更改。以下各步骤将介绍从现有 WFS 服务中创建外部服务能力文件的方法以及使用这些外部服务能力文件发布 WFS 服务的方法。其中包括适用于 ArcGIS 9.3 和始于 ArcGIS 9.3 SP1 的新过程的各个步骤。

在 ArcGIS 9.3 中使用外部服务能力文件创建并发布 WFS 服务的方法

第 1 部分:从现有 WFS 服务中创建外部服务能力文件

  1. 启动 ArcCatalog 或 ArcGIS Server 管理器。
  2. 打开服务属性 对话框。要在 ArcCatalog 中实现这一点,右键单击现有服务,然后单击服务属性。在 ArcGIS Server 管理器中,单击服务选项卡,然后单击服务的编辑图标。
  3. 单击功能选项卡。
  4. 如果未在功能列表中选中 WFS,请将其选中。如果已选中,仅单击字母 WFS 便可。即会出现一些 WFS 特定的属性。
  5. 高亮显示 WFS URL 并将其复制及粘贴到 Web 浏览器。
  6. 要创建适用于 WFS 1.1.0 规范的外部功能文件,请将 ?request=getCapabilitiesrequest=getCapabilities&version=1.1.0 追加到 Web 浏览器中的 WFS URL 之后,并将结果以结尾追加版本号的 XML 文件的形式保存。在 ArcGIS 9.3 中,.xml 文件必须以 GetCapabilities110.xml 的形式保存。

第 2 部分:在 ArcGIS 9.3 中使用外部服务能力文件创建 WFS 服务

一旦已创建服务能力文件,此文件可放置在 SOC 与服务器可访问的文件夹中。例如,文件可放置在与服务的地理数据库或者地图文档相同的位置。也可使用 URL 位置。

可对使用默认属性的现有服务进行更新以使用外部服务能力文件,或可创建引用外部服务能力文件的新服务。以下步骤描述了使用外部服务能力文件发布 WFS 服务的方法。

注意注意:

要特别注意,仅有一个外部服务能力文件可以在 ArcGIS 9.3 中的文件夹中保存,否则服务器将无法区分应该使用哪个服务能力文件,所以服务能力文件必须都命名为 GetCapabilities110.xml

使用外部服务能力文件发布 WFS 服务的方法:

  1. 启动 ArcCatalog 或 ArcGIS Server 管理器。
  2. 停止您要更新的服务。
  3. 打开服务属性 对话框。要在 ArcCatalog 中实现这一点,右键单击现有服务,然后单击服务属性。在 ArcGIS Server 管理器中,单击服务选项卡,然后单击服务的编辑图标。
  4. 单击功能选项卡。
  5. 如果未在功能列表中选中 WFS,请将其选中。如果已选中,仅单击字母 WFS 便可。即会出现某些 WFS 特定的属性。
  6. 单击使用外部服务能力文件
  7. 下一步骤用于指定外部服务能力文件的位置。通过提供 URL 或包含服务能力文件的文件夹路径来指定服务能力文件的位置。当指定位置或 URL 时,请不要将 .xml 文件的名称包含在内。URL 位置的一个示例为 http://<server name>/arcgis/wfs;文件夹位置的示例为 C:\arcgis\arcgisserver\wfs。
  8. 重新启动服务。

在 ArcGIS 9.3 SP1 及以后版本中使用外部服务能力文件创建并发布 WFS 服务的方法

从 ArcGIS 9.3 SP1 开始,ArcGIS Server 与 1.1.0 和 1.0.0 OGC WFS 规范都兼容。因此,需要两个外部服务能力文件,一个引用 1.1.0 规范,另一个引用 1.0.0 规范。

第 1 部分:从现有 WFS 服务中创建外部服务能力文件

  1. 启动 ArcCatalog 或 ArcGIS Server 管理器。
  2. 打开服务属性 对话框。要在 ArcCatalog 中实现这一点,右键单击现有服务,然后单击服务属性。在 ArcGIS Server 管理器中,单击服务选项卡,然后单击服务的编辑图标。
  3. 单击功能选项卡。
  4. 如果未在功能列表中选中 WFS,请将其选中。如果已选中,仅单击字母 WFS 便可。即会出现一些 WFS 特定的属性。
  5. 高亮显示 WFS URL 并将其复制及粘贴到 Web 浏览器。
  6. 要创建适用于 WFS 1.1.0 规范的外部服务能力文件,请将 ?request=getCapabilitiesrequest=getCapabilities&version=1.1.0 追加到 Web 浏览器中的 WFS URL 之后,并将结果以 XML 文件的形式保存。该文件名必须为 <前缀>110.xml 格式。例如,如果服务名为 California,您可能希望将文件命名为 California110.xml,其中 California 是前缀。
  7. 要创建适用于 WFS 1.0.0 规范的外部服务能力文件,请将 ?request=getCapabilities&version=1.0.0 追加到 WFS URL 之后,并将结果以 XML 文件的形式保存。该文件名必须为 <前缀>100.xml 格式,并且前缀必须与 1.1.0 文件的前缀相匹配。按照第 6 步中的示例,如果 1.1.0 文件名为 California110.xml,则 1.0.0 文件名必须为 California100.xml

第 2 部分:在 ArcGIS 9.3 SP1 及以后版本中使用外部服务能力文件创建 WFS 服务

一旦已创建服务能力文件,此文件可放置在 SOC 与服务器可访问的文件夹中。例如,文件可放置在与服务的地理数据库或者地图文档相同的位置。也可使用 URL 位置。要特别注意,从 ArcGIS 9.3 SP1 开始,两个文件必须放置在相同的位置。

可对使用默认属性的现有服务进行更新以使用外部服务能力文件,或可创建引用外部服务能力文件的新服务。以下步骤描述了发布带有外部服务能力文件的 WFS 服务的方法。

使用外部服务能力文件发布 WFS 服务的方法:

  1. 启动 ArcCatalog 或 ArcGIS Server 管理器。
  2. 停止要更新的服务。
  3. 打开服务属性 对话框。要在 ArcCatalog 中实现这一点,右键单击现有服务,然后单击服务属性。在 ArcGIS Server 管理器中,单击服务选项卡,然后单击服务的编辑图标。
  4. 单击功能选项卡。
  5. 如果未在功能列表中选中 WFS,请将其选中。如果已选中,仅单击字母 WFS 便可。即会出现一些 WFS 特定的属性。
  6. 单击使用外部服务能力文件
  7. 下一步骤用于指定外部服务能力文件的位置。通过提供 URL 或包含服务能力文件和前缀的文件夹路径来指定服务能力文件的位置。例如,如果对于 California 服务有名为 California110.xmlCalifornia100.xml 的服务能力文件,则前缀为 California。如果这些文件存储在 http://ArcGIS_Server/arcgis/wfs,则应该指定 http://ArcGIS_Server/arcgis/wfs/California。如果您选择将这些文件存储在其他位置 C:\arcgis\arcgisserver\wfs,则应该指定 C:\arcgis\arcgisserver\wfs\California
  8. 重新启动服务。
注意注意:

现在当 WFS 客户端访问服务时,将根据要求的版本引用相应的服务能力文件。例如,如果 WFS 客户端调用 DescribeFeatureType&version=1.0.0,则服务器将以 1.0.0 特定的外部服务能力文件的信息来响应。如果不指定版本,服务器将返回 1.1.0 特定的外部服务能力文件的信息。

将空间参考系统添加到外部服务能力文件

虽然您可以使用数百个受支持的空间参考系统中的任意一种向 WFS 服务请求地图,但如果请求的空间参考没有出现在服务能力文件中,则有些 WFS 客户端会返回错误。其他客户端(例如 Data Interoperability 扩展模块)仅允许在服务能力文件中列出的空间参考系统间进行切换。

您可以手动将更多空间参考系统添加到 WFS 服务的外部服务能力文件中。外部服务能力文件在上面进行了介绍。

控制轴顺序

在某些地理坐标系(例如 WGS 84)中返回的要素具有默认的纬度、经度 (y,x) 的轴顺序。这一点符合 WFS 1.1 规范。例如,通过 getfeature 请求可返回带有如下指定坐标的一点:

 <gml:Point> 	<gml:pos>48.4922165520043 -122.630685732366</gml:pos>  </gml:Point> 

某些 WFS 客户端希望坐标以经度、纬度 (x,y) 的轴顺序返回。要使用这些客户端,您可将服务的轴顺序设置为经度、纬度。以下描述了设置该属性的方法:

  1. 以管理员的身份登录到运行 ArcGIS Server 的计算机。
  2. 关闭 ArcGIS Server。
  3. 转到服务配置文件的位置。例如,如果 ArcGIS Server 安装在 c:\arcgis 中,则请转到 c:\arcgis\server\user\cfg。
  4. 在文本编辑器中打开您的服务的配置文件(例如 myservice.cfg)。
  5. 在 WFS 部分中,将以下内容添加到属性:<AxisOrderWFS11>longlat</AxisOrderWFS11>。例如:
     <Extension> 	<TypeName>WFSServer</TypeName> 	<Enabled>true</Enabled> 	<Properties> 		<AxisOrderWFS11>longlat</AxisOrderWFS11> 		<CustomGetCapabilities>false</CustomGetCapabilities> 		<EnableTransactions>false</EnableTransactions> 		<Name>wfs_WFSTest_ras</Name> 		<OnlineResource>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource> 		<AppSchemaURI>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI> 		<AppSchemaPrefix>wfs_WFSTest_ras</AppSchemaPrefix> 	</Properties> 	<Info> 		<WebEnabled>true</WebEnabled> 	</Info> </Extension> 
  6. 启动 ArcGIS Server。

从服务中请求的地理坐标的要素现在以经度、纬度的轴顺序返回。

请注意轴顺序属性仅适用于带地理坐标的要素。带有投影坐标的要素始终以 x,y 的轴顺序返回。

使用完全限定的类型名

针对从 ArcSDE 地理数据库中定义的 WFS 服务生成的类型名默认情况下将基于要素类的非限定名。例如,名为 bob.buildings 的要素类的类型名将是 buildings。

您可以设置一个属性以在生成类型名时包括完全限定的名称。如果在地理数据库中多个要素类具有相同的名称但具有不同的所有者,您可能需要执行此操作。当使用完全限定的名称时,bob.buildings 的类型名将是 bob_buildings。

以下步骤描述了设置属性以使用完全限定名的方法:

  1. 以管理员的身份登录到运行 ArcGIS Server 的计算机。
  2. 关闭 ArcGIS Server。
  3. 转到服务配置文件的位置。例如,如果 ArcGIS Server 安装在 c:\arcgis 中,则请转到 c:\arcgis\server\user\cfg。
  4. 在文本编辑器中打开您的服务的配置文件(例如 myservice.cfg)。
  5. 在 WFS 部分中,将以下内容添加到属性:<UseQualifiedName>true</UseQualifiedName>。例如:
     <Extension> 	<TypeName>WFSServer</TypeName> 	<Enabled>true</Enabled> 	<Properties> 		<UseQualifiedName>true</UseQualifiedName> 		<CustomGetCapabilities>false</CustomGetCapabilities> 		<EnableTransactions>false</EnableTransactions> 		<Name>wfs_WFSTest_ras</Name> 		<OnlineResource>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource> 		<AppSchemaURI>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI> 		<AppSchemaPrefix>wfs_WFSTest_ras</AppSchemaPrefix> 	</Properties> 	<Info> 		<WebEnabled>true</WebEnabled> 	</Info> </Extension> 
  6. 启动 ArcGIS Server。

更多阅读材料

如果您对阅读更多关于 WFS 服务的资料感兴趣,请参阅以下附加资源:


3/7/2012