| Home | Products | Issue Tracker | Service Providers | FAQ | Twitter | Download

# MS RFC 111: MapCache Support for animated time series

Date

  2014/05

Author

  Jerome Villeneuve-Larouche

Contact

  jlarouche@mapgears.com

Status

  Draft

Version

  MapCache 1.4

Last Updated

  2014/05/14

## 1. Motivation

Currently if you specify a time frame in a request on a tileset with a timedimension, mapcache simply stacks all the frames onto each other. Another way to show time series is to produce an animated image of the different frames. This implementation will use the Gif format to create an animated version of the time series.

## 2. Implementation details

This implementation only work for single tile request, like a single tile map in OpenLayers, because there is no way to synchronize the animation of multiple Gif tiles on one mapview, seeding multiple tile wouldn’t produce a good result.

### 2.1 Gif Encoding

- New Gif format output using GifLib

- New format write_frames function in MapCache to write an animated Gif

### 2.2 Animation configuration

Adding animation to a time dimension requires two new attributes to it and using the Gif output format.

     <timedimension type="sqlite" default="2012-01-01" animate="true" delay="150">
         <dbfile>mapcache-time.sqlite</dbfile>
             <query>
             select
                 strftime('%Y-%m-%d',start_time)
                 from
                 time
             where
                 source_id=:tileset
             and
                 start_time&gt;=datetime(:start_timestamp,'unixepoch')
             and
                 start_time&lt;=datetime(:end_timestamp,'unixepoch')
             order by
                 end_time
         </query>
     </timedimension>

    <service type="wms" enabled="true">
       <full_wms>assemble</full_wms>
       <resample_mode>bilinear</resample_mode>
       <format>GIF</format>
       <maxsize>4096</maxsize>
    </service>

- The “animate” attribute specifies if we want to animate our timedimension. If it is not present or set to false, we don’t animate.

- The “delay” attribute specifies the delay between two frames in hundreth of a second. If it is not present, it defaults to 100, if it is present but the “animate” attribute isn’t, it will simply be ignored. It also has to be bigger than zero.

  You also have to set the output format, for example in the service, to Gif. If you ask for an animated tileset without the Gif format, MapCache will generate an error message.

## 3. Miscellaneous

- The animation could also be controlled by the service format instead of adding attributes to the timedimension. I think it would make more sense to implement it that way in the code since the core and encoding functions don’t normally use the tileset but the map request and the format.

### 3.1 Backwards Incompatibilities

none expected

### 3.2 Issue Tracking ID

### 3.4 Files Changed

- include/mapacache.h

- lib/configuration.c

- lib/configuration_xml.c

- lib/core.c

- lib/dimension.c

- lib/imageio_gif.c (new)