ogc定义
OGC全称是开放地理空间信息联盟(Open Geospatial Consortium),它主要是制定各种数据标准和服务协议,然后各大GIS厂商都按照这个标准和协议来开发,说白了就是定义了一系列接口,然后各个GIS厂商按照这个接口去实现,这样就可以保证各个GIS厂商之间的空间数据信息可互相操作使用,要不然大家各搞各的,GIS行业就很难有大的进步。
我们登录到OGC的官网https://www.ogc.org/ 在其standards的页签下,就可找到当前OGC定义的多种数标准和协议,这其中就有很多我们熟悉的GEOTIFF、3DTiles、KML等等的数据协议,而今天小编主要给大家介绍的是OGC定义的数据服务协议。
作为一个GIS软件工程师,无论是你是从事GIS数据服务端还是GIS数据可视化方面,都需要了解最基本的OGC数据服务协议,目前OGC提供了WMS、WFS、WCS、WMTS、WPS五种GIS数据服务协议,下面小编一一解释这些协议的用法。
WMS服务
WMS服务全称是Web Map Service (web地图服务),目前OGC提供的WMS最新版本为1.3.0,并且提供了如下的操作接口:
GetCapabilities:获取服务中的要素及支持的操作,其实就是整个服务的wms的所有信息,包括图层信息、投影以及支持的各种其它操作接口。
请求格式支持KVP和SOAP,其所需的参数主要有以下参数:
参数名称 | 参数含义 | 是否必须 | 备注 |
VERSION | 版本号 | 否 | |
SERVICE=WMS | 服务名称 | 是 | |
REQUEST=GetCapabilities | 请求接口 | 是 | |
FORMAT | 返回类型 | 否 | 如果未定义,默认xml |
UPDATESEQUENCE | 否 | 这个参数主要是用来当服务端数据改变的时候,客户端可以通过改变这个参数值来保证获取到最新的数据 |
GetMap:获取地图数据,这是WMS的核心服务,主要是将各种GIS数据按照请求的bbox渲染为影像数据,并可通过Style来控制其显示样式。
请求格式支持KVP和SOAP,其所需要的参数主要包括:
参数名称 | 参数含义 | 是否必须 | 备注 |
VERSION | 版本号 | 是 | |
REQUEST=GetMap | 请求接口 | 是 | |
LAYERS | 图层名称 | 是 | |
STYLES | 样式类型 | 是 | |
BBOX | 边界框值 | 是 | |
CRS | 投影坐标系 | 是 | |
WIDTH | 图片宽度 | 是 | |
HEIGHT | 图片高度 | 是 | |
FORMAT | 图片格式 | 是 | |
TRANSPARENT | 图片是否透明 | 否 | 默认为false,不透明 |
BGCOLOR | 图片背景 | 否 | 默认为白色 |
EXCEPTIONS | 否 | ||
TIME | 请求时间,主要用于元数据中包括时间维度,比如天气预报 | 否 | |
ELEVATION | 元数据包括高程维度,比如不同海拔高度的臭氧浓度 | 否 |
GetFeatureInfo:获取getMap响应地图上某一点的特征数据信息
请求格式支持KVP和SOAP,其主要参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
VERSION | 版本号 | 是 | |
REQUEST=GetFeatureInfo | 请求接口 | 是 | |
QUERY_LAYERS | 查询的图层 | 是 | 表示检索的图层信息,多个图层以逗号隔开 |
INFO_FORMAT | 返回格式 | 是 | 表示特征信息以何种形式返回 |
FEATURE_COUNT | 特征信息数 | 否 | 表示每个层返回的最大特征信息数 |
I | I指的是当前getMap返回图像水平方向的像素值 | 是 | 像素的(0,0点在左上角),I向右增加,J向下增加。 |
J | J指的是当前getMap返回图像水平方向的像素值 | 是 | |
EXCEPTIONS | 是 |
WFS服务
WFS服务全称是Web Feature Service(web 要素服务),目前OGC提供的WFS的最新版本为2.0.2,WFS服务协议只能用于矢量数据,比如shp、KML、CSV、Geojson等,目前WFS提供了众多操作接口,今天主要介绍如下几个:
GetCapabilities: 获取服务中的要素及支持的操作
请求格式支持KVP和SOAP,其请求的参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
SERVICE | 服务名称 | 是 | |
REQUEST=GetCapabilities | 请求接口 | 是 | |
VERSION | 版本号 | 否 |
DescribeFeatureType: 操作返回由WFS实例提供的特性类型的模式描述。模式描述定义了WFS期望特性实例在输入时如何编码,以及特性实例在输出时如何编码
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
VERSION | 版本号 | 否 | |
SERVICE | 服务名称 | 是 | |
REQUEST=DescribeFeatureType | 请求接口 | 是 | |
TYPENAME | 图层名称 | 否 | 如果不输入,则是当前系统所有图层的描述信息 |
OUTPUTFORMAT | 输出格式 | 否 | 不输入,默认application/gml+xml; version=3.2 |
例如:http://localhost:8080/geoserver/wfs?request=DescribeFeatureType&version=2.0.0&service=WFS&outputFormat=application/json&typeName= nuc:陕西省_县道
GetPropertyValue : 操作允许从数据存储中检索一个特性属性的值或一个复杂特性属性值的一部分,以获取使用查询表达式标识的一组特性
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 | |
VERSION | 版本号 | 否 | ||
SERVICE | 服务名称 | 是 | ||
REQUEST=GetPropertyValue | 请求接口 | 否 | ||
Stored Query Keywords | STOREDQUERY_ID | 定义的存储查询id | 否 | 可通过CreateStoredQuery来创建存储查询 |
storedquery_parameter=value | 存储查询键值对 | |||
Adhoc Query Keywords | TYPENAMES | 图层名称 | 否 | 这个查询表达式和上面的存储表达式互斥 |
SRSNAME | 坐标代号 | |||
aliases | 别名 | |||
PROPERTYNAME | 需要查询的字段名称 | |||
FILTER | 过滤字段 | |||
RESOURCEID | 资源id | |||
BBOX | 边界框范围 | |||
SORTBY | 排序字段 | |||
VALUEREFERENCE | 查询属性字段 | 是 | ||
OUTPUTFORMAT | 输出格式 | 否 | 比如application/gml+xml; version=3.2 |
例如:http://localhost:8080/geoserver/wfs?request=GetPropertyValue&typeNames=nuc:陕西省_县道&valueReference=kind
GetFeature: 从数据存储中返回所选的特性
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 | |
VERSION | 版本号 | 是 | ||
SERVICE | 服务名称 | 是 | ||
REQUEST=GetMap | 请求接口 | 是 | ||
RESULTTYPE | 响应方式 | 否 | 默认results,表示返回资源的完整文档 | |
OUTPUTFORMAT | 输出格式 | 否 | ||
STARTINDEX | 起始索引 | 否 | 这两个参数类似数据库中的分页查询起始和每页总数 | |
Count | 限制相应特征属性值 | 否 | ||
Adhoc Query Keywords | TYPENAMES | 图层名称 | 否 | 查询表达式可以 |
SRSNAME | 坐标代号 | |||
aliases | 别名 | |||
PROPERTYNAME | 需要查询的字段名称 | |||
FILTER | 过滤字段 | |||
RESOURCEID | 资源id | |||
BBOX | 边界框范围 | |||
SORTBY | 排序字段 | |||
Stored Query Keywords | STOREDQUERY_ID | 定义的存储查询id | 否 | 存储表达式 |
storedquery_parameter=value | 存储查询键值对 | |||
RESOLVE | 服务器资源引用解析能力 | 否 | 默认是none,表示不解析资源引用 | |
RESOLVEDEPTH | 引用资源解析胜读 | 否 | ||
RESOLVETIMEOUT | 否 |
LockFeature: 锁定某个特征数据,确保某个客户端在修改它的时候,其它客户端不去修改,通过公开一个长期的特征锁定机制,以一致性。
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 | |
VERSION | 版本号 | 否 | ||
SERVICE | 服务名称 | 是 | ||
REQUEST= LockFeature | 请求接口 | 是 | ||
Stored Query Keywords | STOREDQUERY_ID | 定义的存储查询id | 否 | 这三类参数互斥,也就是如果输入了STOREDQUERY_ID,就不要输入TYPENAMES和LockId |
storedquery_parameter=value | 存储查询键值对 | |||
Adhoc Query Keywords | TYPENAMES | 图层名称 | 否 | |
SRSNAME | 坐标代号 | |||
aliases | 别名 | |||
PROPERTYNAME | 需要查询的字段名称 | |||
FILTER | 过滤字段 | |||
RESOURCEID | 资源id | |||
BBOX | 边界框范围 | |||
SORTBY | 排序字段 | |||
LOCKID | 锁定标识符 | 否 | ||
EXPIRY | 过期时间 | 否 | 默认释放锁的时间(300s) | |
LOCKACTION | 输出格式 | 否 |
例如
http://localhost:8080/geoserver/wfs?request=lockfeature&typenames=nuc:陕西省_县道&version=2.0.0&&RESOURCEID
Transaction 主要是用来修改矢量的要素信息,包括新增、修改、删除等操作。
该操作不支持KVP请求方式,目前仅支持XML的请求方式,由于篇幅问题,不在这里列举xml的请求方式,具体可参考OGC的官方资料。
此外OGC对WFS还定义了GetFeatureWithLock 、CreateStoredQuery 、DropStoredQuery 、ListStoredQueries 、DescribeStoredQueries接口,这些接口不在这里一一介绍,感兴趣的可以自己查阅OGC的官网。
WCS服务
WCS全称为Web Coverage Service(web覆盖数据),目前OGC提供的WCS的最新版本为2.1,其为我们提供了如下几种操作:
Getcapabilities: 获取服务中的要素及支持的操作
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
SERVICE | 服务名称 | 是 | |
REQUEST=GetCapabilities | 请求接口 | 是 |
DescribeCoverage: 获取服务中的要素及支持的操作
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
VERSION | 版本号 | 是 | |
SERVICE | 服务名称 | 是 | |
REQUEST= DescribeCoverage | 请求接口 | 是 | |
extension | 扩展参数 | 否 | |
coverageId | 图层名称 | 是 |
例如:
http://localhost:8080/geoserver/wcs?request=DescribeCoverage&coverageId=liuyang:an_hui&version=2.0.1
GetCoverage: 获取栅格数据
请求格式支持KVP和SOAP,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
VERSION | 版本号 | 是 | |
SERVICE | 服务名称 | 是 | |
REQUEST= GetCoverage | 请求接口 | 是 | |
coverageId | 图层名称 | 是 | |
subset | 子集参数 | 否 | 由于栅格数据有很多维度,这个参数就是用来定义当前请求栅格在某个子集上的值 |
http://localhost:8080/geoserver/wcs?request=GetCoverage&coverageId=liuyang:china&version=2.0.1&subset=Lat%20,(34,35)&subset=Long,(108,109)
WMTS服务
WMTS全称是Web Map Tile Service(web地图切片服务),目前OGC提供的最新版本是1.0.0,WMTS是OGC首个支持restful风格的服务标准,其提供如下几种操作:
GetCapabilities:获取WMTS服务的元数据信息
请求格式支持KVP,SOAP和RESTFUL,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
SERVICE | 服务名称 | 是 | |
REQUEST=GetCapabilities | 请求接口 | 是 |
GetTile:获取服务的切片信息
请求格式支持KVP,SOAP和RESTFUL,其请求参数如下:
参数名称 | 参数含义 | 是否必须 | 备注 |
SERVICE | 服务名称 | 是 | |
REQUEST= GetTile | 请求接口 | 是 | |
VERSION | 版本号 | 是 | |
LAYER | 图层 | 是 | |
STYLE | 样式类型 | 是 | |
FORMAT | 返回格式 | 是 | |
TILEMATRIXSET | 瓦片矩形设置投影参数 | 是 | |
TILEMATRIX | 瓦片矩形瓦片级别 | 是 | |
TILEROW | 矩形瓦片的行索引 | 是 | |
TILECOL | 矩形瓦片的列索引 | 是 |
TMS服务
把TMS列举到这里来说,其实有点不太合适,因为TMS不是OGC协议,但是TMS协议在GIS数据协议中与WMTS一样被大家所使用,因此小编把它列举到这里,只是强调以下这个协议它是由osgeo提出的(osgeo就是QGIS等开源软件的组织),不属于ogc,而它与WMTS协议之间也可以互相转换,与我们经常说的XYZ协议也基本一致,关于WMTS、TMS、XYZ三个协议可能很多人都不知道选择哪一个,其实没啥大区别,无非就是y轴方向的问题,后续可以列一个简单的三个协议的对比图。
最后感谢大家花时间阅读,再次提醒一下小编会不定期更新GIS方面的相关文章,如有需要,可关注小编一起进步!