7 OGC Web Map Service

本文介绍了OGC的Web Map Service(WMS)标准,重点关注1.1.1和1.3.0版本的差异,如坐标系统的轴顺序、参数名称等。此外,还详细讲解了WMS的几个核心操作:GetCapabilities、GetMap、GetFeatureInfo、DescribeLayer和GetLegendGraphic,以及它们在GeoServer中的实现和示例。
摘要由CSDN通过智能技术生成

第7章 OGC Web Map Service

GeoServer各服务完全按照OGC的标准实现,或者简单的说OGC标准就是GeoServer的API文档,掌握OGC服务标准对于深入学习和使用GeoServer起着非常重要的作用。

本章将简单介绍下OGC的WMS服务标准,更详细的介绍可以参考OGC官方文档(http://www.opengeospatial.org/standards/wms)。

7.1 WMS版本差异

OGC WMS有两个非常重要的版本,1.1.1和1.3.0,这两个版本间有一些细微差别:

  • 在1.1.1中,使用EPSG命名空间指定的地理坐标系统按照经度/纬度(x/y)的轴顺序定义。在1.3.0中,轴顺序相反,是纬度/经度(y/x)。

    例如, WGS84 SRS (EPSG:4326)的WMS 1.1.1请求如下:
    geoserver/wms?VERSION=1.1.1&REQUEST=GetMap&SRS=epsg:4326&BBOX=-180,-90,180,90&…

    而在1.3.0中则是:

    geoserver/wms?VERSION=1.3.0&REQUEST=GetMap&CRS=epsg:4326&BBOX=-90,-180,90,180&…

  • 在GetMap操作中,1.1.1版本的坐标参数为srs,而1.3.0中为crs。但在GeoServer中,无论哪个版本,GeoServer都支持这两个参数名。

  • 在GetFeatureInfo操作中,1.3.0中的x和y参数称为i和j。但在GeoServer中,无论哪个版本,GeoServer都支持这两个参数名,除非在遵循CITE的模式下。

OGC Web地图服务实现规范(版本1.1.1),请参考官方文档:

http://portal.opengeospatial.org/files/?artifact_id=1081&version=1&format=pdf

OGC Web地图服务实现规范(版本1.3.0),请参考官方文档:

http://portal.opengeospatial.org/files/?artifact_id=14416

7.2 WMS 操作

WMS请求中包含以下操作(对于从事于web开发的人员来说,把它称作接口可能更好理解):

WMS请求可以执行以下操作:

操作描述
Exceptions发生异常时调用。
GetCapabitities返回服务级元数据,它是对服务信息内容和请求参数的一种描述。
GetMap指定地理空间参考和范围,返回一个静态地图图片。
GetFeatureInfo返回显示在地图上某像素位置的要素的信息。
DescribeLayer返回WFS或WCS相关图层的其他信息。
GetLegendGraphic返回地图的图例信息。

7.2.1 GetCapabilities

GetCapabilities操作获取WMS的功能文档,包括支持的操作,地图服务,数据等元数据信息。

GetCapabilities的请求参数:

参数是否必须描述
service服务名称,对于WMS服务,当然是“WMS”了。
version服务版本,可以是1.0.0, 1.1.0, 1.1.1, 1.3.0。
request操作名称,这里是GetCapabilities。
namespace返回指定命名空间的图层。
format指定返回文档格式。

下面是一个GetCapabilities请求示例:

http://localhost:8080/geoserver/wms?service=wms&version=1.1.1&request=GetCapabilities

在GeoServer中,可以设置默认版本,从而可以在GetCapabilities中不指定version。但是就WMS标准而言,应该指定这个参数。

WMS默认以XML格式返回一个功能文档,它详细描述了WMS服务,包括三个主要部分:

Service包含服务元数据,如服务名称、关键字和服务提供方的联系信息(参见3.1.1)。
Request描述WMS服务提供的操作以及每个操作的输入参数和输出格式(参见3.1.12)。如果需要,GeoServer可以禁用对某些WMS操作的支持。
Layer列出可用的坐标系统和图层。在GeoServer中,图层以“namespace:layer”的形式命名。每个图层都提供元数据信息,如标题、摘要和关键字等(参见3.1.2)。

GeoServer的WMS功能文档可通过欢迎页面中的服务能力获取,请参见1.2.8节。

7.2.2 GetMap

GetMap操作请求服务器渲染地图并返回一张静态图片。WMS服务的GetMap操作非常灵活,不仅可以指定地图的范围,生成图片的大小,图片格式,还可以指定需要绘制的一个或多个图层及其样式,目标空间参考系统等。

GetCapabilities的请求参数:

参数是否必须描述
service服务名称,对于WMS服务,当然是“WMS”了。
version服务版本,可以是1.0.0, 1.1.0, 1.1.1, 1.3.0。
request操作名称,这里是GetMap。
layers需要在地图上显示的图层。可以是单个图层名或以逗号分隔的图层名称列表。
styles图层的样式。以逗号分隔的样式名称列表,每个样式对应一个图层。样式名称在列表中可以为空,表示使用默认图层样式(在图层发布是指定的样式,参见2.3.2)。
srs或crs地图绘制时采用的空间参照系,值是EPSG代码,格式如EPSG:nnn。crs在WMS 1.3.0中使用。
bbox输出地图的范围。由minx,miny,maxx,maxy四个值组成,单位是SRS对应的单位。
width输出地图的宽度,以像素为单位。
height地图输出的高度,以像素为单位。
format地图输出的格式,例如image/png。
transparent地图背景是否透明,默认是false。
bgcolor地图的背景颜色,其值格式RRGGBB。默认为FFFFFF(白色)。
exceptions当发生异常时,输出异常的格式。默认值是application/vnd.ogc.se_xml。
time地图数据的时间值或范围,例如time=2018-12-16T00:00:00.0Z/2018-12-16T10:00:00.0Z。只有在发布图层时启用了时间维度(参见2.3.3),该值才会生效。
elevation高程。只有在发布图层时启用了高程维度(参见2.3.3),该值才会生效。
cql_filter过滤器参数。
angle输出图片旋转角度。
sld引用样式描述文件的URL,用于控制或增强地图图层的样式。
sld_body样式描述,用于控制或增强地图图层的样式。

下面是一个GetMap请求示例:

http://localhost:8080/geoserver/wms?request=GetMap&service=WMS&version=1.1.1&layers=topp%3Astates&styles=population&srs=EPSG:4326&bbox=-145,21,-57,58&width=780&height=330&format=image/png

它将返回一个大小为780*330的png图片。

7.2.3 GetFeatureInfo

GetFeatureInfo操作请求地图上与某一位置相交的要素的空间和属性数据。它类似于WFS的GetFeature操作,但在输入和输出方面都远没有WFS
GetFeature灵活。建议使用WFS服务代替GetFeatureInfo。

GetFeatureInfo的请求参数:

参数是否必须描述
service服务名称,对于WMS服务,当然是“WMS”了。
version服务版本,可以是1.0.0, 1.1.0, 1.1.1, 1.3.0。
request操作名称,这里是GetFeatureInfo。
layers同GetMap。
styles同GetMap。
srs或crs同GetMap。
bbox同GetMap。
width同GetMap。
height同GetMap。
query_layers用于查询的图层列表,以逗号分隔。
info_format返回的要素信息格式。如text,html,gml,json等。
feature_count返回的最大要素个数,默认为1。
x或i当前地图上查询点的x坐标,以像素为单位。i在WMS 1.3.0中使用。
y或j当前地图上查询点的y坐标,以像素为单位。j在WMS 1.3.0中使用。
exceptions当发生异常时,输出异常的格式。默认值是application/vnd.ogc.se_xml。

注意:如果要对图层组发送GetFeatureInfo请求,则必须将该图层组中的所有图层设置为“可查询”才能获得结果(请参阅2.3.2中的WMS
Settings)。

下面是一个返回格式为GeoJson格式的GetFeatureInfo请求示例:

http://localhost:8080/geoserver/wms?&INFO_FORMAT=application/json&REQUEST=GetFeatureInfo&EXCEPTIONS=application/vnd.ogc.se_xml&SERVICE=WMS&VERSION=1.1.1&WIDTH=970&HEIGHT=485&X=486&Y=165&BBOX=-180,-90,180,90&LAYERS=COUNTRYPROFILES:grp_administrative_map&QUERY_LAYERS=COUNTRYPROFILES:grp_administrative_map&TYPENAME=COUNTRYPROFILES:grp_administrative_map

返回结果如下所示:

{
“type”: “FeatureCollection”,
“features”: [{
“type”: “Feature”,
“id”: “dt_gaul_geom.fid-138e3070879”,
“geometry”: {
“type”: “MultiPolygon”,
“coordinates”: [[[[XXXXXXXXXX,
XXXXXXXXXX],
…[XXXXXXXXXX,
XXXXXXXXXX]]]]
},
“geometry_name”: “at_geom”,
“properties”: {
“bk_gaul”: X,
“at_admlevel”: 0,
“at_iso3”: “XXX”,
“ia_name”: “XXXX”,
“at_gaul_l0”: X,
“bbox”: [XXXX,
XXXX,
XXXX,
XXXX]
}
}],
“crs”: {
“type”: “EPSG”,
“properties”: {
“code”: “4326”
}
},
“bbox”: [XXXX,
XXXX,
XXXX,
XXXX]
}

7.2.4 DescribeLayer

只有知道图层数据的结构,才能制作合适的样式。WMS和WFS针对不同的数据类型提供了获取数据结构的操作,而DescribeLayer只是指引用户应该使用哪个服务。

DescribeLayer的请求参数:

参数是否必须描述
service服务名称,对于WMS服务,当然是“WMS”了。
version服务版本,可以是1.1.1。
request操作名称,这里是DescribeLayer。
layers同GetMap。
outputFormat输出格式,默认为xml。
exceptions当发生异常时,输出异常的格式。默认值是application/vnd.ogc.se_xml。

下面是一个返回格式为GeoJson格式的DescribeLayer请求示例:

http://localhost:8080/geoserver/wms?service=WMS&version=1.1.1&request=DescribeLayer&layers=sf:roads,
nurc:mosaic&outputFormat=application/json

返回结果如下所示:

{
version: “1.1.1”,
layerDescriptions: [
{
layerName: “sf:roads”,
owsURL: “http://localhost:8080/geoserver/wfs/WfsDispatcher?”,
owsType: “WFS”,
typeName: “sf:roads”
},
{
layerName: “nurc:mosaic”,
owsURL: “http://localhost:8080/geoserver/wcs?”,
owsType: “WCS”,
typeName: “nurc:mosaic”
}
]

7.2.5 GetLegendGraphic

GetLegendGraphic操作根据图层样式或输入的样式参数绘制图例,并生成图片返回给客户端。

GetLegendGraphic的请求参数:

参数是否必须描述
request操作名称,这里是GetLegendGraphic。
layer要生成图例的图层,不支持多个。
style要生成图例的图层样式。如果没有指定,则选择默认样式。样式可以是可用于该图层的任何有效样式。
featuretype要生成图例的图层的要素类型。如果图层只有一个要素类型,则不需要该参数。
rule如果指定,则生成图例时只绘制指定样式规则;否则,绘制所有规则。
scale该参数对应在rule中定义的样式显示比例尺的分母,在没有指定rule的情况下,设置该参数,获取只在该比例尺下显示的样式图例。
sld引用样式描述文件的URL,用于控制或增强地图图层的样式。
sld_body样式描述,用于控制或增强地图图层的样式。
format用于返回图例的文件格式的MIME类型。
width指定返回图片中每个样式或规则的宽度(不包含图例的标题),以像素为单位。
height指定返回图片中每个样式或规则的高度,以像素为单位。
exceptions当发生异常时,输出异常的格式。默认值是application/vnd.ogc.se_xml。
language允许为样式标题和规则标题设置语言;如果不能以指定的语言提供,将使用默认标题。具体使用方法可参考2.7.8

下面是一个返回格式为png图片的GetLegendGraphic请求示例:

http://localhost:8080/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=topp:states
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值