目录
一、WMS规范简介
在WebGIS中,有多种方法在网页浏览器中显示地图:
- 瓦片地图 —— 事先将地图切割成瓦片,需要时再发送给客户端,瓦片可以存储在服务器或者本地
- 矢量地图 —— 将具有空间信息和属性信息的数据(比如GeoJSON、KML等)发送给浏览器,然后在浏览器渲染,数据可以存储在服务器或者本地
- 矢量切片 —— 一种瓦片地图和矢量地图的中庸之道,结合了两者优势的一种显示地图的方式,后面再介绍。
- 动态绘制地图服务 —— 在服务器端根据请求的内容绘制一个地图图像(在服务器端绘制),然后返回给客户端。
本文就来介绍动态绘制地图相关的内容。
因为每次都是根据用户请求参数,随时绘制地图,图像反映数据的最新情况,且在服务器端绘制地图,因此该方式通常称为动态绘制地图服务。而切片地图方式只反映了生成地图切片时的数据状况。
动态绘制地图服务的缺点是在多用户并发请求时,服务器容易超负荷运行,即用户越多,响应越慢。
OGC(开发地理空间联盟)的WMS(Web Map Service)服务规范就是一种动态绘制地图服务的规范,许多WebGIS服务器实现了WMS规范,因此可以结合一些WebGIS服务器发布WMS服务,然后使用OpenLayers调用WMS服务在客户端呈现地图。目前比较流行的WebGIS服务器有GeoServer、ArcGIS Server等。
到目前为止,已发布了4个版本的WMS规范。这些版本是v1.0.0、v1.1.0、v1.1.1和v1.3.0(最新版本)。WMS规范的地址为:http://www.opengeospatial.org/standards/wms 。
WMS服务主要支持以下操作:
- 请求服务的元数据(GetCapabilities)
- 请求地图图像(GetMap)
- 请求关于地图要素的信息(GetFeatureInfo,可选)
- 请求图例(GetLegendGraphic,可选)
- 请求用户定义的样式(GetStyles,可选)
作为基本WMS服务,必须至少支持GetCapabilities和GetMap操作,如果作为可查询WMS,则需要支持可选的GetFeatureInfo操作。
对于样式化图层描述符WMS服务,还有两种可选的操作,一个是请求图例符号操作,即GetLegendGraphic;第二个是请求用户定义的样式操作,即GetStyles。
二、请求WMS服务的元数据
因为要使用到GeoServer,所以请先阅读这篇文章:使用GeoServer发布shapefile数据
GetCapabilities操作返回服务的元数据。根据该服务的元数据来确定该服务支持哪些其他操作。
查看GeoServer的管理页面的首页可以发现它实现了WMS规范:
接下来,比如我想访问自己本地计算机安装的GeoServer的WMS服务的元数据,就可以直接在浏览器地址栏输入:
http://localhost:8084/geoserver/wms?service=wms&version=1.3.0&request=GetCapabilities
其中:
- http://localhost:8084/geoserver/wms —— 是请求的路径
- service=wms —— 表示服务是WMS
- version=1.3.0 —— 表示WMS规范版本是1.3.0(最新版本)
- request=GetCapabilities —— 表示请求服务的元数据
上面的地址返回或打开一个XML格式的文件,内容如下(为了节省篇幅,删减了一些重复与不重要的内容):
This XML file does not appear to have any style informatio