开放地理空间联盟 (OGC) 的 Web 地图服务 (WMS) 规范是一种在 web 上提供和使用动态地图时需遵守的国际规范。在 ArcGIS for Desktop 中发布地图或影像服务时,您可以通过启用 WMS 功能向 ArcGIS Server 上发布 WMS 服务。
如果要在不同的平台和客户端之间以一种开放并经认可的方式提供 Web 地图,则 WMS 服务非常有用。任何原生支持 WMS 规范的客户端均可查看和使用您的服务。到目前为止,已发布了四个版本的 WMS 规范。这些版本是 v1.0.0、v1.1.0、v1.1.1 和 v1.3.0(最新版本)。
客户端应用程序通过向服务的 URL 附加参数来使用 WMS 服务。发布到 ArcGIS Server 的 WMS 服务支持以下操作:
- 请求服务的元数据 (GetCapabilities)
- 请求地图图像 (GetMap)
- 请求关于地图要素的信息 (GetFeatureInfo [可选])
- 请求用户自定义样式 (GetStyles)
- 请求图例符号 (GetLegendGraphic)
WMS 服务无需支持所有操作,但如果作为基本 WMS,则必须至少支持 GetCapabilities 和 GetMap 操作,如果作为可查询 WMS,则需支持可选的 GetFeatureInfo 操作。GetStyles 和 GetLegendGraphic 操作都只适用于样式化图层描述符 (SLD) WMS 服务。
虽然可通过 GetFeatureInfo 操作发出属性请求,但是由 WMS 服务返回的地图图像没有实际数据。要通过 OGC 规范以矢量要素的形式提供数据,请改为发布 WFS 服务。要将数据显示为栅格图层,请发布 WCS 服务。您可通过访问开放地理空间联盟网站了解有关 WMS 服务的详细信息。
发布 WMS 服务
发布 WMS 服务的方法有两种:
- 发布启用 WMS 功能的地图服务。要发布地图服务,首先需要创建一个地图文档。
- 发布启用 WMS 功能的影像服务。要发布影像服务,需要具有引用某一栅格数据集或镶嵌数据集的栅格数据集、镶嵌数据集或图层文件。
发布地图或影像服务时,请确保启用了 WMS 功能,方法是在服务编辑器 的功能选项卡中选中 WMS 复选框。有关 WMS 服务创建过程的详细步骤信息,请参阅教程:发布 WMS 服务。
地图中图层的个数将直接影响最初创建 WMS 服务或停止此服务之后再次启动此服务所需花费的时间。您可以通过移除或合并服务中的图层来缩短启动时间。
WMS 服务可充分利用地图服务缓存(如果可用)。仅当请求服务的原始投影、图层顺序和图层可见性时才会使用地图服务缓存。缓存切片将被重新采样以适应于客户端所请求的比例,这可能需要一些处理时间并会降低图像质量。如果您的 WMS 服务具有很多图层或复杂的符号系统,使用缓存的最大好处是无需花费大量时间进行动态绘制。如果只具有少量图层和简单的符号系统,则不使用缓存也可实现较高的性能。
注:
WMS 服务只能使用地图服务缓存;不支持影像服务缓存。
查看一个源于按需缓存的地图服务的 WMS 服务时,如果用户导航到一处未缓存的区域,则会在缓存中自动创建切片。
如果您的 WMS 服务源自一个基于镶嵌数据集的 ArcGIS Server 影像服务,那么客户端可以对数据集中的特定栅格进行查询。这种情况下,WMS 的 GetMap 请求将具有一个可用的附加参数 IMAGES - 例如,设置 IMAGES=1,2,则可请求影像服务目录表中对象 ID 为 1 和 2 的影像。
配置 WMS 服务属性
WMS 服务的属性将显示在它的功能文件中,所有使用此服务的用户都可更好的了解这一服务发布程序。如果使用系统生成的功能文件发布 WMS 服务(默认),则建议您填充 WMS 服务属性。有关可设置的每个 WMS 服务属性的信息,请参阅 WMS 服务的可用属性。此外,以下主题包含有关如何到达可设置 WMS 服务属性的位置的说明:
配置 WMS 服务所支持的操作
您可以控制在管理器和 ArcGIS for Desktop 中所允许的 WMS 服务操作。例如,如果要求限制对个别要素信息的访问,请取消选中 GetFeatureInfo 选项。对该要素信息的任何访问请求都会被拒绝。
默认情况下,所有操作均处于启用状态。可用操作有:
- GetCapabilities:将能力信息返回到客户端,并作为对 GetCapabilities 请求的响应。
- GetFeatureInfo:将要素返回到客户端,并作为对 GetFeatureInfo 请求的响应。
- GetLegendGraphic:将图例影像返回到客户端,并作为对 GetLegendGraphic 请求的响应。
- GetMap:将地图影像返回到客户端,并作为对 GetMap 请求的响应。
- GetSchemaExtension:将方案返回到客户端,并作为对 GetSchemaExtension 请求的响应。
- GetStyles:将可用的样式信息返回到客户端,并作为对 GetStyles 请求的响应。
注:
要完全符合 OGC WMS,请启用(至少)GetCapabilities 和 GetMap 操作。
使用外部功能文件设置 WMS 属性
定义元数据的另一种方法是使用一个外部功能文件。这样即可针对您的要素类型添加除了默认值以外的其他投影。默认值包括图层或要素类的坐标系以及 WGS84 (EPSG 4326)。有关详细信息,请参阅对 WMS 服务使用外部功能文件。
WMS 服务的安全性设置
ArcGIS Server WMS 服务的安全性可通过控制其父地图服务或父影像服务的安全性进行管理。如果拒绝某个特定角色(例如规划人员)访问地图,则无论尝试通过 SOAP、表述性状态转移 (REST) 还是 OGC(例如 WMS)接口使用地图时,规划人员都将无法访问该地图。ArcGIS Server 支持多种不同的身份验证方案,包括基于 HTTP 的身份验证(基本身份验证和摘要式身份验证)和 ArcGIS Server 管理的基于令牌的身份验证。
HTTP 身份验证
希望通过 WMS 接口访问的服务应使用 HTTP Basic 或 HTTP Digest 进行安全性设置。大多数 WMS 客户端(Esri 客户端和非 Esri 客户端)都能够识别并使用这些被广泛应用的标准身份验证方案。
ArcGIS Server 管理的基于令牌的身份验证
虽然并不推荐,但您仍然可以使用 ArcGIS Server 管理的基于令牌的身份验证对 WMS 服务进行安全性设置,方法是对此服务的父地图服务或父影像服务使用此类型的身份验证。要对通过令牌保护的 WMS 服务进行原始请求,可以从令牌服务获得有效令牌,然后将令牌字符串作为附加参数追加到您所发送的请求中。换言之,对设置了令牌安全性的 WMS 服务的请求必须使用以下格式:
http://<WMS_service_url>?<标准 WMS 参数>&token=<valid_tokenString>
大多数第三方桌面 WMS 客户端将无法连接到以这种方式保护的 WMS 服务,但是可以将这种方法用于通过 ArcGIS API for JavaScript 构建的 WMS 客户端。
使用 WMS 服务
要连接到某一 WMS 服务,您需要获知此服务的 URL。发布到 ArcGIS Server 的 WMS 服务具有以下 URL 格式:
http://gisserver.domain.com:6080/arcgis/services/folder/service/service type(可以是 MapServer 或 ImageServer)/WMSServer?
请记住,WMS 功能既适用于地图服务也适用于影像服务。这就是服务类型具有两个选项的原因。
例如,如果文件夹 Japan 中的地图服务 Tokyo 在 gisserver(端口号为 6080)上运行,则 WMS 服务的 URL 如下所示:
http://gisserver:6080/arcgis/services/Japan/Tokyo/MapServer/WMSServer?
如果影像服务 IdahoImages 在计算机 myServer 上运行,且端口号为 6080,则 WMS 服务的 URL 如下所示:
http://gisserver:6080/arcgis/services/IdahoImages/ImageServer/WMSServer?
常用 WMS 客户端
web 浏览器是 WMS 服务最简单的客户端。可通过 HTTP 发出 WMS 请求,然后会通过浏览器返回响应或者异常。WMS 服务可支持以下几种操作:GetCapabilities、GetMap、GetFeatureInfo、GetStyles 和 GetLegendGraphic。通过附加 URL 参数,客户端可执行这些操作以从 WMS 服务中获取元数据、地图、要素信息、符号系统和图例符号。OGC WMS 规范中具有对这些操作和参数的详细介绍。
查看 WMS 服务的图例信息
可以对 WMS 服务进行配置以返回有关服务中各图层的符号系统的信息。客户端可以使用这些信息构造图例。默认情况下,发布到 ArcGIS Server 的 WMS 服务被配置为可返回图例信息。您可以通过使用地图文档中的图层名称属性禁用此功能。有关详细信息,请参阅 WMS 服务的可用属性。
提示:
您可以在 ArcMap 中显示 WMS 图层的图例信息,方法是:右键单击内容列表中的图层,然后选择将 WMS 图例添加到地图中。