Web 制图服务 (WMS) 可在 ArcMap(或者 ArcScene 和 ArcGlobe)中用作地图图层。接下来将介绍一些使用 WMS 服务图层的常见任务。
内容列表
添加到 ArcMap 后,WMS 服务图层条目将在内容列表中呈折叠状态以节省空间,但您也可以展开此条目及其条目组,以便查看其中包含的各个图层。
一个 WMS 服务图层由三个条目组成,它们在内容列表中按等级排列。最上方显示的是 WMS 服务的名称,该级别包含所有 WMS 地图图层。下一级是 WMS 图层组,它的唯一功能就是将各个 WMS 子图层编排到相关组中。至少应该存在一个 WMS 图层组,并且数量不限(甚至可以在组中嵌套组)。WMS 图层组中不会包含任何地图图层,实际上存放地图图层的是第三组 WMS 子图层。
请注意将各子图层连接在一起的线。此线表示禁止向该服务图层(图层组)中插入图层或将该服务图层分解成各个作为构成部分的子图层。
某些 WMS 服务不包含服务中图层所使用符号的相关图例信息。如果不存在图例信息,则在内容列表中不会显示这些图层的符号系统。在内容列表中列出这些图层时,旁边不会显示展开控件。
如果 WMS 服务中包含图例信息,则在内容列表中单击某子图层旁边的展开控件便可查看该 WMS 子图层的符号系统。默认情况下,WMS 服务中图层的图例均将隐藏,因为访问 WMS 服务中各图层的图例需要向服务器单独发送请求。每访问一个图层的图例,都需要向服务器额外发出一次请求。
各 WMS 图例的大小差异明显。有时,服务器指定的图例过大无法在 ArcMap 内容列表中显示。通常,某图层的图例包含多个符号时便会出现此现象,例如可显示不同类型道路的符号的交通图层。对于 WMS 服务,图层的图例将以一幅含有所有符号的图像形式在 Internet 上传输。虽然 ArcMap 支持内容列表中的图例条目包含多个符号,但 ArcMap 仍倾向于在这些条目中包含多幅图像(一个符号一幅图像)。此外,ArcMap 对要在内容列表中显示的图像的大小、高度和宽度(以像素为单位)也设定了限制。如果 WMS 服务中图层接收到的图像超过此限制,则不会显示此图层的任何图例。因此列于内容列表中的这些图层不会显示符号和展开控件。如果存在 WMS 图例,但无法在内容列表中显示,则可在 WMS 子图层图层属性对话框的样式选项卡上查看图例。
获取有关 WMS 服务图层的信息
服务图层属性的源选项卡可显示多种信息,如地图范围、数据(服务)类型、URL、服务名称以及服务的默认坐标系。
您可以从服务子图层属性的源选项卡中获得有关各 WMS 子图层的信息。这包括子图层的功能(图层是否支持识别)、图例对于子图层是否可用、默认坐标系以及针对此特定子图层的服务器所支持的坐标系列表。
图层选项卡可显示 WMS 服务的所有组成部分。WMS 服务器所提供的有关各 WMS 图层的信息将显示在对话框左下角的框中。
打开地图时,如果由于任何原因服务器连接被中断,可以使用源选项卡上的设置数据源按钮来修复地图服务图层。您可以判断图层是否由于以下几个原因而需要修复:不进行绘图、内容列表中的复选框不可用、图层的复选框旁边有红色的惊叹号。
您也可以使用此按钮为此图层指定其他 WMS 服务。您不能选择其他服务类型设置数据源。例如,您不能使用“设置数据源”将 WMS 服务替换为 ArcGIS Server 地图服务。如果想这样做,需要手动从地图中移除 WMS 服务并手动添加 ArcGIS Server 地图服务。
即使其他需要修复的服务图层的数据源也来自相同服务器,该应用程序也只修复/替换当前服务图层的数据源。您需要单独更新这些图层。
更改 WMS 服务图层的显示
影响 Web 地图图层显示的操作有很多种。这包括更改要素符号系统、切换图层或标注的可见性、更改服务子图层的绘制顺序、设置服务的背景、应用透明度以及(如果服务器支持)基于时间参数显示服务。
根据创作 WMS 服务的方式,您还能更改 WMS 图层的渲染。WMS 图层的渲染取决于样式。样式由表示 WMS 服务中要素的符号和颜色组成。WMS 规范允许一个 WMS 图层包含任意数量的样式。您可以使用 WMS 服务子图层的图层属性对话框的样式选项卡选择可用样式。
如果 WMS 服务不支持使用样式,则预览窗口中将显示图例不可用。从下拉菜单中选择不同的样式时,文本框中的信息和预览窗口中的图像也会相应地发生变化。您可以根据需要预览任意数量的已列出样式。单击确定或应用才能将样式应用到图层。执行此操作后,ArcMap 会使用新样式向 WMS 服务器发送新的 GetMap 请求。
此外,该选项卡中的信息还包括指定样式、图例图像的高度和宽度(以像素为单位)、图例图像的 URL 以及图像格式。
您可以在内容列表中利用各个复选框切换服务和服务子图层的可见性。但无法切换 WMS 子图层标注的可见性。
将 WMS 服务添加到 ArcMap 时,该服务中的所有图层均可用于在地图上显示,即使添加的只是单个 WMS 子图层或者单个 WMS 图层组。虽然服务图层的内容列表条目中只会列出已添加的子图层,但您仍然可以通过服务图层的图层属性对话框访问整个子图层列表。如果添加的是整个 WMS 服务,服务图层的内容列表条目将根据服务创建者定义的绘制顺序列出所有图层和图层组。某些 WMS 服务中包含大量图层,使其看起来更像是数据的集合而不是单个的地图。
通过图层选项卡,您可以选择要在地图中显示的 WMS 服务子图层。如果需要从地图和内容列表中移除某些子图层,只需使用仅限以下列出的图层选项从此处的列表中将这些图层排除即可。此外,您还可以控制图层的可见性以及绘制顺序。
在此对话框的左侧,将列出服务的所有 WMS 图层组和 WMS 子图层。此列表中的图层的分组、命名和排序直接反映出此 WMS 服务创建者选择组织和显示其中所包含的数据的方式。这些项只能由服务的创建者更改。但通过单击选项卡右侧的仅限以下列出的图层选项,您可以配置希望内容列表条目中包含哪些 WMS 服务中的图层,可在地图中添加和移除特定 WMS 图层,也可控制图层的可见性和绘制顺序。当使用此选项时,内容列表中不会反映出服务发布者将图层所划分到的任何组。所选图层显示在未分组的无层次列表中,与其在列表右侧的显示方式相同。
要更改绘制顺序,请单击仅限以下列出的图层选项,然后将所需 WMS 子图层从地图中移至对话框的右侧。现在,您可以选中 WMS 子图层,然后使用箭头按钮在层级结构中上下移动这些子图层,以便更改绘制顺序。
步骤
- 在内容列表中右键单击 WMS 服务图层,然后单击属性。
- 单击图层选项卡。
- 单击仅限以下列出的图层。
- 单击要在内容列表中列出的一个或多个图层。您可以按住 Ctrl 或 Shift 来选择多个 WMS 子图层
- 单击右箭头以添加所选图层或双击右箭头以添加所有 WMS 子图层。您还可以单击带有复选标记的箭头只添加可见图层。
- 使用左箭头 可移除所选图层,也可以使用双左箭头 移除所有 WMS 子图层。
- 单击确定。
应用这些更改后,内容列表中将显示更新内容,并且新的绘制顺序也会体现在地图上。ArcMap 将向 WMS 服务器发送新请求以便说明新的绘制顺序。
您可以使用高级选项卡中的对应选项来更改服务图层的背景色、将某特定颜色设置为透明、对服务图层应用透明度级别或更改从服务器接收的图像类型。
许多 Web 地图服务都支持多种图像格式。如果 WMS 服务器支持 PNG 格式,则默认情况下,ArcMap 将请求 PNG 格式的图像。PNG 属于通用格式,它不会降低图像质量;所以将其设置为默认格式。PNG 可返回支持透明度的高质量图像。但文件大小比其他格式的文件大得多,因此从服务器下载时速度较慢。JPEG 的下载速度通常要快许多,因为它的文件大小比 PNG 的小很多。但 JPEG 不支持透明度。JPEG 确实仅适合影像数据。例如,如果将基于影像的 WMS 图层用作底图,则 JPEG 是个不错的选择。此外,从图层图像格式下拉列表中选择 JPEG 还可提高性能。当然,WMS 服务器必须支持 JPEG,JPEG 才可用。如果要在其他图层上叠加 WMS 服务或者希望获得最高质量的图像,则应该使用 PNG(前提是 WMS 服务器支持此格式)。
要选择一种可用的图像格式,单击图层属性对话框中的高级选项卡,然后从图层图像格式下拉列表中选择一种格式。此列表只显示服务支持的格式。您无法选择服务不支持的格式。
显示时态数据可以帮助您浏览数据并查看数据随时间推移而呈现的模式或趋势。在 ArcMap、ArcGlobe 或 ArcScene 中,您可以启用时态数据,使其参与到时间中,并通过一个简单的时间滑块对其进行显示,该滑块可随时间的变化相应更改显示或图表中的数据。如果服务支持时间,则在图层属性对话框上将显示时间选项卡。有关显示时间的详细信息,请参阅使用时间滑块窗口。
指定自定义参数
发出 WMS 请求时,ArcMap(ArcGlobe 或 ArcScene)仅包括 WMS 服务器处理请求所需的那些参数。也许会出现您需要在发送至 WMS 服务器的请求中纳入附加参数的情况。例如,WMS 服务器可能会支持供应商特定参数(如 layerDefs)以设置 WMS 子图层上的定义表达式。您可以使用 WMS 服务图层的图层属性对话框的参数选项卡包括自定义参数。这些参数将会包括在发送至服务器的每个请求中,用以绘制地图或确定地图上的某一点。
要添加自定义参数
- 在内容表中右键单击 WMS 服务图层,然后单击属性。
- 单击参数选项卡。
- 单击 以添加行。
- 在“参数”列的单元格中指定参数名称。
- 在“值”列的单元格中指定参数值。
- 重复步骤 3 - 5 以添加其他参数。
- 单击确定。
要删除自定义参数
- 在内容表中右键单击 WMS 服务图层,然后单击属性。
- 单击参数选项卡。
- 选择包含要删除参数的行。
- 单击 删除行。
- 对每个要删除的参数重复步骤 3 - 4。
- 单击确定。
更改 WMS 服务图层属性
您可以更改服务图层的若干种属性,如更改服务图层的名称、更改描述以及设置可见性比例范围或者由服务器返回的图像格式。
要更改服务图层的名称,可以在内容列表中单击服务图层,然后输入新名称,也可以打开图层属性对话框的常规选项卡,然后在此输入新名称。如果服务提供了摘要,则描述文本框最初将用此摘要进行填充。您可以更改 WMS 服务图层的描述信息,但 WMS 服务中的图层组和 WMS 子图层的描述文本框为只读。
您可以为服务图层设置可见性比例范围,用以规定此服务图层中所含全部子图层仅当地图处于所指定比例范围内时才进行绘制。通过为服务图层设置比例范围,可以避免以不适合图层数据的地图比例向服务器发送图像请求。您可以在图层属性对话框的常规选项卡上设置比例范围。只允许在地图服务的服务级别设置比例范围。无法为服务子图层设置比例范围。
以下是在与各种地图比例下的 WMS 子图层进行交互时的注意事项:
- ArcMap 可能不会严格按照报告的比例绘制 WMS 子图层。这是因为 WMS 服务器和 ArcMap 之间的分辨率存在差异。您可能需要调整地图比例,以便绘制子图层。
- WMS 子图层将表现得如同拥有比例可变选项一样,即位于某比例范围外便不会绘制,但是在子图层图层属性 对话框的常规选项卡上却未报告显示任何比例范围。由于根据 OGC WMS 规范,报告比例范围属于可选操作,因此某些 WMS 服务器会省略此信息。在这种情况下,子图层依然会在正确的比例范围内绘制,但 ArcMap 不会在常规选项卡上显示此比例范围。ArcMap 无法决定 WMS 图层的比例范围,它只能提供 WMS 服务提供给它的信息。
在不同的坐标系中显示 WMS 服务图层
使用 WMS 服务时,您可能希望遵从服务器支持的坐标系以便获得最佳结果。WMS 服务器可能只支持有限数量的坐标系,具体取决于服务创建者如何配置服务。另外,WMS 服务中的各 WMS 子图层可以潜在支持另外一组坐标系。与其他图层类似,如果 WMS 服务图层是添加到某个新的空数据框中的首个图层,则该数据框将采用此 WMS 服务的默认坐标系。
如果数据框使用的是 WMS 服务器不支持的坐标系,则 ArcMap 会从服务器中获取使用受支持坐标系(多数情况下为 GCS 1984)的图像,然后在内部投影此图像,以使该图像可在地图中显示。换言之,ArcMap 将动态投影此图像。根据数据框所使用的坐标系,WMS 图层的显示可能会存在一定程度的变形,并且当图层中包含文本时变形最为明显。只使用 WMS 服务器支持的坐标系的优势在于 WMS 服务器返回的图像无需经过后处理即可适合不支持的坐标系。
有关详细信息,请参阅如何选择 WMS 服务器支持的坐标系。
从 WMS 服务图层中查询要素
识别要素是可对 WMS 图层执行的唯一一项查询任务,然而接受到信息的格式会根据服务器的不同而有所不同。ArcMap 会在嵌入到识别窗口中的 Internet Explorer 控件内显示服务器返回的内容。“识别”查询的结果可能会以字段-值对、HTML 或者图像的形式呈现。
根据 OGC WMS 规范,不需要 WMS 服务来支持 <GetFeatureInfo>(查询 WMS 服务中的要素时 ArcMap 向服务器发送的请求)。如果服务支持识别操作,(如下图中的服务示例所示),则识别窗口中将列出服务的子图层。如果子图层未列出,则表示无法识别 WMS 服务中的要素。
由于从 WMS 服务图层中识别出的要素不存在主显示字段的概念,因此识别树中表示 WMS 服务图层中要素的结点将始终被视为“WMS 要素”。
从 WMS 服务图层中识别要素时,应使用 <可见图层> 选项识别 WMS 服务图层中任意可见图层内的要素,或者选择希望执行识别操作的特定图层。这是因为默认选项 <最顶部图层> 可能无法实现您预想的效果。使用该选项单击地图时,识别将只处理 WMS 服务绘制等级中最顶部图层中的要素。如果该位置的图层中不存在任何要素,则此选项不会像处理其他类型图层(如引用 shapefile 或地理数据库要素类)那样自动识别绘制等级相对较低的图层中的要素。相反,您得到的结果将为空。这就是 WMS 服务器的局限性。
另外,识别容差等级由 WMS 服务器而非 ArcMap 决定。识别 WMS 点要素时,您可能需要反复单击,直到距离要素足够近时才能实现目的。
打印和导出包含服务图层的地图
您可以打印和导出包含服务图层的地图。但需要注意的是,使用基于图像的服务本身存在限制性。有关详细信息,请参阅打印和导出包含服务图层的地图。
WMS 服务器错误的处理方式
有些情况下,将特定 WMS 服务添加到地图中时,可能会收到来自该服务的错误消息。与基于图像的任何在线 Web 制图服务一样,当 ArcMap 试图在地图中绘制 WMS 服务时,会向提供该服务的 WMS 服务器发送图像请求。如果服务器返回的是错误消息而非图像,则 ArcMap 将显示此错误消息。每次重新绘制地图时都会显示这些错误消息,它们可反映出 WMS 服务中存在的问题,但在 ArcMap 中通常无法修复。ArcMap 显示这些消息的目的是警告您 WMS 并未按照 ArcMap 预想的方式运行,另外一个目的是提供基本的诊断功能。但由于这些错误在不同的 WMS 服务器之间存在很大差异,因此对于 ArcMap 来说,精确地告知您问题所在非常困难。因此,错误消息在不同服务器中基本相同,从而使问题的原因并不明确。例如,错误可能由 WMS 服务中的某特定图层导致,也可能由特定图层组合中的某特定图层导致。
如果收到了错误消息,则只需在内容列表中取消选中 WMS 服务或者从地图中移除 WMS 服务即可避免再次弹出此错误消息。有时,您也许能够分辨出 WMS 服务中引起问题的图层。在这种情况下,尝试在内容列表中关闭该特定图层,即可避免弹出错误消息。
请注意,即使收到了来自 WMS 服务的错误消息,也不一定表示您根本无法在地图中绘制此服务。例如,如果试图以非常小的比例绘制某些 WMS 服务,则可能返回错误边界框的区域无效,但服务仍将绘制,并且在放大至较大比例时,并不会弹出此错误消息。在这种情况中,您应该使用 WMS 服务图层的图层属性对话框的常规选项卡为该图层指定比例范围,以使该图层在非常小的比例下不会绘制。这样做可以防止图层无法绘制时弹出错误消息。