初步了解什么是WMS和WFS

在使用OpenLayers调用geoserver的服务的时候,用到了wms和wfs的服务,开始由于忙着赶项目,也没时间去具体了解这两个具体的相关信息,只是参考了OpenLayers的文档来直接写代码了,趁项目赶完了,就来初步了解下这两个到底是什么。

WMS

web地图服务,是一个OGC的标准服务,主要是用来请求地图相关的数据,可以根据用户设置不同的参数,返回对应的地图数据。该服务是一个基于HTTP协议的,所支持的操作都是由URL决定的。请求示例如下所示:

http://localhost:8070/geoserver/cite/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&layers=cite%3Anc_d_a&WIDTH=256&HEIGHT=256&CRS=EPSG%3A3857&STYLES=&BBOX=12425603.318038251%2C3365675.22945288%2C12445171.197279256%2C3385243.108693885

基础参数

首先通过OpenLayers源码中的TileWMS来看下请求一个WMS需要传递哪些参数。在TileWMS.js中,可以看到一个baseParams的对象,如下所示:

var baseParams = {
            'SERVICE': 'WMS',
            'VERSION': DEFAULT_WMS_VERSION,
            'REQUEST': 'GetFeatureInfo',
            'FORMAT': 'image/png',
            'TRANSPARENT': true,
            'QUERY_LAYERS': this.params_['LAYERS']
        };

1. SERVICE
服务类型,主要包括WMSWFSWMTSWCS等服务,都是遵循OGC标准的服务。
2. VERSION
请求的WMS的版本号,主要包括1.3.01.1.11.1等版本号。
3. REQUEST

  • 请求方式,主要包括以下五种。
  • 请求服务的元数据(GetCapabilities)
  • 请求地图图像(GetMap)
  • 请求关于地图要素的信息(GetFeatureInfo,可选)
  • 请求图例(GetLegendGraphic,可选)
  • 请求用户定义的样式(GetStyles,可选)
    前面三种比较常用。
    4. FORMAT
    MIME类型,值为服务元数据的输出格式,默认为图片。
    5. TRANSPARENT
    值为true或者false,用来表示地图图层是否透明(默认情况下是不透明的)
    6. QUERY_LAYERS
    字符类型,值为查询的一个或多个地图图层列表,多个图层之间用”,”隔开。可以通过以下方式来动态更新:
        var source = wmsLayer.getSource();
        source.clear();
        var params = source.getParams();
        params.layers = layers.join(',');
        source.updateParams(params);
        wmsLayer.setSource(source);

其它参数

1. LAYERS
字符类型,值为一个或多个地图图层列表,多个图层之间用”,”隔开
2. INFO_FORMAT
返回数据的类型,如application/json
3. FEATURE_COUNT
返回结果中要素的数量。
4. WIDTH
地图图片的宽度。
5. HEIGHT
地图图片的高度。
6. CRS
坐标参考系。如EPSG:3857
7. STYLES
图层的地图渲染样式。
8. BBOX
某个CRS下的地图边界范围的坐标序列

WFS

WFSWeb要素服务,区分于WMSWMS返回的是图层级的地图影像,而WFS返回的是要素级的GML编码,并提供对要素的增加、修改、删除等事务操作,是对Web地图服务的进一步深入。

请求方式

WFS的请求方式主要有以下几种:

  • GetCapabilities
    获取WFS服务的元数据(介绍服务中的要素类和支持的操作)
  • DescribeFeatureType
    获取WFS服务支持的要素类的定义(要素类的元数据,比如要素包含哪些字段)
  • GetFeature
    获取要素数据
  • GetGmlObject
    通过XLink获取GML对象
  • Transaction
    创建、更新、删除要素数据的事务操作
  • LockFeature
    在事务过程中锁定要素。
    请求示例如下所示:
http://localhost:8070/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&outputFormat=application/json&typeName=cite:yj_j_p

个人博客

你可能感兴趣的:(初步了解什么是WMS和WFS)