开放地理空间联盟。 (OGC) 的 Web 地图服务 (WMS) 规范是一种在 web 上提供和使用动态地图时需遵守的国际规范。 发布地图或影像服务时,您可以通过启用 WMS 功能向 ArcGIS Server 发布 WMS 服务。
如果要在不同的平台和客户端之间以一种开放并经认可的方式提供 Web 地图,则 WMS 服务非常有用。 任何原生支持 WMS 规范的客户端均可查看和使用您的服务。 到目前为止,已发布了四个版本的 WMS 规范:1.0.0、1.1.0、1.1.1 和1.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 服务具有很多图层或复杂的符号系统,使用缓存的最大好处是无需花费大量时间进行动态绘制。 如果图层数量较少且符号系统不太复杂,则不使用缓存可能会提高性能。
注:
必须在地图服务中禁用允许每次请求修改图层顺序和符号选项,以便 GetMap 操作请求使用地图服务缓存。 如果已启用该选项,则对 GetMap 操作的请求将访问服务层的数据源。
如果影像服务是通过多个栅格函数模板配置的,则这些栅格函数模板将可通过 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 Pro 中所允许的 WMS 服务操作。 例如,如果要求限制对个别要素信息的访问,则请取消选中 GetFeatureInfo 选项。 对该要素信息的任何访问请求都会被拒绝。
默认情况下,所有操作均处于启用状态。 可用的操作如下:
- GetCapabilities - 将功能信息返回到客户端作为对 GetCapabilities 请求的响应。
- GetFeatureInfo - 将要素返回到客户端作为对 GetFeatureInfo 请求的响应。
- GetLegendGraphic - 将图例影像返回到客户端作为对 GetLegendGraphic 请求的响应。
- GetMap - 将地图影像返回到客户端作为对 GetMap 请求的响应。
- GetSchemaExtension - 将方案返回到客户端作为对 GetSchemaExtension 请求的响应。
- GetStyles - 将可用的样式信息返回到客户端作为对 GetStyles 请求的响应。
注:
要完全符合 OGC WMS,请启用(至少)GetCapabilities 和 GetMap 操作。
使用外部功能文件设置 WMS 属性
定义元数据的另一种方法是使用一个外部功能文件。 这样即可针对您的要素类型添加除了默认值以外的其他投影。 默认值包括图层或要素类的坐标系以及 WGS84 (EPSG 4326)。
WMS 服务的安全性设置
ArcGIS Server WMS 服务的安全性是通过控制 WMS 服务的父地图或影像服务的安全性来管理的。 如果拒绝某个特定角色(例如规划人员)访问地图,则无论尝试通过 SOAP、表述性状态转移 (REST) 还是 OGC(例如 WMS)接口使用地图时,规划人员都将无法访问该地图。 ArcGIS Server 支持多种不同的身份验证方案,包括基于 HTTP 的身份验证(基本身份验证和摘要式身份验证)、和 ArcGIS Server 管理的基于令牌的身份验证。
HTTP 身份验证
希望通过 WMS 接口访问的服务应使用 HTTP 基本身份验证或 HTTP 摘要式身份验证进行安全性设置。 大多数 WMS 客户端(Esri 和非 Esri 客户端)都能够识别并使用这些被广泛应用的标准身份验证方案。
ArcGIS Server 管理的基于令牌的身份验证
虽然并不推荐,但您仍然可以使用 ArcGIS Server 管理的基于令牌的身份验证对 WMS 服务进行安全性设置,方法是对此服务的父地图服务或父影像服务使用此类型的身份验证。 要对通过令牌保护的 WMS 服务进行原始请求,可以从令牌服务获得有效令牌,然后将令牌字符串作为附加参数追加到您所发送的请求中。 换言之,对设置了令牌安全性的 WMS 服务的请求必须使用以下格式:
https://<WMS_service_url>?<standard WMS parameters>&token=<valid_tokenString>
大多数第三方桌面 WMS 客户端将无法连接到以这种方式保护的 WMS 服务,但是可以将这种方法用于通过 ArcGIS Maps SDK for JavaScript 构建的 WMS 客户端。
使用 WMS 服务
要连接到某一 WMS 服务,您需要获知此服务的 URL。 发布到 ArcGIS Server 的 WMS 服务具有以下 URL 格式:
https://gisserver.domain.com:6443/arcgis/services/folder/service/service type(can be MapServer or ImageServer)/WMSServer?
请记住,WMS 功能既适用于地图服务也适用于影像服务。 这就是服务类型具有两个选项的原因。
例如,如果文件夹 Japan 中的地图服务 Tokyo 在 gisServer(端口号为 6443)上运行,则 WMS 服务的 URL 如下所示:
https://gisserver:6443/arcgis/services/Japan/Tokyo/MapServer/WMSServer?
如果影像服务 IdahoImages 在计算机 gisServer 上运行,且端口号为 6443,则 WMS 服务的 URL 如下所示:
https://gisserver:6443/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 服务的可用属性。