以下均掺杂个人理解
书目:Web GIS 原理与应用开发 —— 刘光 曾敬文 曾庆丰 著
第九章 Web要素服务
为了规范通过Web服务发送矢量数据的过程,OGC制定了Web要素服务(WFS)规范。
9.1 WFS
Web GIS服务器除了能返回一张地图图像之外,也可以返回绘制该地图图像所使用的的真实地理数据。这类返回地理要素数据的规范称为Web要素服务。
WMS是由服务器将一地图图像发送给客户端
而WFS是服务器将矢量数据发送给客户端
使用WMS时地图由服务器绘制,使用WFS时地图由客户端绘制。
9.1.1 WFS请求与响应的格式
与WMS类似,WFS也支持一些操作,如:GetCapabilities、DescribeFeatureType、GetFeature
其中GetFeature操作用于获取要素数据
例
:http://suite.opengeo.org/geos...:states&featureid=states.23
该请求中,service=wfs
表示使用WFS服务,version=1.1.0
表示使用1.1.0版本,request=GetFeature
表示执行GetFeature操作,typename=usa:states
表示针对的是GeoServer服务器中USA工作区的名为states的图层,featureid=states.23
表示要获取的要素的ID为23
WFS使用地理标记语言(Geography Markup Language,GML)
返回数据。GML可以同时包含图形与属性信息。由于GML是基于XML的,因此比GeoJSON要冗长得多。
9.1.2 WFS服务器与客户端
ESRI使用自身的要素服务,与WFS功能类似,但不是标准的WFS
对于大多数Web地图API,可以将WFS作为一个图层
不过Leaflet以及许多其他轻量级的开源Web地图API中,并不支持WFS
客户端GIS软件一般都能查看WFS服务
9.2 事务性WFS与基于Web的数据编辑
WFS规范同时定义了要素编辑的规则
通过WFS服务对源数据库中的数据进行更改称为事务性WFS
或WFS-T
启用事务功能后,WFS客户端就可以使用事务性WFS方法更改地理数据库中的数据。
应用更改示例:
- WFS客户端连接到启用事务的已发布WFS服务
- 在服务器上锁定所编辑的要素和行(可使用GetFeatureWithLock请求执行此操作)
- 在WFS客户端上使用WFS编辑器执行编辑
- 随后在服务器上应用编辑(可使用事务性WFS方法执行此操作)
要素被锁定后,其他WFS编辑器就无法对其进行编辑了,直到编辑完成或者时间超时解除锁定。
插入事务不要求锁定要素
,因为现有要素不能被修改(更新或删除),所以不必调用GetFeatureWithLock。
任何要求更新或删除的事务请求必须有锁定ID
事务性WFS可用来增加、删除或者修改加载的要素,更重要的是能将该操作提交并保存到数据源中。因此,数据源必须存储在空间数据库中,而不能存储在文件中。
第十章 WCS及多维数据
对于栅格数据服务,OGC制定的是WCS(Web Coverage Services,网络覆盖服务)。WCS服务所返回的数据可作为分析和建模操作的输入参数。通过WCS服务获取的栅格数据集被称为覆盖
。
10.1 WCS及其操作
WCS是由OGC创建的用于在Web上共享覆盖地理信息的开放规范。
覆盖
指表示空间变化现象的地理信息
虽然WCS和WMS从服务器上返回的都是图像,但是WCS能更多的详细信息。
WCS支持操作:
- 请求服务级别元数据和数据的简要描述——GetCapabilities
- 请求一个或多个覆盖的完整描述——DescribeCoverage
- 以熟知的格式请求覆盖——GetCoverage
10.1.1 GetCapabilities操作
GetCapabilities操作用于得到WCS服务器所支持的操作和服务(能力)的列表。
例
:http://www.example.com/wcs?se...
通过请求获取覆盖的ID之后,便可执行DescribeCoverage操作了。
要注意的是:版本不同,返回的id的参数名可能不同,要查看数据确定其参数名
10.1.2 DescribeCoverage操作
DescribeCoverage操作允许客户端请求某个WCS服务的一个或多个栅格图层的全部描述信息。
服务器会返回描述所请求的覆盖图层详细信息的XML文档。
主要请求参数:
请求参数 | 是否必需 | 描述 |
---|---|---|
service=WCS | 是 | 服务类型 |
request=DescribeCoverage | 是 | 请求名称 |
version | 是 | 请求的WCS服务的版本 |
identifiers | 是 | 指定所要请求的图层 |
例
:http://localhost:8080/geoserver/ows?service=WCS&version=1.1.1&request=DescribeCoverage&identifiers=nruc:mosaic
10.1.3 GetCoverage操作
通过GetCapabilities和DescribeCoverage可以了解服务器端允许哪些请求以及哪些数据是可以获取的,然后进行GetCoverage操作,该操作最终返回指定地理范围内指定域值内的某栅格数据。
除了service、request、version、identifiers参数值之外,还需要包含:
domainSubset
参数:该参数定义所要请求覆盖的时空范围。它又包含boundingBox(必选)
和temporalSubset(可选)
两个参数。boundingBox
:指定地理范围temporalSubset
:指定时间范围
output
参数:指定输出设置。该参数又包括:GridCRS
:返回数据的地理参照系统,可选format
:返回数据的格式,必选store
:“true”表示需要服务器把返回数据的所有内容存储在一个网络位置,并返回其URL;“false”表示需要服务器直接返回数据;二者可选
例
:http://localhost:8080/geoserver/ows?service=WCS&Version=1.1.1&REQUEST=GetCoverage&Identifier=nruc:mosaic&BoundingBox=36.492,6.346,46.591,20.83,urn:orc:def:crs:EPSG::4326&Format=image/png&Store=true
由于版本问题,可能导致openlayer在加载WCS时,图像的坐标轴发生变化(图像旋转90度)
解决方案
:在请求参数中添加GridBaseCRS参数
例
:http://localhost:8080/geoserver/ows?service=WCS&Version=1.1.1&REQUEST=GetCoverage&Identifier=nruc:mosaic&BoundingBox=36.492,6.346,46.591,20.83,urn:orc:def:crs:EPSG::4326&GridBaseCRS=EPSG:4326&Format=image/png&Store=true
10.2 多维数据与图像镶嵌插件
地理数据,特别是遥感数据,通常是多维的。如:多波段,多时段,多高程等
10.2.1 多维数据
对于这种类型的数据,需要特定的管理、处理和服务。这类数据服务在标准的二维空间维度之外,还需要识别哪些额外维度(时间、高程、自定义维度),并允许用户在这些维度之间请求数据子集。
10.2.2 图像镶嵌插件
图像镶嵌是用于将一组带地理参考的栅格文件镶嵌在一块的插件,由GeoTools提供。
图像镶嵌插件负责将一组类似的栅格数据归为一组,将它们作为一个栅格数据集(可能是多维的)对外提供服务。
例如:
- 将一组空间邻近的遥感图像进行镶嵌。
- 将同一地理范围内不同时间与/或不同高程或不同维度的山歌数据进行镶嵌,组成一多维数据集。
可以通过一组辅助文件,来指定该镶嵌中可获取的维度、索引以及获取纬度值的方式。