WMS 服务
开放地理空间联盟 (OGC) 的网络地图服务 (WMS) 规范是在 Web 上提供和使用动态地图时需遵守的国际规范。您可使用 ArcGIS Server 创建 WMS 服务。具体操作可通过在地图服务或影像服务中启用 WMS 服务能力来实现。
如果要使用开放并经认可的方式在不同的平台和客户端之间通过网络提供地图,则 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 服务。
WMS 服务所返回的地图只是图像(除 SVG 之外)。它们不包含实际数据。要通过 OGC 规范将数据显示为矢量要素,请改为发布 WFS 服务。要将数据显示为栅格图层,请发布 WCS 服务。您可使用 ArcGIS Server 发布 WFS 服务和 WCS 服务。
您可通过开放地理空间联盟网站了解有关 WMS 服务的详细信息。ESRI 还提供了互操作和标准网页,详细介绍了在 ArcGIS 中对 OGC 服务的支持。
在 ArcGIS Server 中发布 WMS 服务
使用 ArcGIS Server 发布 WMS 服务的方法有以下两种:
- 发布启用 WMS 服务能力的地图服务。要发布地图服务,首先需要创建地图文档。
- 发布启用 WMS 服务能力的影像服务。要发布影像服务,需要具有引用某一栅格数据集或镶嵌数据集的栅格数据集、镶嵌数据集或图层文件。
您可使用 ArcGIS Server 管理器或 ArcCatalog 发布此服务。如果需要此步骤的相关帮助,请参阅关于将 GIS 资源发布到服务器。
发布地图服务或影像服务时,应启用 WMS 服务能力,方法为选中“服务能力”列表中的相应复选框。
注释:
- 地图中图层的数量将直接影响最初创建 WMS 服务或在停止此服务之后重新启动此服务所需的时间。您可以通过移除或合并服务中的图层来缩短启动时间。
- WMS 服务将利用地图缓存(如果可用)。仅当请求服务的原始投影、图层顺序和图层可见性时才会使用地图缓存。缓存切片将被重新采样以适合客户端所请求的比例,这可能需要一些处理时间并会降低图像质量。如果 WMS 服务具有很多图层或复杂的符号系统,使用缓存的最大好处是无需花费大量时间进行动态绘制。如果只具有少量图层和简单的符号系统,则不使用缓存也可实现较高的效率。
- 如果用户导航到未缓存的区域,通过按需缓存的地图服务查看 WMS 服务时,将会在缓存中创建切片。
- 发布服务后,您可以在“服务属性”对话框的“服务能力”选项卡中对 WMS 服务的属性进行进一步设置。
有关 WMS 服务创建过程的详细步骤信息,请参阅教程:发布 WMS 服务。
配置 WMS 服务属性
WMS 服务的属性在其服务能力文件中显示,以便使用此服务的用户均可对服务发布程序有更好的了解。如果使用系统生成的服务能力文件发布 WMS 服务(默认),则建议填充除 Name、Title 和 OnlineResource 之外的 WMS 服务属性。已使用“WMS”填充了 Name 服务属性,使用地图服务或影像服务的名称填充了 Title 服务属性,使用 WMS 服务的 URL 填充了 OnlineResource 服务属性。大多数情况下,不应该更改这三个属性。
要填充或修改 WMS 服务属性,请执行以下操作:
- 停止源地图服务或源影像服务。
- 打开服务属性,然后单击服务能力选项卡。
- 在服务能力列表中,查找 WMS。确保选中该复选框,然后单击字母 WMS(注意不要取消选中该复选框)。将会显示一些属性。
- 选择在下面输入服务属性。这表示您的服务将使用系统生成的服务能力文件。
- 对服务属性进行适当修改。
- 保存并重新启动父地图服务或父影像服务。
WMS 客户端必须具有 OnlineResource 字段才能与 WMS 服务准确地进行通信。通常,该字段的值是一个 URL,应显示在服务能力选项卡的 Web 访问框中。
配置 SLD 路径或 URL
您可使用 SLD 为每个 WMS 图层发布多个样式。如果要将 SLD 文件绑定到当前 WMS 服务,需要将 SLD 路径或 URL 属性设置为 URL、UNC 路径或 SLD XML 文件的物理位置。了解有关使用 SLD 的详细信息。
UNC 路径和物理位置必须可供 SOC 帐户进行访问,以便 ArcGIS Server 正确读取 SLD XML 文件。
配置 ListSupportedCRS 参数
ListSupportedCRS 参数可用于将附加空间参考系统(如 EPSG:4267)添加到 WMS 服务。默认情况下,WMS 服务只列出两种空间参考系统;EPSG:4326(对于 WMS 1.3.0 则为 CSR:84)和启用 WMS 的地图服务的空间参考。使用 ListSupportedCRS 参数时,可通过指定附加空间参考来为 WMS 客户端提供更多重投影选项。
在 ArcCatalog 或 ArcGIS Server 管理器中配置 WMS 服务时,ListSupportedCRS 参数不会以服务属性形式列出。要将 ListSupportedCRS 参数添加到 WMS 服务,必须为启用了 WMS 的地图服务编辑服务配置文件 (.cfg)。
编辑配置文件:
- 停止 ArcGIS 服务器对象管理器 (SOM) 进程
- 在文本编辑器中打开地图服务的服务配置 (.cfg) 文件
- 找到特定于 WMS 的部分
- 在 <Properties> 元素中添加 ListSupportedCRS 参数:
... <Extension> <TypeName>WMSServer</TypeName> <Enabled>true</Enabled> <Properties> <!-- other properties and metadata items --> <CustomGetCapabilities>false</CustomGetCapabilities> <ListSupportedCRS>EPSG:4267</ListSupportedCRS> </Properties> <Info> <WebEnabled>true</WebEnabled> <WebCapabilities></WebCapabilities> </Info> </Extension> ...
- 保存编辑内容,并关闭服务配置 (.cfg) 文件
- 重新启动 ArcGIS 服务器对象管理器 (SOM) 进程
要在 ListSupportedCRS 参数中列出多个空间参考系统,请用逗号 (,) 分隔各空间参考系统。例如:
<ListSupportedCRS>EPSG:4267,EPSG:4269,EPSG:102113</ListSupportedCRS>
配置 ListSupportedCRS 参数时,必须指定用冒号 (:) 分隔的 EPSG 命名空间(如 EPSG)和 EPSG ID(如 4267),否则,空间参考将被服务器忽略。
服务属性中的特殊字符
任何服务属性都不能包含以下字符:&、<、>、" 和 '。如果您需要使用其中的某个字符,则必须通过下表中相应的转义字符进行替换:
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
表示图层名称
修改服务属性时,可以选中“使用地图文档中的图层名称”复选框。选中此复选框后,将使用地图文档的内容列表中所使用的字符串来表示图层名称。默认未选中复选框意味着将使用从零开始的整数表示图层,从而确定这些图层在内容列表中从上到下的位置。
要使用地图文档中的图层名称,地图中的所有图层名称均必须唯一。图层名称不能包含 &、<、>、" 或 ' 中的任意字符。
保护 WMS 服务
ArcGIS Server WMS 服务的安全性通过控制其父地图服务或父影像服务的安全性进行管理。如果拒绝某个特定角色(例如规划人员)访问地图,则无论尝试通过 SOAP、表述性状态转移 (REST) 还是 OGC(例如 WMS)接口使用地图,规划人员都将无法访问该地图。ArcGIS Server 支持多种不同的身份验证方案,包括基于 HTTP 的身份验证(基本身份验证和摘要式身份验证)、集成 Windows 身份验证和 ArcGIS Server 管理的基于令牌的身份验证。
HTTP 身份验证和集成 Windows 身份验证
希望通过 WMS 接口访问的服务应使用 HTTP 基本身份验证、HTTP 摘要式身份验证或集成 Windows 身份验证进行保护。大多数 WMS 客户端(非 ESRI 客户端和 ESRI 客户端)都能够识别并使用这些广泛应用的标准身份验证方案。
ArcGIS Server 管理的基于令牌的身份验证
还可以使用 ArcGIS Server 管理的基于令牌的身份验证对 WMS 服务进行保护(不建议使用此身份验证方式),方法为对此服务的父地图服务或父影像服务使用此类型的身份验证。要通过令牌保护对 WMS 服务的原始请求,可以从令牌服务获得有效令牌,然后将令牌字符串作为附加参数追加到您所发送出的请求。换言之,对由令牌保护的 WMS 服务的请求必须使用以下格式:http://<WMS 服务 url>?<标准 WMS 参数>&token=<有效令牌字符串>。大多数第三方桌面 WMS 客户端将无法连接到以这种方式保护的 WMS 服务,但是可以将这种方法用于通过 ArcGIS API for JavaScript、ArcGIS API for Flex 和 ArcGIS API for Silverlight 构建的 WMS 客户端。
使用 WMS 服务
要连接到某一 WMS 服务,您需要获知此服务的 URL。使用 ArcGIS Server 发布的 WMS 服务具有以下 URL 格式:
http://<Web 服务器计算机名称>/<ArcGIS Server 实例名称>/services/<文件夹名称(如果适用)>/<服务名称>/<服务类型(可以是 MapServer 或 ImageServer)>/WMSServer?
请记住,WMS 服务能力既可用于地图服务也可用于影像服务。这就是服务类型具有两个选项的原因。
例如,文件夹 Japan 中的地图服务 Tokyo 在计算机 myServer 上运行,并使用 arcgis 作为默认实例,则 WMS 服务的 URL 如下所示:
http://myServer/arcgis/services/Japan/Tokyo/MapServer/WMSServer?
如果影像服务 IdahoImages 在计算机 myServer 上运行,且实例名称为 PublicLands,则 WMS 服务的 URL 如下所示:
http://myServer/PublicLands/services/IdahoImages/ImageServer/WMSServer?
常用 WMS 客户端
Web 浏览器是 WMS 服务最简单的客户端。可以通过 HTTP 发出 WMS 请求,然后会通过浏览器返回响应或者异常。WMS 服务可支持以下几种操作:GetCapabilities、GetMap、GetFeatureInfo、GetStyles 和 GetLegendGraphic。通过 URL 参数,客户端可执行这些操作从 WMS 服务中获取元数据、地图、要素信息、符号系统和图例符号。OGC WMS 规范中具有对这些操作和参数的详细介绍。
ESRI WMS 客户端包括 ArcGIS Desktop(ArcCatalog 和 ArcMap)、ArcGIS Explorer、面向 .NET 的 ArcGIS Server Web 应用程序开发框架 (ADF)、面向 Java 的 ArcGIS Server Web ADF 和 ESRI ArcGIS Server Geoportal 地图查看器。
查看 WMS 服务的图例信息
可以对 WMS 服务进行配置以返回有关服务中各图层的符号系统的信息。客户端可以使用这些信息构造图例。默认情况下,使用 ArcGIS Server 发布的 WMS 服务配置为能够返回图例信息。您可通过 WMS 服务的服务能力文件更改此项配置。
ArcMap 以及使用 ArcGIS Server 管理器构建的 Web 制图应用程序均可显示 WMS 图层的图例信息。
- 在 ArcMap 的内容列表中,右键单击图层,然后单击“将 WMS 图例添加至地图”。图例信息将显示在地图上。
- 在 Web 制图应用程序中,您可通过在内容列表中展开图层来查看各个图层的图例样本。