WMS动画¶
概述¶
标准WMS只能生成静态映射。在许多用例中,生成动画是很重要的。一个明显的例子是基于时间的动画。其他用途包括基于高程的动画,改变SQL视图或SLD替换参数的值,或者改变生成的地图的范围以生成移动视区的外观。
此功能由 WMS动画 提供. WMS动画的工作方式与WMS反射镜类似。它使用提供的部分WMS请求作为模板,并且 动画师参数 用于生成和执行一系列完整的请求。渲染的地图图像合并为一个输出图像(格式支持多帧图像)。
通过使用 wms/animate
请求路径。任何WMS参数都可以设置动画,包括嵌套的参数,如 SLD environment variables . 要定义动画的外观,提供了其他参数:
阿帕拉姆 指定将在每个帧的请求中更改的参数的名称。这可以是任何wms参数,例如
layers
,cql_filter
,bbox
,style
等等。嵌套参数(如format_options
,env
和view_params
参数),使用以下语法支持param:name
(例如,view_params:year
)阿瓦卢 是动画参数为每个帧所具有的值的逗号分隔列表。如果值包含逗号,则必须使用反斜杠对其进行转义。(例如,当提供bbox值时会发生这种情况。)
动画师解析输入值并使用字符串替换生成要执行的WMS请求序列。执行每个生成的请求以生成一个帧。由调用者来确保提供的动画参数产生有效的WMS请求。
例如,要生成一个向东滚动的视图层的动画,WMS BBOX参数给出了一系列值 -90,40,-60,70
, -80,40,-60,70
和 -70,40,-50,70
(注意bbox值中逗号的转义)::
http://localhost:8080/geoserver/wms/animate
?layers=topp:states
&aparam=bbox
&avalues=-90\,40\,-60\,70,-80\,40\,-60\,70,-70\,40\,-50\,70
对于嵌套参数的示例,假设存在名为 selection
使用SLD变量 color
. 以下请求创建一个动画地图,其中选择颜色在红色、绿色和蓝色之间变化:
http://localhost:8080/geoserver/wms/animate
?layers=topp:states,topp:states
&styles=polygon,selection
&aparam=env:color
&avalues=FF0000,00FF00,0000FF
使用WMS动画¶
要调用WMS Animator,请指定路径 wms/animate
而不是 wms
在getmap请求中。
每个动画师请求都必须指定 layers
, aparam
和 avalues
参数。请求中也可以使用任何其他有效的WMS参数。如果省略了任何必要的参数,则动画制作程序将为它们提供合理的默认值。使用以下默认值:
Parameter |
默认值 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定层的边界 |
|
为指定层配置的默认样式 |
这些参数的详细信息如下:
层 :这是唯一必需的标准参数。它是输出映射中要包含的层的逗号分隔列表。
格式 :默认输出格式为 image/png
. 支持的值是 image/jpeg
(适用于栅格背景) image/png8
(8位颜色,较小的文件)和 image/gif
警告
要生成实际的动画图像,格式必须支持动画。目前GeoServer中唯一提供的是 image/gif;subtype=animated
宽度 :描述图像的宽度。它默认为512像素,可以根据指定的高度和边界框的纵横比进行计算。
高度 :描述图像的高度。它可以根据指定的宽度和边界框的纵横比进行计算。
bbox :指定映射帧的范围。默认的边界框由指定图层边界的并集确定。(例如,如果一个图层显示洛杉矶,另一个图层显示纽约,则默认地图显示美国大部分地区。边界框还确定地图的纵横比。如果只有一个 width
或 height
则另一个将根据边界框的纵横比确定。
风格 :默认值是在GeoServer中为中指定的图层配置的默认样式 layers
参数。这可以通过提供以逗号分隔的样式名列表(服务器必须知道)来覆盖。
srs :如果所有层共享相同的SRS,则此值用作默认值。否则,默认值为爱普生:4326(工作组84)。
动画选项¶
动画师提供控制循环和帧速度的选项。这些是使用 format_options
WMS parameter . 可用选项包括:
Option |
Description |
|
如果 |
|
指定帧延迟(毫秒)。默认值为1000 ms。 |
|
指定显示新帧后如何处理前一个GIF帧。有效值为 |
例1¶
请求层 topp:states
,使用默认样式 (demographic
),宽度(512像素)和高度(根据纵横比调整)。这个 aparam=bbox
参数指定输出动画有两个帧,一个使用全世界范围,另一个使用美国范围。这会产生放大的效果:
http://localhost:8080/geoserver/wms/animate
?layers=topp:states
&format=image/gif;subtype=animated
&aparam=bbox
&avalues=-180\,-90\,180\,90,-125\,25\,-67\,50
例2¶
请求层 topp:states
和 sf:restricted
使用 format_options=gif_loop_continuosly:true
请求无限循环动画。输出映射使用默认样式、指定的宽度(640像素)和自动调整为纵横比的高度:
http://localhost:8080/geoserver/wms/animate
?layers=topp:states,sf:restricted
&format=image/gif;subtype=animated
&aparam=bbox
&avalues=-180\,-90\,180\,90,-125\,25\,-67\,50
&format_options=gif_loop_continuosly:true
&width=640
例3¶
以下请求使用 format_options
属于 gif_loop_continuosly:true
和 gif_frames_delay:10
要快速连续地旋转地图图像:
http://localhost:8080/geoserver/wms/animate
?layers=topp:states,sf:restricted
&format=image/gif;subtype=animated
&aparam=angle
&avalues=0,45,90,135,180,225,270,365
&format_options=gif_loop_continuosly:true;gif_frames_delay:10
&width=640
将帧参数显示为装饰¶
可以用 avalue
使用 WMS装饰 text
装饰。当前动画参数值可以通过 avalue
环境变量。(此环境变量也可用于 SLD中的变量替换 )
下面是一个使用装饰的示例,其中显示了帧参数值:
http://localhost:8080/geoserver/wms/animate
?layers=topp%3Aworld
&aparam=time
&avalues=2004-01-01T00:00:00.000Z,2004-02-01T00:00:00.000Z
&format=image/gif;subtype=animated
&format_options=layout:message
它使用以下装饰布局,位于 layouts/message.xml
:
<layout>
<decoration type="text" affinity="bottom,right" offset="6,6">
<option name="message" value="${avalue}"/>
<option name="font-size" value="12"/>
<option name="font-family" value="Arial"/>
<option name="halo-radius" value="2"/>
</decoration>
</layout>
指定WMS动画程序默认行为¶
GeoServer Adinistrator GUI允许为WMS Animator指定一些限制和默认选项。设置是在 Services > WMS 配置界面如下:
前三个选项设置动画输出的服务器限制。可以设置 最大帧数 动画可以包含 最长渲染时间 制作动画和 最大尺寸 整个动画。
默认动画 帧延迟 (以ms表示) 循环行为 和 处置方法 也可以设置。这些值可以通过使用 format_options
参数如上所述。