第四章 使用WMS在服务器端绘制与查询地图
以下均掺杂个人理解
书目:Web GIS 原理与应用开发 —— 刘光 曾敬文 曾庆丰 著
WMS是OGS制定的一类地图服务规范
4.1 动态绘制地图服务
在网页浏览器中显示地图的方法
- 将服务器中事先绘制好的地图图像(地图切片)发送给浏览器
- 从服务器上返回一串代表空间图形与属性的文本,在浏览器端绘制
- 在服务器端根据请求的内容绘制一个地图图像,然后返回给客户端。
因为每次都是用户发送不同请求,服务器端根据请求绘制地图,反映数据的最新情况,所以称之为动态地图服务
。(而切片只能反映生成地图切片时的情况)
4.1.1 动态绘制地图的优点
- 实时反映数据
- 比起切片,更方便存储与维护
- 可以使用多样化的符号(相比浏览器绘制)
4.1.2 动态绘制地图的缺点
- 等待服务器绘制地图需要时间
- 多用户同时请求地图,动态地图服务容易超负荷运行
- 如果知道只有有限的用户访问,则可选择动态地图服务,从而省去生成切片的时间。
4.1.3 动态绘制地图的相关服务器软件
开源:GeoServer、QGIS Server、MapServer、deegree
商业:ArcGIS Server、SuperMap Server
4.2 WMS规范基础
为了保证Web服务的跨平台性,请求和响应的语法需要保持一致,可以参阅规范文档查看请求参数(文档第七部分)
文档地址:http://portal.opengeospatial....
(我们在日常二次开发中对请求稍作了解即可,我们的使用方法是调用封装好的方法)
WMS服务主要支持操作:
- 请求服务的元数据:GetCapabilities
- 请求地图图像:GetMap
- 请求关于地图要素的信息:GetFeatureInfo(可选)
- 请求图例符号操作:GetLegendGraphic(可选)
- 请求用户定义的样式:GetStyles(可选)
4.2.1 使用GetCapabilities操作请求服务元数据
书中提供了欧洲土壤数据中心WMS服务的元数据地址(我打开一直重定向):
http://eusoils.jrc.ec.europa....
?后表示参数,SERVICE=WMS
表示服务是WMS、REQUEST=GetCapabilities
表示请求的是GetCapabilities操作。
请求得到一个XML
该服务的名称、关键词以及联系信息
该服务支持的操作以及包含的图层
该服务支持的操作
GetMap请求所支持的返回图片格式
该服务所包含的所有图层数据
4.2.2 使用GetMap操作请求地图
依旧是书中提供的地址
http://eusoils.jrc.ec.europa....:3035&BBOX=1988372,1400000,6411627,5400000&FORMAT=image/png&WIDTH=1200&HEIGHT=900
SERVICE=WMS
表示使用WMS服务
VERSION=1.3.0
表示使用1.3.0版本
REQUEST=GetMap
表示执行GetMap操作
LAYER=OCTOP80
表示请求图层为OCTOP80
STYLES=
表示使用默认样式绘制
CRS=EPSG:3035
表示使用坐标参照系统为EPSG:3035
BBOX=1988372,1400000,6411627,5400000
表示绘制的地图范围(minX,minY,maxX,maxY)
FORMAT=image/png
表示返回的地图图片格式为PNG
WIDTH=1200
、HEIGHT=900
表示返回图像的宽高(px)
4.2.3 使用GetFeatureInfo操作请求地图要素信息
!GetFeatureInfo操作仅仅支持可查属性(queryable)等于1的图层
参数表
请求参数 | 是否必需 | 描述 |
---|---|---|
VERSION=version | 是 | 请求版本号 |
REQUEST=GetFeatureInfo | 是 | 请求名称 |
是 | GetMap请求参数的部分副本,决定在哪个地图图片上查询 | |
QUERY_LAYERS=layer_list | 是 | 查询的图层列表,图层之间用逗号隔开 |
INFO_FORMAT=output_format | 是 | 要素信息的返回格式 |
FEATURE_COUNT=number | 否 | 要返回信息的要素的数量(默认为1) |
I=pixel_column | 是 | 以像素表示的要素X坐标 |
J=pixel_row | 是 | 以像素表示的要素Y坐标 |
EXCEPTIONS=exception_format | 否 | WMS的异常错误报告格式 |
4.3 WMS的样式与符号
一个样式化图层描述符描述了符号的大小、颜色和标记。
规范化文档:https://www.ogc.org/standards...
样式可由服务发布者或者用户设计,通过DescribeLayer操作实现
使用途径:
- 将其放置在Web服务器中,然后在GetMap请求中将STYLE参数指向文件的URL
- 在GetMap请求中可选SLD_BODY参数中直接设置对应的XML文件(将使URL非常长且需要大量转义)