免费行情软件app网站mnw直,免费下载安装app,wordpress知更鸟下载,杭州建设网站公司网站文章目录 1.概述2.GetCapabilities3.GetMap4.GetFeatureInfo 阅读本文之前可参考前文#xff1a;《地图服务器GeoServer的安装与配置》与《GeoServer发布地图服务#xff08;WMS、WFS#xff09;》。 1.概述
经过前文的介绍#xff0c;相信我们对WMS/WFS服务已经有了一个非… 文章目录 1.概述2.GetCapabilities3.GetMap4.GetFeatureInfo 阅读本文之前可参考前文《地图服务器GeoServer的安装与配置》与《GeoServer发布地图服务WMS、WFS》。 1.概述
经过前文的介绍相信我们对WMS/WFS服务已经有了一个非常直观的认识最起码我们知道了地图服务的数据从何而来又是如何发布出去的。更进一步的说OGC给WMS/WFS分别定义了非常详尽的标准规范其主要内容是通过HTTPHypertext Transfer Protocol超文本传输协议 实现的各种操作。在这里我们要介绍的WMS支持标准HTTP的Get和Post请求不过通常情况下基于GET方式将参数以键值对的形式放置在URL中进行服务请求较为方便。 HTTP协议用于客户端和服务器之间的通信为了满足各种各样的通信需求HTTP协议规定了多种不同的请求方法其中Get和Post是最基础的两种。Get用于请求已被URI识别的资源Post则用来传输实体的主体两者的功能比较相近但其实有着不小的区别。不过在本文中我们将会主要看到这个区别Get请求是将参数拼接到URL上进行参数传递的而POST是将参数写入到请求正文中传递的因此Get请求有URL长度的限制通常用于查询Post请求则没有长度限制通常用于增添、删除和修改。 根据《OpenGIS Web Map Server Implementation Specification》的1.3.0版本WMS主要支持如下几种操作如下表1所示所示
【表1 WMS支持的操作】
操作必要性描述GetCapabilities必要查询服务的元数据包括支持的操作、参数、以及图层列表等GetMap必要检查询指定区域和内容的地图图像GetFeatureInfo可选查询地图上像素位置的基础数据包括几何和属性值
2.GetCapabilities
GetCapabilities操作的目的是获取服务的元数据主要包括WMS服务器提供的操作、请求参数等信息。GetCapabilities请求的参数如下表2所示
【表2 WMS GetCapabilities请求参数】
请求参数必要性描述VERSIONversion可选请求的版本值是1.1.01.1.11.3.0三者之一。SERVICEWMS必要服务的类型。REQUESTGetCapabilities必要请求操作的名称。FORMATMIME_type可选服务元数据的格式。UPDATESEQUENCEstring可选用于缓存控制的序列号或字符串。
根据表2所示的参数我们在浏览器中输入如下地址
http://localhost:8080/geoserver/ows?serviceWMSversion1.3.0requestGetCapabilities浏览器响应的结果如下图所示。可以看到返回的结果其实是一个XML文件这个文件中描述的就是WMS服务具体的元数据信息。 3.GetMap
GetMap操作用于请求服务器生成地图并返回这个操作也是WMS服务最主要的功能。不难想象为了保证正确的输出结果我们必须配置足够多的参数比如地理范围空间参考、输出宽高以及格式等。具体的请求参数如下表3所示
【表3 WMS GetMap请求参数】
请求参数必要性描述VERSION1.3.0必要请求的版本。REQUESTGetMap必要请求操作的名称。LAYERSlayer_list必要一个或多个地图图层列表使用逗号分隔。STYLESstyle_list必要渲染样式列表使用逗号分隔。CRSnamespace:identifier必要坐标参考系统。BBOXminx,miny,maxx,maxy必要边界框包围盒从左下到右上使用CRS的单位。WIDTHoutput_width必要地图图像的宽度。HEIGHToutput_height必要地图图像的高度。FORMAToutput_format必要地图的输出格式。TRANSPARENTTRUE|FALSE可选地图背景透明度默认不透明。BGCOLORcolor_value可选背景颜色的十六进制红绿蓝颜色值默认白色。EXCEPTIONSexception_format可选WMS报告异常的格式默认为XML。TIMEtime可选图层需要的时间值。ELEVATIONelevation可选图层需要的高程值。Other sample dimension(s)可选其他维度的值备用。
这些参数具体的参数值可以参考GetCapabilities操作返回的XML文件。例如我们填充好所有的必要参数在浏览器中输入如下地址来访问前文中配置好的矢量数据集
http://localhost:8080/geoserver/wms?
VERSION1.3.0
REQUESTGetMap
LAYERStest:multipolygons
STYLES
CRSEPSG:4326
BBOX38.8920794,-77.0495419,38.9096339,-77.0199063
WIDTH768
HEIGHT454
FORMATimage/png这时浏览器就会返回一个PNG格式的图像地图文件如下图所示。GetMap响应的地图图像大小、格式等并不是固定的具体取决于请求的参数。如果我们对矢量和栅格足够熟悉的话我们能大概猜出WMS服务返回地图文件大概的处理算法流程
由于数据源是矢量数据所以我们关键是矢量栅格化的算法。根据传递的参数坐标参考系统CRS、地理范围BBox、宽WIDTH以及高HEIGHT足够帮助我们确定一个栅格数据集。通过矢量栅格化算法对栅格数据集填充像素值这中间涉及到图像的重采样操作。最后将栅格数据集的文件流传输到浏览器端。 如果我们想访问前文中配置好的栅格数据集URL请求参数大致相同如下所示
http://localhost:8080/geoserver/wms?
VERSION1.3.0
REQUESTGetMap
LAYERStest:japan_tmo_2011057_geo
STYLES
CRSEPSG:4326
BBOX23.034667983398435,120.15380860839844,52.990722641601565,153.88916014160156
WIDTH768
HEIGHT682
FORMATimage/png此时浏览器也会返回一张PNG格式的图像地图如下图8.30所示 有一点要注意的是在WMS另一个广泛使用的版本1.1.1中边界框包围盒的参数BBOX的x、y坐标顺序是与1.3.0版本是相反的WMS版本1.1.1的请求URL如下所示
http://localhost:8080/geoserver/wms?
VERSION1.1.1
REQUESTGetMap
LAYERStest:multipolygons
STYLES
CRSEPSG:4326
BBOX-77.0495419,38.8920794,-77.0199063,38.9096339
WIDTH768
HEIGHT454
FORMATimage/png这个问题与GDAL2.0升级3.0版本时地理坐标系相关参数x和y需要进行调换有点类似经过查阅相关资料才知道原因是要保证x和y的顺序要与坐标参考系定义的轴顺序保持一致。但是在笔者看来这种设计多少有点破坏向下兼容的原则。
4.GetFeatureInfo
GetFeatureInfo是可选操作用于查询地图上给定位置的空间和属性信息。这个操作有点类似于鼠标在数字地图上拾取一点高亮显示该点位置的要素并显示该要素关联的属性。不难理解由于WMS使用的HTTP协议是无状态的所以GetFeatureInfo请求参数包含了GetMap请求的大部分参数除VERSION和REQUEST之外的所有参数。毕竟要获取地图某一点的要素信息就先得把地图给获取了。GetFeatureInfo操作的标准请求参数如下表4所示
【表4 WMS GetFeatureInfo请求参数】
请求参数必要性描述VERSION1.3.0必要请求的版本。REQUESTGetFeatureInfo必要请求操作的名称。map request part必要GetMap请求的大部分参数。QUERY_LAYERSlayer_list必要要查询的层级列表以逗号分隔。INFO_FORMAToutput_format必要特征信息返回格式MIME类型。FEATURE_COUNTnumber可选返回的特征数目 (默认为1)。Ipixel_column必要x方向像素坐标。Jpixel_row必要y方向像素坐标。EXCEPTIONSexception_format可选WMS 报告异常的格式默认为XML。
我们按照表4所示的参数来查询前文中配置好的基于矢量数据集的地图具体在某个像素位置的要素信息可以在浏览器中输入如下地址
http://localhost:8080/geoserver/wms?
VERSION1.3.0
REQUESTGetFeatureInfo
LAYERStest:multipolygons
STYLES
CRSEPSG:4326
BBOX38.8920794,-77.0495419,38.9096339,-77.0199063
WIDTH768
HEIGHT454
FORMATimage/png
QUERY_LAYERStest:multipolygons
INFO_FORMATapplication/json
I384
J227此时浏览器会返回一个JSON描述了该像素位置的几何信息其关联的属性信息以及一些元数据信息。如下图所示 同样的如果使用类似的参数来查询前文中配置好的基于栅格数据集的地图在浏览器中输入如下地址
http://localhost:8080/geoserver/wms?
VERSION1.3.0
REQUESTGetFeatureInfo
LAYERStest:japan_tmo_2011057_geo
STYLES
CRSEPSG:4326
BBOX23.034667983398435,120.15380860839844,52.990722641601565,153.88916014160156
WIDTH768
HEIGHT682
FORMATimage/png
QUERY_LAYERStest:japan_tmo_2011057_geo
INFO_FORMATapplication/json
I384
J341此时浏览器会返回一个JSON不过内容就简单多了返回的是该地图在指定像素位置的包含RGB三个波段的像素值。如下图所示。这其实也不难理解如果把栅格数据当作是点要素的集合那么点的像素值自然就是其关联的属性数据了。