Appearance
OGC标准服务
WCS
WCS全称是Web Coverage Services,即网络覆盖服务。
这里的Coverage和ArcGIS的第二代数据模型Coverage是不一样的东西,从"覆盖"二字大体可以知道它应该和连续性数据有关。我们知道GIS大体有两种数据模型:
一种是离散数据模型,即矢量数据模型,它的数据结构是由离散的点组织而成。离散数据模型适用于表示离散的地理事物,比如河流、道路、房屋建筑等。 另一种是连续数据模型,即栅格数据模型,它的数据结构是由一个个像元组织而成。连续数据模型适用于表示高程、海拔、雨水量这些在地理层面连续的特征或者信息。 WCS就是一种与连续数据模型(栅格数据模型)相关的WebGIS规范,它可以发布卫星影像、数字高程数据等数据。WebGIS服务器基于WCS规范发布栅格数据服务,WebGIS客户端就能基于WCS规范使用对应的栅格数据服务。
WCS和WMS从WebGIS服务器返回的都是图像,但是WCS具有多维的信息,它能够返回更多的详细信息。
WCS服务支持以下操作:
GetCapabilities —— 请求服务的元数据 DescribeCoverage —— 请求服务的完整描述 GetCoverage —— 请求服务的数据 另外,最新的WCS版本应该是2.1。
WFS
WFS服务简介
Web Feature Service(网络要素服务),简称WFS,由开放地理信息联盟(Open GeoSpatial Consortium,OGC)制定。该规范主要对OpenGIS简单要素的数据编辑操作进行规范,从而使服务器端和客户端能够在要素层面进行“通讯”。其返回结果的是XML格式的WFS服务元数据文档,通过该文档用户能够了解:WFS服务器支持的所有操作操作列表,GetFeature操作返回的数据格式,可用的坐标参照系统列表,操作异常信息的列表,WFS服务提供商的相关信息,WFS服务器的可用要素类列表等。
OGC的WMS和WMTS规范都是有关空间数据显示的标准,而WFS(Web Feature Service)则允许用户在分布式的环境下通过HTTP对空间数据进行增、删、改、查。
具体来说,WebGIS服务器除了能够返回一张张地图图像之外,还可以返回绘制该地图图像所使用的真实地理数据。用户利用这些传输到客户端的地理数据可以进行数据渲染可视化、空间分析等操作。而前后端的这种数据交互就是基于WFS规范的。
那么也就能很清楚的说明WMS与WFS之间的区别了。WMS是由服务器将地图图像发送给客户端,而WFS是服务器将矢量数据发送给客户端。也就是在使用WMS时地图由服务器绘制,在使用WFS时地图由客户端绘制。另外最最重要的,使用WFS可以对WebGIS服务器中的地理数据(存储在空间数据库中)直接进行增、删、改、查。
服务操作列表
WFS服务接口规范定义了GetCapabilities,DescribeFeatureType、GetFeature、Transaction、GetGmlObject和LockFeature一共6种操作。其中,前三个GetCapabilities,DescribeFeatureType和GetFeature为必须实现的操作,也即只要实现了这三个操作的服务均可称为WFS服务。WFS的操作见下表所示。
| 操作 | 实现要求 | 描述 |
|---|---|---|
GetCapabilities | 强制实现 | GetCapabilities请求用于查询WFS服务的能力信息,包括支持的操作、支持的格式、空间坐标、包含的资源等。它主要的目的是使客户端在使用GetFeature请求前可以对WFS服务有一个基本的了解,从而可以设置正确的参数。 |
DescribeFeatureType | 强制实现 | 用于生成一个 Schema 描述,该 Schema 描述了 WFS 服务提供的要素类型(Feature Type),以及要素类型的结构信息。该 Schema 还定义了 WFS 服务所期望的要素实例在输入时如何编码以及输出时如何生成要素实例。 |
GetFeature | 强制实现 | GetFeature用于向WFS的客户端程序提供查询特定地理信息的能力,通过GetFeature操作可以由指定的属性条件、空间条件或者两者叠加的条件进行空间查询。 |
Transaction | 选择实现 | 允许Transaction操作,使客户端可对服务器端所提供的地图要素类执插入,更新,删除等命令 |
GetGmlObject | 选择实现 | 通过XLink获取GML对象 |
LockFeature | 选择实现 | 在事务过程中锁定要素 |
WFS的种类与操作
WFS服务一般支持如下功能:
GetCapabilities —— 获取WFS服务的元数据(介绍服务中的要素类和支持的操作)
DescribeFeatureType —— 获取WFS服务支持的要素类的定义(要素类的元数据,比如要素包含哪些字段)
GetFeature —— 获取要素数据
GetGmlObject —— 通过XLink获取GML对象
Transaction —— 创建、更新、删除要素数据的事务操作
LockFeature —— 在事务过程中锁定要素
实际中,WebGIS服务器针对这些功能并不是必须全部实现,而是实现全部或部分。
因此,根据依据这些功能的支持与否,可以将WFS分为3类:
Basic WFS —— 必须支持GetCapabilities、DescribeFeatureType、GetFeature功能
XLink WFS —— 必须在Basic WFS基础上加上GetGmlObject操作
Transaction WFS —— 也称为WFS-T,必须在Basic WFS基础上加上Transaction功能以及支持编辑数据,另外也可以加上GetGmlObject或LockFeature功能
服务操作的参数列表
GetCapabilities操作请求方法实现参数
获取元数据
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型值为“WFS” |
request | 1个(必选) | 字符类型,请求的操作名称,值为“GetCapabilities” |
versions | 0或1个(可选) | 字符类型,值为请求的WFS的版本号 |
示例:
获取本机安装的GeoServer中WFS服务的元数据:
<p>http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities</p><ul id="code_id_0"><li>1.</li></ul>GeoServer将会返回一个XML文件(由于内容太多,这里就不列出来了),里面包含了关于这个GeoServer服务器的WFS服务的所有元数据,比如,包含哪些要素类,支持哪些操作等等。
DescribeFeatureType操作请求方法实现参数
获取要素类的元数据
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型值为“WFS” |
request | 1个(必选) | 字符类型,请求的操作名称,值为“DescribeFeatureType” |
typeName | 0或1个(可选) | 字符类型,值为要素类型的列表,多个值之间用“,”隔开,默认解析包括的全部要素类型 |
outputFormat | 0或1个(可选) | MIME类型,值为输出格式 |
示例:
获取本机GeoServer中guangdong:gd_roads要素类的元数据:
<p>http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=guangdong:gd_roads</p><ul id="code_id_1"><li>1.</li></ul>GeoServer返回一个XML文件:
<div id="code-lang-undefined"><p><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:guangdong="http://localhost:8084/geoserver/guangdong" elementFormDefault="qualified" targetNamespace="http://localhost:8084/geoserver/guangdong"></p><br><p><xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://localhost:8080/geoserver/schemas/gml/3.1.1/base/gml.xsd"/></p><br><p><xsd:complexType name="gd_roadsType"></p><br><p><xsd:complexContent></p><br><p><xsd:extension base="gml:AbstractFeatureType"></p><br><p><xsd:sequence></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="the_geom" nillable="true" type="gml:MultiLineStringPropertyType"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="osm_id" nillable="true" type="xsd:string"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="code" nillable="true" type="xsd:int"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="fclass" nillable="true" type="xsd:string"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="ref" nillable="true" type="xsd:string"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="oneway" nillable="true" type="xsd:string"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="maxspeed" nillable="true" type="xsd:int"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="layer" nillable="true" type="xsd:double"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="bridge" nillable="true" type="xsd:string"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="tunnel" nillable="true" type="xsd:string"/></p><br><p><xsd:element maxOccurs="1" minOccurs="0" name="type" nillable="true" type="xsd:long"/></p><br><p></xsd:sequence></p><br><p></xsd:extension></p><br><p></xsd:complexContent></p><br><p></xsd:complexType></p><br><p><xsd:element name="gd_roads" substitutionGroup="gml:_Feature" type="guangdong:gd_roadsType"/></p><br><p></xsd:schema></p></div><ul id="code_id_2"><li>1.</li><li>2.</li><li>3.</li><li>4.</li><li>5.</li><li>6.</li><li>7.</li><li>8.</li><li>9.</li><li>10.</li><li>11.</li><li>12.</li><li>13.</li><li>14.</li><li>15.</li><li>16.</li><li>17.</li><li>18.</li><li>19.</li><li>20.</li><li>21.</li><li>22.</li><li>23.</li></ul>其中,name就是指gd_roads要素类所具有的字段,而type就是该字段数据的数据类型。
GetFeature操作请求方法实现参数
获取要素数据
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型标识值为“WFS” |
request | 1个(必选) | 字符类型,请求的操作值为“GetFeature” |
typeName | 1个(必选) | 字符类型,值为请求的要素类型的名称,多个名称之间用“,”隔开 |
version | 0或1个(可选) | 字符类型,值为请求的WFS的版本号 |
outputFormat | 0或1个(可选) | MIME类型,值为输出格式 |
resultType | 0或1个(可选) | 字符类型,值为请求的结果类型 |
propertyName | 0或1个(可选) | 字符类型,值为请求要素的属性名,多个值之间用“,”隔开 |
featureVersion | 0或1个(可选) | 字符类型,值为要素的版本,值为ALL返回请求的要素的所有版本,没有值默认为返回请求要素的最新版本 |
maxFeature | 0或1个(可选) | 整型类型,值为请求要素的最大数,默认值为满足查询的所有结果集 |
expiry | 0或1个(可选) | 数字类型,要素被锁定的时间 |
SRSName | 0或1个(可选) | 字符类型,值为坐标系统名 |
featureID | 0或1个(可选) | 字符类型,值为要素的ID,多个ID之间用“,”隔开 |
filter | 0或1个(可选) | 请求要素的过滤条件 |
bBox | 0或1个(可选) | Wkt格式,请求指定要素查询范围,可以替代featureId和filter参数 |
sortby | 0或1个(可选) | 字符类型,查询结果属性值的排序依据 |
示例:
①返回本机GeoServer中guangdong:gd_roads要素类的要素ID为gd_roads.1的要素,返回数据格式指定为json:
<p>http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=guangdong:gd_roads&OUTPUTFORMAT=application/json&FEATUREID=gd_roads.1</p><ul id="code_id_3"><li>1.</li></ul>②返回本机GeoServer的guangdong:gd_roads要素类中的10个要素,返回数据格式指定为json:
<p>http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=guangdong:gd_roads&OUTPUTFORMAT=application/json&MAXFEATURES=10</p><ul id="code_id_4"><li>1.</li></ul>Transaction(对要素数据增、删、改)
Transaction的KVP格式请求需要以下参数:
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型标识值为“WFS” |
request | 1个(必选) | 字符类型,请求的操作值为“Tansaction” |
typeName | 1个(必选) | 字符类型,值为请求的要素类型的名称,多个名称之间用“,”隔开 |
version | 1个(必选) | 字符类型,值为请求的WFS的版本号 |
operation | 0或1个(可选) | 支持四个动作(Action),分别是Insert(插入)、Replace(替换)、Update(更新)和Delete(删除) |
featureID | 0或1个(可选) | 字符类型,值为要素的ID,多个ID之间用“,”隔开 |
filter | 0或1个(可选) | 请求要素的过滤条件 |
bBox | 0或1个(可选) | Wkt格式,请求指定要素查询范围,可以替代featureId和filter参数 |
releaseAction | 0或1个(可选) |
目前Transaction的KVP格式请求只支持Delete操作(Insert和Update必须通过XML格式请求)。
示例:
删除本机GeoServer的guangdong:gd_roads要素类中的ID为gd_roads.1的要素:
<p>http://localhost:8080/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=Transaction&TYPENAME=guangdong:gd_roads&FEATUREID=gd_roads.1</p><ul id="code_id_5"><li>1.</li></ul>WMS
WMS服务简介
Web Map Service(网络地图服务),简称WMS,由开放地理信息联盟(Open GeoSpatial Consortium,OGC)制定。该规范定义了Web客户端从网络地图服务器获取地图的接口标准。一个WMS可以动态地生成具有地理参考数据的地图,这些地图通常用GIF、JPEG或PNG等图像格式,或者SVG、KML、VML和WebCGM等矢量图形格式来表现。使用者通过指定的参数获取相应的地图图片。
服务操作列表
WMS实现规范由三个基础性操作协议(GetCapabilities,GetMap和GetFeatureInfo)组成,这些协议共同构成了利用WMS创建和叠加显示不同来源的远程异构地图服务的基础。WMS服务操作列表见下表所示。
| 操作 | 实现要求 | 描述 |
|---|---|---|
GetCapabilities | 强制实现 | 获取WMS的能力文档(即元数据文档),里面包含服务的所有信息 |
GetMap | 强制实现 | 获取地图图片。该操作根据客户端发出的请求参数在服务端进行检索,服务器端返回一个地图图像,其地理空间参数和大小参数是已经明确定义的,返回的地图图像可以是GIF、JPEG、PNG或SVG格式。 |
GetFeatureInfo | 选择实现 | 该操作根据用户所请求的X、Y坐标或感兴趣的图层,返回地图上某些特殊要素的信息,信息以HTML,GML或ASCII的格式表示。 |
服务操作的参数列表
GetCapabilities操作请求方法实现参数
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型值为“WMS” |
request | 1个(必选) | 字符类型,请求的操作名称,值为“GetCapabilities” |
version | 0或1个(可选) | 字符类型,值为请求的WMS的版本号 |
format | 0或1个(可选) | MIME类型,值为服务元数据的输出格式 |
updateSequence | 0或1个(可选) | 字符类型,可取的值有none、any、equal、lower、higher,用来表示缓存数据更新的方式 |
GetMap操作请求方法实现参数
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型标识值为“WMS” |
request | 1个(必选) | 字符类型,值为“GetMap” |
version | 1个(必选) | 字符类型,值为请求的WMS的版本号 |
layers | 1个(必选) | 字符类型,值为一个或多个地图图层列表,多个图层之间用”,”隔开 |
styles | 1个(必选) | 字符类型,值为请求图层的地图渲染样式 |
CRS | 1个(必选) | 字符类型,值为坐标参照系统 |
BBOX | 1个(必选) | Wkt格式,值为某个CRS下的地图边界范围的坐标序列 |
width | 1个(必选) | 整型类型,值为地图图片的像素宽度 |
height | 1个(必选) | 整型类型,值为地图图片的像素高度 |
format | 1个(必选) | 字符类型,值为地图的输出格式 |
transparent | 0或1个(可选) | 字符类型,值为true或者false,用来表示地图图层是否透明(默认情况下是不透明的) |
bgcolor | 0或1个(可选) | 值为十六进制的RGB值,表示地图的背景颜色 |
exceptions | 0或1个(可选) | 值为WMS的异常信息报告的格式(默认情况下是XML格式) |
time | 0或1个(可选) | 时间类型,值为时间值,表示需要在图层中有时间信息 |
elevation | 0或1个(可选) | 数字类型,值为高程值,表示需要在图层中有高程信息 |
GetFeatureInfo操作请求方法实现参数
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型标识值为“WMS” |
request | 1个(必选) | 字符类型,值为“GetFeatureInfo” |
version | 1个(必选) | 字符类型,值为请求的WMS的版本号 |
map request part | 1个(必选) | 字符类型,值为获得地图的部分操作参数 |
query_layers | 1个(必选) | 字符类型,值为查询的一个或多个地图图层列表,多个图层之间用”,”隔开 |
info_format | 1个(必选) | MIME类型,值为请求信息的返回类型 |
I | 1个(必选) | 整型类型,值为待查询点的在地图图片上的像素列号 |
J | 1个(必选) | 整型类型,值为待查询点的在地图图片上的像素行号 |
feature_count | 0或1个(可选) | 整型类型,值为返回信息中的要素的个数(默认是1) |
exceptions | 0或1个(可选) | 值为WMS的异常信息报告的格式(默认情况下是XML格式) |
接口调用示例
WMTS
WMTS服务简介
Web Map Tile Service(网络地图瓦片服务),简称WMTS,由开放地理信息联盟(Open GeoSpatial Consortium,OGC)制定,是和WMS并列的重要OGC规范之一。WMTS不同于WMS,它最重要的特征是采用缓存技术能够缓解WebGIS服务器端数据处理的压力,提高交互响应速度,大幅改善在线地图应用客户端的用户体验。WMTS是OGC主推的缓存技术规范,是目前各种缓存技术相互兼容的一种方法。
服务操作列表
WMTS服务支持RESTful访问,其接口包括GetCapabilities、GetTile和GetFeatureInfo3个操作,这些操作允许用户访问切片地图。
| 操作 | 操作 | 描述 |
|---|---|---|
GetCapabilities | 强制实现 | 获取WMTS的能力文档(即元数据文档),里面包含服务的所有信息 |
GetTile | 强制实现 | 获取地图瓦片。该操作根据客户端发出的请求参数在服务端进行检索,服务器端返回地图瓦片图像。 |
GetFeatureInfo | 选择实现 | 通过在WMTS图层上指定一定的条件,返回指定的地图瓦片内容对应的要素信息 |
服务操作的参数列表
GetCapabilities操作请求方法实现参数
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型值为“WMTS” |
request | 1个(必选) | 字符类型,请求的操作名称,值为“GetCapabilities” |
acceptVersions | 0或1个(可选) | 字符类型,值为请求的WMTS的版本号 |
sections | 0或1个(可选) | 字符类型,请求元数据文档0或多个节的名称,多个名称之间用“,”隔开,不须按顺序排列。值为空默认返回整个元数据文档 |
updateSequence | 0或1个(可选) | 字符类型,值为increased,为空时默认返回最新的元数据文档 |
acceptFormat | 0或1个(可选) | MIME类型,值为服务元数据的输出格式 |
GetTile操作请求方法实现参数
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型标识值为“WMTS” |
request | 1个(必选) | 字符类型,请求的操作值为“GetTile” |
version | 1个(必选) | 字符类型,值为请求的WMTS的版本号 |
layer | 1个(必选) | 字符类型,值为请求的图层名称 |
style | 1个(必选) | 字符类型,值为请求图层的渲染样式 |
format | 1个(必选) | 字符类型,值为瓦片地图的输出格式 |
tileMatrixSet | 1个(必选) | 字符类型,瓦片矩阵数据集,其值在服务的元数据文档中指定 |
tileMatrix | 1个(必选) | 字符类型,瓦片矩阵,其值在服务的元数据文档中指定 |
tileRow | 1个(必选) | 整型类型,值为大于0的整数,表示瓦片矩阵的行号 |
tileCol | 1个(必选) | 整型类型,值为大于0的整数,表示瓦片矩阵的列号 |
Other sample dimensions | 0或1个(可选) | 字符类型,其他允许的参数 |
GetFeatureInfo操作请求方法实现参数
| 参数名称 | 参数个数 | 参数类型和值 |
|---|---|---|
service | 1个(必选) | 字符类型,服务类型值为“WMTS” |
request | 1个(必选) | 字符类型,请求的操作值为“GetFeatureInfo” |
version | 1个(必选) | 字符类型,值为请求的WMTS的版本号 |
J | 1个(必选) | 整型类型,值为大于0的整数,表示瓦片上一指定像素点的行号 |
I | 1个(必选) | 整型类型,值为大于0的整数,表示瓦片上一指定像素点的列号 |
info_format | 1个(必选) | MIME类型,值为请求信息的返回类型 |
layer, style, format, Sample dimension, tileMatrixSet, tileMatrix, tileRow, tileCol | 1个(必选) | 这些参数的值应与请求GetTile的相应参数保持一致 |