2.8. WMS-地图 Web 服务¶
2.8.1. 概述¶
WMS(OpenGIS® Web Map Service)当前版本是 1.3.0。 WMS 标准定义了一些操作,这些操作允许用户在分布式的环境下通过 HTTP 对空间数据进行出图等操作。
2.8.2. WMS种类与操作¶
比起 WFS,WMS 的操作要简单的多:
1.GetCapabilities(获取服务中的要素类及支持的操作)
2.GetMap(获取地图)
3.GetFeatureInfo(根据地图上的像素点获取更详细的要素信息,类似 Identify 功能)
同样,这些操作并不是必须全部实现,而是实现全部或部分。根据所支持的操作不同,WMS 可以分为 2 类:
1.Basic WMS(就是最常被提及的 WMS,必须支持 GetCapabilities/GetMap 操作)
2.Queryable WFS(必须在 Basic WMS 基础上加上 GetFeatureInfo 操作)
关于服务涉及的基本元素,可以参考前面的章节:《服务涉及的基本元素》。
WMS 中叧规定了 KVP 格式的请求,因此下面介绍一下 WMS 的请求和响应内容。
2.8.3. GetCapabilities 操作¶
GetCapabilities 操作需要以下的参数:
参数 |
是否必须 |
VERSION |
|
SERVICE=WMS |
是 |
REQUEST=GetCapabilities |
是 |
FORMAT |
|
UPDATESEQUENCE |
以下是一个 WMS 的 GetCapabilities 操作示例:
http://www.someserver.com/wms?
VERSION=1.3.0&
SERVICE=WMS&
REQUEST=GetCapabilities
这样的请求返回的响应示例:
2.8.4. GetMap 操作¶
GetMap 操作需要以下的参数:
参数 |
是否必须 |
VERSION |
是 |
REQUEST=GetMap |
是 |
LAYERS |
是 |
STYLES |
是 |
CRS |
是 |
BBOX |
是 |
WIDTH |
是 |
HEIGHT |
是 |
FORMAT |
是 |
TRANSPARENT |
|
BGCOLOR |
|
EXCEPTIONS |
|
TIME |
|
ELEVATION |
以下是一个 WMS 的 GetMap 操作示例:
http://www.someserver.com/wms?
VERSION=1.3.0&REQUEST=GetMap&
CRS=CRS:84&BBOX=-97.105,24.913,-78.794,36.358&
WIDTH=560&HEIGHT=350&LAYERS=BUILTUPA_1M,COASTL_1M,POLBNDL_1M&
STYLES=0XFF8080,0X101040,BLACK&FORMAT=image/png&BGCOLOR=0xFFFFFF&
TRANSPARENT=TRUE&EXCEPTIONS=INIMAGE
该请求的响应就是一张图片。
2.8.5. GetFeatureInfo 操作¶
GetFeatureInfo 操作需要以下的参数:
参数 |
是否必须 |
VERSION |
是 |
REQUEST=GetFeatureInfo |
是 |
GetMap 请求参数 |
是 |
QUERY_LAYERS |
是 |
INFO_FORMAT |
是 |
FEATURE_COUNT |
|
I |
是 |
J |
是 |
EXCEPTIONS |
以下是一个 WMS 的 GetFeatureInfo 操作示例:
http://www.someserver.com/wms?
request=GetFeatureInfo&
VERSION=1.3.0&FORMAT=image/jpeg&
BBOX=-4.0325,-2.9078,40.5189,41.6436&
QUERY_LAYERS=Countries,Cities&
INFO_FORMAT=text/html
HEIGHT=400&WIDTH=400&
STYLES=&
I=290&J=246&
2.8.6. ArcGISServer对WMS的支持¶
ArcGISServer10中支持的WMS版本为最新的1.3.0。 在 ArcGISServer 中,叧需简单地勾选的Capabilities选项卡中可以选择支持WMS,如图21。
图21ArcGISServer发布WMS服务
现在我们通过浏觅器直接发送请求获取一张劢态地图:
http://localhost:8399/arcgis/services/basemap/World/MapServer/WMSServer?
VERSION=1.3.0&REQUEST=GetMap&
CRS=CRS:84&BBOX=-180,-90,180,90&
WIDTH=720&HEIGHT=360&LAYERS=0,1,2&
STYLES=,,&FORMAT=image/png&
TRANSPARENT=TRUE
这个请求返回一张这样的图片,这和ArcMap中的配置是完全一致的:
然后,我们模拟某个用户在图片上进行了一个点击,想看看点击处的点对象都有什么属性值, 这时会有一个这样的请求发送到 WMS 服务上:
http://localhost:8399/arcgis/services/basemap/World/MapServer/WMSServer?
VERSION=1.3.0&REQUEST=GetFeatureInfo&
CRS=CRS:84&BBOX=-180,-90,180,90&
WIDTH=720&HEIGHT=360&
INFO_FORMAT=text/xml&
QUERY_LAYERS=2&
I=593&J=100
这个请求返回如下的结果,很显然,刚才在地图上的北京附近进行了点击, 服务返回回来“Beijing”这个要素的所有属性:
<?xml version="1.0"?>
"http://www.esri.com/wms"
xmlns="http://www.esri.com/wms">
"2165" Shape="Null" CITY_NAME="Beijing"
GMI_ADMIN="CHN-BJN" ADMIN_NAME="Beijing" FIPS_CNTRY="CH" CNTRY_NAME="China"
STATUS="National and provincial capital" POP_RANK="1"
POP_CLASS="5,000,000 and greater" PORT_ID="0" LABEL_FLAG="1">