NCWMS WMS扩展支持¶
这个 NCWMS模块 为GeoServer添加了支持WMS协议和配置的某些ncWMS扩展的能力。特别地:
通过简单地提供一个颜色列表来创建命名样式的能力,它将根据请求参数及其统计信息来适应正在使用的层。
能够通过许多额外参数控制getmap中的调色板应用程序
getTimeSeries操作,它可以检索某个点上时间序列值的csv或xy图表。
在编写提取高程系列的额外调用时,不支持横断面和netcdf元数据。然而,扩展并不是特定于netcdf的,而是可以与任何单个带状栅格层一起使用。
动态调色板样式格式¶
添加了新的“动态调色板”样式格式,它接受调色板,每行一种颜色,定义要应用于栅格数据的颜色行进。可以使用这些可能的语法(与ncwms相同)定义每种颜色:
#RRGGBB
#AARRGGBB
0xRRGGBB
0xAARRGGBB
可以通过以百分号开头的行在文件中添加注释。例如,从红到蓝的进程可能如下所示:
% Red to blue progression
#FF0000
#0000FF

配置动态调色板样式¶
几个现成的调色板来自流行的“彩色啤酒厂”网站可在 ncWMS source code repository .
调色板动态转换为SLD,并使用 动态颜色映射生成 尤其是模块,上面的样式转换为以下样式:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">
3 <sld:NamedLayer>
4 <sld:Name/>
5 <sld:UserStyle>
6 <sld:Name/>
7 <sld:FeatureTypeStyle>
8 <sld:Transformation>
9 <ogc:Function name="ras:DynamicColorMap">
10 <ogc:Function name="parameter">
11 <ogc:Literal>data</ogc:Literal>
12 </ogc:Function>
13 <ogc:Function name="parameter">
14 <ogc:Literal>opacity</ogc:Literal>
15 <ogc:Function name="env">
16 <ogc:Literal>OPACITY</ogc:Literal>
17 <ogc:Literal>1.0</ogc:Literal>
18 </ogc:Function>
19 </ogc:Function>
20 <ogc:Function name="parameter">
21 <ogc:Literal>colorRamp</ogc:Literal>
22 <ogc:Function name="colormap">
23 <ogc:Literal>rgb(255,0,0);rgb(0,0,255)</ogc:Literal>
24 <ogc:Function name="env">
25 <ogc:Literal>COLORSCALERANGE_MIN</ogc:Literal>
26 <ogc:Function name="bandStats">
27 <ogc:Literal>0</ogc:Literal>
28 <ogc:Literal>minimum</ogc:Literal>
29 </ogc:Function>
30 </ogc:Function>
31 <ogc:Function name="env">
32 <ogc:Literal>COLORSCALERANGE_MAX</ogc:Literal>
33 <ogc:Function name="bandStats">
34 <ogc:Literal>0</ogc:Literal>
35 <ogc:Literal>maximum</ogc:Literal>
36 </ogc:Function>
37 </ogc:Function>
38 <ogc:Function name="env">
39 <ogc:Literal>BELOWMINCOLOR</ogc:Literal>
40 <ogc:Literal>rgba(0,0,0,0)</ogc:Literal>
41 </ogc:Function>
42 <ogc:Function name="env">
43 <ogc:Literal>ABOVEMAXCOLOR</ogc:Literal>
44 <ogc:Literal>rgba(0,0,0,0)</ogc:Literal>
45 </ogc:Function>
46 <ogc:Function name="env">
47 <ogc:Literal>LOGSCALE</ogc:Literal>
48 <ogc:Literal>false</ogc:Literal>
49 </ogc:Function>
50 <ogc:Function name="env">
51 <ogc:Literal>NUMCOLORBANDS</ogc:Literal>
52 <ogc:Literal>254</ogc:Literal>
53 </ogc:Function>
54 </ogc:Function>
55 </ogc:Function>
56 </ogc:Function>
57 </sld:Transformation>
58 <sld:Rule>
59 <sld:RasterSymbolizer/>
60 </sld:Rule>
61 </sld:FeatureTypeStyle>
62 </sld:UserStyle>
63 </sld:NamedLayer>
64 </sld:StyledLayerDescriptor>
上面解释了如何应用调色板:
默认情况下,在最小值和最大值之间生成254种颜色的调色板,加上一种颜色用于最小值以下的内容,另一种颜色用于最大值以上的内容。
可以使用GetMap传递最小值和最大值
env
参数,如果未提供,则从配置的频带统计信息中提取(在层配置中找到)可以控制调色板的整体不透明度(使用介于0和1之间的值以符合SLD不透明度描述)。
刻度可以是线性的,也可以是对数的。

Editing the defaults for min/max scale range values in the GeoServer layer editor¶
以上参数都可以随意使用,通过典型的环境变量方法来控制调色板的生成。但是,也可以使用NCWMS自己的扩展,在请求中添加直接参数。有关详细信息,请参阅以下部分。
NCWMS GetMap扩展¶
该模块还添加了一个动态转换器,它获取NCWMS getmap供应商参数并将其映射到动态调色板期望值。特别是(从NCWMS手册中复制参数描述,带有特定于地理服务器的注释):
colorscalerange:以min,max的形式表示,这是用于绘制数据的比例范围(映射到colorscalerange_min和colorscalerange_max env vars)
numColorBands:绘制数据的离散颜色数。必须介于2和250之间(映射到numColorBands env变量)
AboveMaxColor:绘制超出刻度范围最大端值的颜色。颜色的形式是0xRRGGBB或0xAARRGGBB,它还接受“透明”和“延伸”
belowmincolor:绘制低于刻度范围最小端值的颜色。颜色的形式是0xRRGGBB或0xAARRGGBB,它还接受“透明”和“延伸”
对数刻度:“真”或“假”-是否用对数刻度绘制数据
不透明度:最终输出图像的不透明度百分比,介于0和100之间(通过将其转换为介于0和1之间的数字映射到不透明度env var)
动画:“真”或“假”-是否生成动画。ncWMS文件规定时间必须为
starttime/endtime
,但当前时间需要是离散时间列表。动画要求使用“image/gif”作为响应格式(作为唯一支持动画的格式)
下面是一些基于“ArcSample”ArcGrid采样层的示例,其中包含了年降水量数据。此层提供的一个频段已配置为默认范围0到6000。

采用对数比例
&COLORSCALERANGE=1,6000&LOGSCALE=true
(对数刻度需要正最小值)

在对数模式下只使用5种颜色
&COLORSCALERANGE=1,6000&LOGSCALE=true&NUMCOLORBANDS=5

限制范围并通过添加
&COLORSCALERANGE=100,2000&BELOWMINCOLOR=0xFFFF00&ABOVEMAXCOLOR=0xAAAAAA

NCWMS getCapabilities扩展¶
NcWMS允许用户通过添加 &dataset=datasetName
参数添加到请求中。
虽然geoserver没有数据集的概念,但ncwms扩展允许使用相同的参数按名称对工作区、图层和图层组进行筛选。
例如:
获取“topp”工作区中的所有内容:http://localhost:8080/geoserver/ows?服务=wms&version=1.3.0&request=getCapabilities&dataset=topp
只获取“topp:states”层:http://localhost:8080/geoserver/ows?service=wms&version=1.3.0&request=getcapabilities&dataset=topp:状态
获取“塔斯马尼亚”层组:http://localhost:8080/geoserver/ows?服务=WMS&version=1.3.0&request=getCapabilities&dataset=tasmania
NCWMS GetTimeSeries操作¶
NCWMS提供了一个getTimeSeries操作,该操作可以使用与getFeatureInfo操作类似的语法在某个点上检索值的时间序列。时间序列可以以PNG或JPEG图像中的图表或CSV格式检索。
例如:
以csv:http://localhost:8080/geoserver/wms格式获取时间序列?service=wms&version=1.1.1&request=getTimeSeries&format=image%2fjpeg&time=2008-10-31t00:00:00.000z/2008-11-01t00:00:00.000z&querylayers=watertemp&styles&layers=watertemp&infou format=text%2fsv&featureu count=50&x=50&y=50&srs=epsg%3a4326&width=101&height=101&bbox=3.724365234375%2c40.8142089843751%2c5.943603515625%2c43.03344726562501
以png:http://localhost:8080/geoserver/wms的形式获取时间序列?service=wms&version=1.1.1&request=getTimeSeries&format=image%2fjpeg&time=2008-10-31t00:00:00.000z/2008-11-01t00:00:00.000z&querylayers=watertemp&styles&layers=watertemp&infou format=image%2fpng&featureu count=50&x=50&y=50&srs=epsg%3a4326&width=101&height=101&bbox=3.724365234375%2c40.8142089843751%2C5.9436035156225%2C43.03344726562501
以JPG格式获取时间序列:http://localhost:8080/geoserver/wms?service=wms&version=1.1.1&request=getTimeSeries&format=image%2fjpeg&time=2008-10-31t00:00:00.000z/2008-11-01t00:00:00.000z&querylayers=watertemp&styles&layers=watertemp&infou format=image%2fjpg&featureu count=50&x=50&y=50&srs=epsg%3a4326&width=101&height=101&bbox=3.724365234375%2c40.8142089843751%2C5.9436035156225%2C43.03344726562501
INFO U格式接受以下值: image/png , image/jpg 和 text/csv
时间参数接受WMS标准中为其他操作定义的时间范围(见06-042 Web地图服务器实现规范的附录D)。示例:
TIME=2008-10-31T00:00:00.000Z/2008-11-01T00:00:00.000Z
TIME=2008-10-31T00:00:00.000Z/2008-10-31T00:00:00.000Z
由于GeoServer 2.17,即使ncWMS规范没有明确支持,TIME参数也支持另外两种语法:
时间列表:
例子: TIME=2014-01,2015-01,2016-01,2017-01,2018-01
例子: TIME=2017-01-01T00:00:00Z,2017-02-01T00:00:00Z,2017-01-03T00:00:00Z
在一定范围内的周期时间:
例子: TIME=2015-01/2019-01/P1Y
备注
GeoServer将列表中的缩短时间规范解析为时间范围。因此,像2014-01这样的时间将代表2014年1月的整个月份,因此时间范围:2014-01-01T00:00:00/2014-01-31T23:59:59。
通过周期规范表示的月和年(作为实例P2M,P1Y)被认为分别由30天和365.25天组成。因此,2000-04/2000-12/P1M这样的周期间隔将被解析为从2000年4月到2000年12月的时间瞬间列表,周期为30天:
2000年4月1日00:00:00
2000年5月1日00:00:00
五月 31 2000年00:00:00
六月 30 2000年00:00:00
七月 30 2000年00:00:00
八月 29 2000年00:00:00
九月 28 2000年00:00:00
十月 28 2000年00:00:00
十一月 27 2000年00:00:00
12月 27 2000年00:00:00
因此,如果原始数据集具有每个月第一天的条目,则此请求将仅返回两个值:4月01和5月01。在这种情况下,您可以考虑在层的时间维度上启用最接近匹配。
示例csv输出:
# Latitude: 40.396728515625
# Longitude: -0.6921386718750019
Time (UTC),Temperature (degrees)
2014-01-01T00:00:00.000Z,0.4194810092449188
2014-02-01T00:00:00.000Z,0.8373379707336426
2014-03-01T00:00:00.000Z,3.1670899391174316
2014-04-01T00:00:00.000Z,4.932330131530762
示例图表输出:

注: 由于GeoServer 2.17,结果图表中不会报告nodata像素。此外,CSV列表中与nodata像素相关的条目将报告时间,但不会报告像素值,如下例所示,用于时间2014-02-01和2014-05-01:
# Latitude: 40.396728515625
# Longitude: -0.6921386718750019
Time (UTC),Temperature (degrees)
2014-01-01T00:00:00.000Z,0.4194810092449188
2014-02-01T00:00:00.000Z,
2014-03-01T00:00:00.000Z,3.1670899391174316
2014-04-01T00:00:00.000Z,4.932330131530762
2014-05-01T00:00:00.000Z,
2014-06-01T00:00:00.000Z,0.8373379707336426
NcWMS扩展配置¶
NcWMS扩展在WMS管理页面底部添加一个面板:

期权 |
描述 |
---|---|
GetTimeSeries线程池大小 |
用于计算GetTimeSeries结果的线程池大小(并行化以加速计算) |
GetTimeSeries中的最大次数 |
GetTimeSeries将处理的最大次数。请求更多次数的用户将得到服务异常。配置是在管理员第一次点击保存在WMS页面时设置的,即使值为0(从那时起,GetTimeSeries将独立于WMS最大维度设置)。 |