目录
一、WMS规范简介
二、请求WMS服务的元数据
二、请求WMS服务的地图图像
四、请求WMS服务的地图要素信息
在WebGIS中,有多种方法在网页浏览器中显示地图:
本文就来介绍动态绘制地图相关的内容。
因为每次都是根据用户请求参数,随时绘制地图,图像反映数据的最新情况,且在服务器端绘制地图,因此该方式通常称为动态绘制地图服务。而切片地图方式只反映了生成地图切片时的数据状况。
动态绘制地图服务的缺点是在多用户并发请求时,服务器容易超负荷运行,即用户越多,响应越慢。
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服务主要支持以下操作:
作为基本WMS服务,必须至少支持GetCapabilities和GetMap操作,如果作为可查询WMS,则需要支持可选的GetFeatureInfo操作。
对于样式化图层描述符WMS服务,还有两种可选的操作,一个是请求图例符号操作,即GetLegendGraphic;第二个是请求用户定义的样式操作,即GetStyles。
因为要使用到GeoServer,所以请先阅读这篇文章:使用GeoServer发布shapefile数据
GetCapabilities操作返回服务的元数据。根据该服务的元数据来确定该服务支持哪些其他操作。
查看GeoServer的管理页面的首页可以发现它实现了WMS规范:
接下来,比如我想访问自己本地计算机安装的GeoServer的WMS服务的元数据,就可以直接在浏览器地址栏输入:
http://localhost:8084/geoserver/wms?service=wms&version=1.3.0&request=GetCapabilities
其中:
上面的地址返回或打开一个XML格式的文件,内容如下(为了节省篇幅,删减了一些重复与不重要的内容):
This XML file does not appear to have any style information associated with it. The document tree is shown below.
WMS
GeoServer Web Map Service
A compliant implementation of WMS plus most of the SLD extension (dynamic styling). Can also generate PDF, SVG, KML, GeoRSS
WFS
WMS
GEOSERVER
Claudius Ptolomaeus
The Ancient Geographers
Chief Geographer
Work
Alexandria
Egypt
[email protected]
NONE
NONE
text/xml
image/png
application/atom+xml
application/json;type=utfgrid
application/pdf
application/rss+xml
application/vnd.google-earth.kml+xml
application/vnd.google-earth.kml+xml;mode=networklink
application/vnd.google-earth.kmz
image/geotiff
image/geotiff8
image/gif
image/jpeg
image/png; mode=8bit
image/svg+xml
image/tiff
image/tiff8
image/vnd.jpeg-png
text/html; subtype=openlayers
text/html; subtype=openlayers2
text/html; subtype=openlayers3
text/plain
application/vnd.ogc.gml
text/xml
application/vnd.ogc.gml/3.1.1
text/xml; subtype=gml/3.1.1
text/html
application/json
XML
INIMAGE
BLANK
JSON
GeoServer Web Map Service
A compliant implementation of WMS plus most of the SLD extension (dynamic styling). Can also generate PDF, SVG, KML, GeoRSS
EPSG:3857
EPSG:4326
CRS:84
-180.0
180.0
-90.0
90.0
nyc:nyc_roads
nyc_roads
features
nyc_roads
EPSG:2908
CRS:84
-74.00083696924521
-73.97235840001699
40.73668796412016
40.76948947044791
其中:
1、
2、
根据服务器的元数据,便可构造GetMap操作获取地图。
例如要得到GeoServer中的nyc_roads图层的地图图像,就可以在浏览器地址栏中输入:
http://localhost:8084/geoserver/wms?SERVICE=wms&VERSION=1.3.0&REQUEST=GetMap&LAYERS=nyc:nyc_roads&SRS=EPSG:2908&BBOX=984018.1663741902,207673.09513056703,991906.4970533887,219622.53973435296&FORMAT=image/png&WIDTH=600&HEIGHT=800
该请求返回的结果如下图所示:
在上述URL中:
当从WMS请求地图时,有一些是必需的参数,必须提供,此外还有一些可选参数,如果WMS服务的发布者实现了,也可使用。
在上述URL中所有的参数都是必需的,必须包含。
可通过WMS规范文档(前面已给出下载地址)的7.3.2小节来查看哪些是GetMap请求必需或可选参数,如下所示:
GetFeatureInfo操作是一个可选的操作。GetFeatureInfo操作仅仅支持可查属性(queryable)等于“1” 的图层,对于其他图层客户端不能发送GetFeatureInfo操作请求。
当WMS服务不支持GetFeatureInfo操作请求时,会返回服务异常信息。
GetFeature操作的主要请求参数如下表所示:
即:
例如,要查找GeoServer的nyc_roads图层的要素信息(以像素点(400, 300)为中心点进行查询)
http://localhost:8084/geoserver/wms?SERVICE=wms&VERSION=1.3.0&REQUEST=GetFeatureInfo&LAYERS=nyc:nyc_roads&CRS=EPSG:2908&BBOX=984018.1663741902,207673.09513056703,991906.4970533887,219622.53973435296&WIDTH=600&HEIGHT=800&QUERY_LAYERS=nyc:nyc_roads&INFO_FORMAT=text/plain&I=400&J=300
返回的结果如下图所示: