1. WMS服务基础知识
WMS服务:web map service,网络地图服务或者又叫动态地图服务,是利用具有地理空间位置信息的数据制作地图,其中将地图定义为地理数据的可视化表现,能够根据用户的请求,返回相应的地图,包括PNG、GIF、JPEG等栅格形式,或者SVG或者WEB CGM等矢量形式。WMS支持HTTP协议,所支持的操作是由URL决定的。
常见WMS支持以下操作:
①GetCapabitities:返回服务级元数据,它是对服务信息内容和要求参数的一种描述。
②GetMap:返回一个地图影像,其地理空间参考和大小参数是明确定义了的。
Parameter | Required? | Description |
service | Yes | Service name. Value is WMS. |
version | Yes | Service version. Value is one of 1.0.0, 1.1.0, 1.1.1, 1.3. |
request | Yes | Operation name. Value is GetMap. |
layers | Yes | Layers to display on map. Value is a comma-separated list of layer names. |
styles | Yes | Styles in which layers are to be rendered. Value is a comma-separated list of style names, or empty if default styling is required. Style names may be empty in the list, to use default layer styling. |
srs or crs | Yes | Spatial Reference System for map output. Value is in form EPSG:nnn.crs is the parameter key used in WMS 1.3.0. |
bbox | Yes | Bounding box for map extent. Value is minx,miny,maxx,maxy in units of the SRS. |
width | Yes | Width of map output, in pixels. |
height | Yes | Height of map output, in pixels. |
format | Yes | Format for the map output. See WMS output formats for supported values. |
transparent | No | Whether the map background should be transparent. Values are trueor false. Default is false |
bgcolor | No | Background color for the map image. Value is in the form RRGGBB. Default is FFFFFF (white). |
exceptions | No | Format in which to report exceptions. Default value is application/vnd.ogc.se_xml. |
time | No | Time value or range for map data. See Time Support in GeoServer WMS for more information. |
sld | No | A URL referencing a StyledLayerDescriptor XML file which controls or enhances map layers and styling |
sld_body | No | A URL-encoded StyledLayerDescriptor XML document which controls or enhances map layers and styling |
③GetFeatureInfo:返回显示在地图上的某些特殊要素的信息。
Parameter | Required? | Description |
service | Yes | Service name. Value is WMS. |
version | Yes | Service version. Value is one of 1.0.0, 1.1.0, 1.1.1, 1.3. |
request | Yes | Operation name. Value is GetFeatureInfo. |
layers | Yes | See GetMap |
styles | Yes | See GetMap |
srs or crs | Yes | See GetMap |
bbox | Yes | See GetMap |
width | Yes | See GetMap |
height | Yes | See GetMap |
query_layers | Yes | Comma-separated list of one or more layers to query. |
info_format | No | Format for the feature information response. See below for values. |
feature_count | No | Maximum number of features to return. Default is 1. |
x or i | Yes | X ordinate of query point on map, in pixels. 0 is left side. i is the parameter key used in WMS 1.3.0. |
y or j | Yes | Y ordinate of query point on map, in pixels. 0 is the top. j is the parameter key used in WMS 1.3.0. |
exceptions | No | Format in which to report exceptions. The default value is application/vnd.ogc.se_xml. |
④GetLegendGraphic:图例
Parameter | Required | Description |
REQUEST | 要求的 | 值必须为“GetLegendGraphic”。 |
LAYER | 要求的 | 用于生成图例图形的层。 |
STYLE | 可选的 | 要为其生成图例图形的层的样式。如果不存在,则选择默认样式。样式可以是任何可用于层的有效样式,包括非SLD内部定义的样式。 |
FEATURETYPE | 可选的 | 要为其生成图例图形的功能类型。如果图层只有一种特征类型,则不需要这样做。 |
RULE | 可选的 | 用于生成图例图形的样式规则(如果适用)。如果一个样式有多个规则,但没有选择特定的规则,那么地图服务器有义务生成一个代表该样式所有规则的图形。 |
SCALE | 可选的 | 如果没有为样式指定规则,则此参数可以通过消除超出范围的内部规则来帮助服务器选择更合适的代表性图形。指定比例也将使符号使用测量单位根据指定比例调整大小。 |
SLD | 可选的 | 此参数指定对外部SLD文档的引用。它的工作方式与wms getmap操作的sld=参数相同。 |
SLD_BODY | 可选的 | 此参数允许将SLD文档直接包含在HTTP-GET请求中。它的工作方式与wms getmap操作的sld_body=参数相同。 |
FORMAT | 要求的 | 这将提供用于返回图例图形的文件格式的mime类型。允许的值与WMS GETMAP请求的FORMAT=参数相同。 |
WIDTH | 可选的 | 这将以像素为单位提示返回图形的宽度。矢量图形可以使用该值作为要包括的详细程度的提示。 |
HEIGHT | 可选的 | 这将以像素为单位提示返回图形的高度。 |
EXCEPTIONS | 可选的 | 这将给出返回异常的格式的mime类型。允许的值与wms getmap请求的exceptions=参数相同。 |
LANGUAGE | 可选的 | 允许为样式标题和规则标题设置标签语言;需要正确本地化的SLD才能正常工作;如果所请求的语言中没有标签,将使用默认文本;请查看 SLD中的I18N 更多详情。 |
2 WMS版本差异
打开Geoserver首页就能看到,WMS分为两个版本:WMS1.1.1和WMS1.3.0,以两个请求分别来看
①WMS1.1.1
geoserver/wms?version=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&BBOX=-180,-90180,90……
②WMS1.3.0
geoserver/wms?version=1.3.0&REQUEST=GetMap&CRS=EPSG4326&BBOX=-90,-180,90180……
WMS1.1.1和WMS1.3.0差异主要体现在:
(1)1.1.1中坐标系编码格式为SRS,而1.3.0中为CRS
(2)1.1.1中调用顺序为经度/纬度,1.3.0中为纬度/经度
(3)1.1.1到1.3.0,响应格式从application/vnd.ogc.wms_xml转变为text/xml格式
2.1 Geoserver中WMS服务常见参数设置
WMS服务可以设置的参数较多,这里以下列常见几个参数为例
2.1.1 服务元数据
为根图层设置标题和摘要,默认空白
2.1.2 栅格渲染(Raster Rendering Options)
WMS提供了用于对地图服务进行处理的方法,当对地图服务进行平移、缩放时,WMS请求可以通过各种栅格渲染方式生成地图图像,主要包含三种:最近邻、双线性及三次线性(和arcgis同)
1. 最近邻
使用最近输入单元格的中心来确定输出单元格的值。保留原始值,不创建新的平均值。由于图像值保持完全相同,渲染速度很快,但可能会从锐利的边缘细节像素化。对于土地利用分类等分类数据,建议采用最近邻插值法。
2. 双线性
通过对四个最近单元格的值进行线性加权采样来确定输出单元格的值。输入单元越近,其对输出单元值的影响越大。由于输出值可能与最近的输入值不同,因此建议对连续数据(如高程和原始坡度值)使用双线性插值。双线性插值大约是最近邻插值的五倍。
3. 三次线性
查看16个最近的单元格,并通过点拟合平滑曲线以找到输出值。三次线性既可以更改输入值,也可以将输出值置于输入值范围之外。建议使用三次线性来平滑连续数据,但这会导致额外的性能需求。
2.1.3 水印设置(Watermark Settings)
水印即是将图片嵌入到地图中,用于版权保护,可通过启用水印(Enable Watermark)功能打开,打开后所有地图都将以同一个水印进行渲染,目前无法对每一个图层单独进行水印渲染。
地图水印的参数主要有:
1. 水印URL
水印的位置,可以放置在geoserver默认目录下启用绝对路径,也可以使用图床的网络路径
2. 水印透明度
范围介于0(不透明)-100(完全透明)之间
3. 水印位置
水印相对于WMS服务的位置,默认为右下角
(水印右上对齐,透明度=90)
2.1.4 SVG
GeoServer WMS支持SVG(可缩放矢量图形)作为输出格式。GeoServer目前支持两个SVG渲染器,可从SVG Producer菜单获得。
(1)Simple:对SLD样式的支持有限,但速度非常快。
(2)Batik:完全支持SLD样式,但速度较慢。
Enable Anti-aliasing 消除混叠是一种通过在对象的边缘填充介于对象颜色和背景颜色之间的像素来使边缘看起来更平滑的技术。启用“消除混叠”通常会使地图看起来更漂亮,但会增加图像的大小,并需要更长的时间才能返回。如果要将消除混叠的地图覆盖在其他地图之上,请注意使用透明度,因为消除混叠过程与后面的颜色混合,可以创建“光晕”效果。
2.1..5地图投影(Projection handing Options)
针对特定服务的投影处理,主要包含以下4个选项
2.1.6 限制GetMap和GetFeatureInfo请求的MIME类型
Geoserver默认情况下支持所有mime类型
2.1.7 禁止在GetMap和GetFeatureInfo请求中使用动态样式
选中之后,具有动态样式的getmap和getfeatureinfo请求将报错
2.1.8 禁止GetFeatureInfo请求结果重投影
默认情况下,GetFeatureInfo结果会重新投影到地图坐标参考系统
2.2 GeoServer返回的WMS格式
WMS可以多种格式返回图形,设置输出的各位语法为:format=<format>
Format | Syntax | Notes |
PNG | format=image/png | |
PNG8型 | format=image/png8 | 与PNG相同,但计算最佳256色(8位)调色板,因此图像大小通常较小 |
JPEG | format=image/jpeg | |
JPEG-PNG格式 | format=image/vnd.jpeg-png | 一种自定义格式,根据图像内容动态决定是否最好使用jpeg或png压缩。如果图像完全不透明且不加调色板,则返回jpeg格式的图像。为了以有意义的方式使用此格式,getmap必须包含一个“&transparent=true”参数,因为如果没有它,geoserver将使用默认/请求的背景色生成不透明图像,使此格式始终返回jpeg图像(或始终返回png,如果它们被调色板)。使用层预览测试此格式时,请记住向预览URL添加“&transparent=true”,因为通常预览会生成非透明图像。 |
jpeg-png8格式 | format=image/vnd.jpeg-png8 | 与jpeg-png相同,但如果选择png格式,则生成一个调色板输出 |
GIF | format=image/gif | |
TIFF | format=image/tiff | |
TIFF8 | format=image/tiff8 | 与TIFF相同,但计算最佳256色(8位)调色板,因此图像大小通常较小 |
GeoTIFF | format=image/geotiff | 与TIFF相同,但包含额外的geotiff元数据 |
GeoTIFF 8 | format=image/geotiff8 | 与TIFF相同,但包含额外的geotiff元数据,并计算最佳256色(8位)调色板,因此图像大小通常较小 |
SVG | format=image/svg | |
| format=application/pdf | |
Rss | format=rss | |
KML | format=kml | |
KMZ | format=kmz | |
OpenLayers | format=application/openlayers | 生成Openlayers HTML应用程序。 |
UTFGrid | format=application/json;type=utfgrid | 生成一个 UTFGrid 1.3 JSON响应。需要从矢量层或从栅格层通过渲染转换转换为矢量的矢量输出。 |
3. 最佳请求设置
默认情况下,geoserver最大请求内存设置为65536KB,最大渲染时间为60秒,最大渲染错误为1000,最大纬度设置(主要是时间、高程等)为100,官方推荐合理的请求限制值为:
Option | Value | Rationale |
最大请求内存 (Max rendering menory) | 16384 KB | 当使用geowebcache或tilecache时,16MB足以以每像素4字节(全色和透明)的速度渲染2048x2048图像,或渲染8x8元图块。请注意,渲染过程对SLD中的每个FeatureTypeStyle使用单独的内存缓冲区,因此这也会影响最大图像大小。例如,如果一个sld包含两个featuretypestyle元素以绘制公路的cased线,则最大图像大小将限制为1448x1448(内存需求随着图像尺寸的乘积而增加,因此将内存减半只会使图像尺寸减少约30%) |
最大渲染时间 (max rendering time) | 120 s | 不管当前服务器负载如何,处理整整两分钟的请求可能会呈现太多的功能。这可能是由于使用不具有适当规模依赖关系的样式对大层的请求导致的。 |
最大渲染错误数 (max rendering errors) | 100 | 遇到100个错误可能是请求试图将大数据集重新投影到不适合输出范围的投影中的结果,从而导致许多重新投影失败。 |