WMS 按图层、样式和范围返回地理配准地图图像

说明能力文档、GetMap 参数和地图图像响应怎样支持跨服务叠加,并区分图像服务与要素访问。

WMS 按图层、样式和范围返回地理配准地图图像

Web Map Service(WMS)让客户端通过 HTTP 请求地图图像。服务端选择数据、执行样式和渲染,客户端收到 PNG、JPEG 等结果并按请求范围放到地图上。它解决的是“把地图画出来并交换”,不是传输完整要素供编辑。

理解这一边界能避免把截图式地图当作权威矢量数据,也能解释为什么 WMS 适合跨机构叠加,却不适合高频要素查询或离线分析。

能力文档描述服务可以提供什么

客户端先通过 GetCapabilities 获取服务版本、操作端点、输出格式、异常格式和图层树。每个图层可声明名称、标题、摘要、可用 CRS、地理范围、样式和维度。

用于请求的机器名称与展示标题不同。只根据标题拼接请求容易遇到重名;父图层可能只是组织节点,并不一定可直接请求。客户端应解析继承关系,而不是只抓取扁平图层列表。

能力文档会随服务配置变化,应缓存但设置刷新策略。若长期固定旧文档,新增样式和范围不会出现;每次操作都重新下载又增加延迟和服务压力。

GetMap 把表达条件组成一次渲染请求

核心参数包括图层、样式、CRS、边界框、图像宽高和格式。服务把边界框映射到指定像素尺寸,按列出的图层顺序渲染。透明背景使多个结果能够叠加,但 JPEG 等格式不支持透明。

像素宽高与地理范围共同决定显示分辨率。请求极大图片会消耗内存和渲染时间;把低分辨率结果放大只会放大像素,不会恢复细节。服务可设置最大尺寸并返回明确异常。

图层顺序影响遮挡,样式决定符号。客户端若省略样式,服务使用默认样式;默认不是跨机构统一语义。同名道路在不同服务中可能采用不同分类和颜色。

CRS 与轴顺序是常见互操作风险

WMS 1.3.0 使用 CRS 参数,并按坐标参考系定义的轴顺序解释边界框。某些地理 CRS 的规范轴顺序是纬度、经度,而历史实现和 WMS 1.1.1 常按经度、纬度处理。

因此版本、CRS 标识和轴顺序必须整体处理。看到空图时,不应立即判断数据不存在,应检查边界框顺序、单位、范围与图层支持的 CRS。

服务端重投影会产生计算和近似误差。对全球或跨极区范围,单一投影可能严重变形。客户端应选择与用途相符的 CRS,并避免把渲染结果用于精确测量。

GetFeatureInfo 只提供图上位置的辅助查询

可查询图层可以响应 GetFeatureInfo,客户端在已知 GetMap 上下文和像素位置下询问附近信息。返回可以是文本、HTML 或结构化格式,具体内容由服务配置决定。

它不是通用要素检索接口。命中受符号、容差、图层顺序和服务规则影响,返回属性也可能经过裁剪。需要稳定筛选、分页和几何访问时,应使用 OGC API Features 等要素接口。

用户点击未命中不证明该位置没有真实对象,可能是该比例尺未绘制、透明像素、查询图层未启用或容差不同。界面应避免把辅助查询包装成法律边界确认。

时间、高程和其他维度扩展地图切片

图层可声明时间或高程维度及默认值。客户端应读取允许范围和步长,显式发送目标值。依赖服务默认时间会导致同一链接随时间返回不同地图,难以复现。

动画连续请求许多时间片会给服务造成压力,适合使用缓存、限速和预取。缺失时间片应返回可解释状态,不能用最近影像静默替代而不标识。

多维请求仍返回二维地图图像。像元颜色是渲染后的表达,不等同于原始数值。需要定量栅格时应使用覆盖或数据下载服务。

缓存需要把所有表达参数纳入键

相同 URL 的 GetMap 响应适合 HTTP 和代理缓存,但缓存键必须包含图层、样式、版本、CRS、范围、尺寸、格式和维度。遗漏样式或时间会把错误地图返回给其他请求。

任意边界框难以获得高缓存命中率。瓦片服务通过固定矩阵提高复用,适合交互底图;WMS 更灵活,适合临时范围和动态制图。二者可以并存,不能只按“都是图片”互换。

数据或样式更新后要有缓存失效机制。若 URL 不含版本,可使用响应头和服务配置刷新;关键成果图可将版本写入样式名或请求参数以支持重现。

安全与运维仍是服务契约的一部分

公开 WMS 可能被超大尺寸、复杂样式或高频范围请求耗尽资源。应限制尺寸、并发、执行时间和可用格式,对受限图层在能力文档和实际请求上保持一致授权。

监控应区分能力请求、地图渲染、查询、缓存命中和异常类型。仅看 HTTP 200 会遗漏返回空白图、服务异常 XML 或渲染超时占位图。

OGC API Maps 采用更贴近 Web 资源的接口风格,但不意味着已有 WMS 必须立即替换。迁移时应核对图层、样式、CRS、尺寸和错误语义,而不是只改 URL。WMS 的价值在成熟的地图表达互操作;正确使用它,需要始终记住输出是地图,不是数据本体。

资料依据