<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
h3
        {mso-style-priority:9;
        mso-style-link:"Heading 3 Char";
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:13.5pt;
        font-family:"Times New Roman","serif";
        font-weight:bold;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.Heading3Char
        {mso-style-name:"Heading 3 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 3";
        font-family:"Times New Roman","serif";
        font-weight:bold;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1326082577;
        mso-list-type:hybrid;
        mso-list-template-ids:890784774 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi All,<o:p></o:p></p><p class=MsoNormal>I am new to OpenLayers, but I have read the intro book “OpenLayers Beginners Guide.”  This is a pretty wordy email, so sorry about any inconvenience to readers.  But I have a number of questions.  I am looking into the possibility of an application that displays time-tagged geo points on a map, and then stores the data for later playback.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I saw  an example which displayed map raster and vector data over a period of time at <a href="http://dev.openlayers.org/sandbox/mpriour/temporal_map/openlayers/examples/time-control.html">http://dev.openlayers.org/sandbox/mpriour/temporal_map/openlayers/examples/time-control.html</a>   <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This example seemed different from the examples in the “Beginner’s Guide”, since the vector data (layer storm_wms in the code shown below, which shows a graphical representation of the eye of the Hurricane and the winds around it) was not created in the client-side OpenLayers code, but rather obtained from a WMS (raster?) layer.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here are my questions: <o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]>This example uses the OpenLayers.Control.TimeManager capability to step all the data sources through time.  But this TimeManager functionality does not seem to be in the OpenLayers version which I downloaded recently (2.11).  I notice that the path for the time-control.html link above includes the word “sandbox”.  For software projects should one stay with the official OpenLayers download for applications rather than using code from a sandbox?<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]>How does one convert vector data to raster data using OpenLayers?  Can this be done in real time, for example if some point data was received at various times, and one wanted to save it for playback later?<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]>How does one save the raster data with time tags, so that it can be accessed as it is done here for a specific time?  In these examples the data is accessed via OpenLayers.Layer.WMS, but if one wanted to save ones own data, are there directions for how to save time-stamped data like this (would it be in some kind of dated directory structure, or in a database with time as key?).  How is it done at these web sites?   I looked at   <a href="http://mesonet.agron.iastate.edu/docs/nexrad_composites/">http://mesonet.agron.iastate.edu/docs/nexrad_composites/</a>  and I found this info below, but I was hoping for more detailed step-by-step directions.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Dave Welchons<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Info from <a href="http://mesonet.agron.iastate.edu/docs/nexrad_composites/">http://mesonet.agron.iastate.edu/docs/nexrad_composites/</a> :<o:p></o:p></p><h3 style='background:white'><span style='font-family:"Arial","sans-serif";color:black'>Web Map Service (WMS)<o:p></o:p></span></h3><p style='background:white;orphans: 2;text-align:-webkit-auto;widows: 2;-webkit-text-size-adjust: auto;-webkit-text-stroke-width: 0px;word-spacing:0px'><span style='font-size:13.5pt;font-family:"Arial","sans-serif";color:black'>A special way you can interface with this data archive is via the Web Map Service that also supports time based retrieval (<a href="http://www.opengeospatial.org/standards/wms"><span style='color:#000099'>WMS-T</span></a>). Point your WMS-T aware app at:</span><span class=apple-converted-space><span style='font-family:"Arial","sans-serif";color:black'> </span></span><span style='font-size:13.5pt;font-family:"Arial","sans-serif";color:black'><br></span><code><span style='font-size:10.0pt;color:black'>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?</span></code><span class=apple-converted-space><span style='font-size:10.0pt;font-family:"Courier New";color:black'> </span></span><span style='font-size:13.5pt;font-family:"Arial","sans-serif";color:black'><br>The</span><span class=apple-converted-space><span style='font-family:"Arial","sans-serif";color:black'> </span></span><i><span style='font-size:13.5pt;font-family:"Arial","sans-serif";color:black'>nexrad-n0r-wmst</span></i><span class=apple-converted-space><span style='font-family:"Arial","sans-serif";color:black'> </span></span><span style='font-size:13.5pt;font-family:"Arial","sans-serif";color:black'>layer is time aware!<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>time-control.html :<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><!DOCTYPE html><o:p></o:p></p><p class=MsoNormal><html><o:p></o:p></p><p class=MsoNormal>  <head><o:p></o:p></p><p class=MsoNormal>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><o:p></o:p></p><p class=MsoNormal>    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"><o:p></o:p></p><p class=MsoNormal>    <meta name="apple-mobile-web-app-capable" content="yes"><o:p></o:p></p><p class=MsoNormal>    <title>OpenLayers: WMS + Time</title><o:p></o:p></p><p class=MsoNormal>    <link rel="stylesheet" href="../theme/default/style.css" type="text/css"><o:p></o:p></p><p class=MsoNormal>    <link rel="stylesheet" href="style.css" type="text/css"><o:p></o:p></p><p class=MsoNormal>    <style><o:p></o:p></p><p class=MsoNormal>        .tallmap{<o:p></o:p></p><p class=MsoNormal>            width: 700px;<o:p></o:p></p><p class=MsoNormal>            height: 500px;<o:p></o:p></p><p class=MsoNormal>            border: 1px solid #ccc;<o:p></o:p></p><p class=MsoNormal>        }<o:p></o:p></p><p class=MsoNormal>    </style><o:p></o:p></p><p class=MsoNormal>    <script src="../lib/OpenLayers.js"></script><o:p></o:p></p><p class=MsoNormal>    <script type="text/javascript"><o:p></o:p></p><p class=MsoNormal>        var map, pts_wms, line_wms, radii_wms, osm;<o:p></o:p></p><p class=MsoNormal>        function init(){<o:p></o:p></p><p class=MsoNormal>            osm = new OpenLayers.Layer.OSM();<o:p></o:p></p><p class=MsoNormal>            <o:p></o:p></p><p class=MsoNormal>            map = new OpenLayers.Map('map', {<o:p></o:p></p><p class=MsoNormal>                allOverlays: false,<o:p></o:p></p><p class=MsoNormal>                projection: 'EPSG:900913',<o:p></o:p></p><p class=MsoNormal>                maxExtent: osm.maxExtent.clone(),<o:p></o:p></p><p class=MsoNormal>                maxResolution: osm.maxResolution<o:p></o:p></p><p class=MsoNormal>            });<o:p></o:p></p><p class=MsoNormal>            <o:p></o:p></p><p class=MsoNormal>            startTime = OpenLayers.Date.parse('2011-08-18T12:00:00.000Z').toISOString();                                      <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>            storm_wms = new OpenLayers.Layer.WMS("Irene Eye & Storm Winds",<o:p></o:p></p><p class=MsoNormal>            "http://mapstory.demo.opengeo.org:8080/geoserver/wms", {<o:p></o:p></p><p class=MsoNormal>                                                                layers: "irene_11_pts,irene_11_radii",<o:p></o:p></p><p class=MsoNormal>                                                                transparent: true,<o:p></o:p></p><p class=MsoNormal>                                                                format: 'image/png',<o:p></o:p></p><p class=MsoNormal>                                                                srs:'EPSG:900913',<o:p></o:p></p><p class=MsoNormal>                time:startTime<o:p></o:p></p><p class=MsoNormal>                                                },{<o:p></o:p></p><p class=MsoNormal>                                                                metadata: {<o:p></o:p></p><p class=MsoNormal>                    timeInterval: <o:p></o:p></p><p class=MsoNormal>                        ['2011-08-18T12:00:00.000Z','2011-08-29T00:00:00.000Z']<o:p></o:p></p><p class=MsoNormal>                },<o:p></o:p></p><p class=MsoNormal>            singleTile:true,<o:p></o:p></p><p class=MsoNormal>            ratio:1,<o:p></o:p></p><p class=MsoNormal>            transitionEffect:'resize',<o:p></o:p></p><p class=MsoNormal>                                visibility:true<o:p></o:p></p><p class=MsoNormal>                                });<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>        ia_wms = new OpenLayers.Layer.WMS("Nexrad", "http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?", {<o:p></o:p></p><p class=MsoNormal>            layers: "nexrad-n0r-wmst",<o:p></o:p></p><p class=MsoNormal>            transparent: true,<o:p></o:p></p><p class=MsoNormal>            format: 'image/png',<o:p></o:p></p><p class=MsoNormal>            time:startTime<o:p></o:p></p><p class=MsoNormal>        }, {<o:p></o:p></p><p class=MsoNormal>            metadata: {<o:p></o:p></p><p class=MsoNormal>                timeInterval: ['2011-08-18T12:00:00.000Z', '2011-08-29T00:00:00.000Z']<o:p></o:p></p><p class=MsoNormal>            },<o:p></o:p></p><p class=MsoNormal>            singleTile: true,<o:p></o:p></p><p class=MsoNormal>            ratio: 1,<o:p></o:p></p><p class=MsoNormal>            transitionEffect: 'resize',<o:p></o:p></p><p class=MsoNormal>            visibility: true<o:p></o:p></p><p class=MsoNormal>        });<o:p></o:p></p><p class=MsoNormal>        <o:p></o:p></p><p class=MsoNormal>        line_wms = new OpenLayers.Layer.WMS("Irene Storm Track", "http://mapstory.demo.opengeo.org:8080/geoserver/wms", {<o:p></o:p></p><p class=MsoNormal>            layers: "irene_11_lin",<o:p></o:p></p><p class=MsoNormal>            transparent: true,<o:p></o:p></p><p class=MsoNormal>            format: 'image/png',<o:p></o:p></p><p class=MsoNormal>            srs: 'EPSG:900913'<o:p></o:p></p><p class=MsoNormal>        }, {<o:p></o:p></p><p class=MsoNormal>            singleTile: true,<o:p></o:p></p><p class=MsoNormal>            ratio: 1,<o:p></o:p></p><p class=MsoNormal>            transitionEffect: 'resize',<o:p></o:p></p><p class=MsoNormal>            visibility: true<o:p></o:p></p><p class=MsoNormal>        });<o:p></o:p></p><p class=MsoNormal>                                                <o:p></o:p></p><p class=MsoNormal>                                timeCtl = new OpenLayers.Control.TimeManager({<o:p></o:p></p><p class=MsoNormal>                                                units:OpenLayers.TimeUnit.HOURS,<o:p></o:p></p><p class=MsoNormal>                                                step:6,<o:p></o:p></p><p class=MsoNormal>                                                frameRate:0.85<o:p></o:p></p><p class=MsoNormal>                                });<o:p></o:p></p><p class=MsoNormal>                                timeCtl.events.on({<o:p></o:p></p><p class=MsoNormal>                                                'tick': update_date,<o:p></o:p></p><p class=MsoNormal>                                                'reset': update_date,<o:p></o:p></p><p class=MsoNormal>                                                'stop': function(evt){if (evt.rangeExceeded) timeCtl.reset()},<o:p></o:p></p><p class=MsoNormal>                                                scope: timeCtl<o:p></o:p></p><p class=MsoNormal>                                });<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>        map.addControls([timeCtl,new OpenLayers.Control.LayerSwitcher()]);<o:p></o:p></p><p class=MsoNormal>        map.addLayers([osm,ia_wms,line_wms,storm_wms]);<o:p></o:p></p><p class=MsoNormal>        map.zoomToExtent(new OpenLayers.Bounds(-8627260.535278,1425478.519205,-3729202.941056,5496444.989113));<o:p></o:p></p><p class=MsoNormal>                                update_date({<o:p></o:p></p><p class=MsoNormal>                                                object: timeCtl,<o:p></o:p></p><p class=MsoNormal>                                                currentTime: timeCtl.currentTime<o:p></o:p></p><p class=MsoNormal>                                });<o:p></o:p></p><p class=MsoNormal>    }<o:p></o:p></p><p class=MsoNormal>        function update_date(evt) {<o:p></o:p></p><p class=MsoNormal>            var time = this.currentTime||evt.currentTime;<o:p></o:p></p><p class=MsoNormal>                    OpenLayers.Util.getElement('timestamp').innerHTML = time.toString();<o:p></o:p></p><p class=MsoNormal>        }<o:p></o:p></p><p class=MsoNormal>    </script><o:p></o:p></p><p class=MsoNormal>  </head><o:p></o:p></p><p class=MsoNormal>  <body onload="init()"><o:p></o:p></p><p class=MsoNormal>     <h1 id="title"> WMS Time Example - Hurricane Irene Aug 2011</h1><o:p></o:p></p><p class=MsoNormal>        <div id="tags"><o:p></o:p></p><p class=MsoNormal>            wmst, wms-t<o:p></o:p></p><p class=MsoNormal>        </div><o:p></o:p></p><p class=MsoNormal>        <p id="shortdesc"><o:p></o:p></p><p class=MsoNormal>            Shows the use of the TimeManager control with a single simple WMS-T (time) layer served from Geoserver<br><o:p></o:p></p><p class=MsoNormal>                                                Click on the PLAY button to start.<o:p></o:p></p><p class=MsoNormal>        </p><o:p></o:p></p><p class=MsoNormal>                <h2 id="timestamp"></h2>   <o:p></o:p></p><p class=MsoNormal>                <div><o:p></o:p></p><p class=MsoNormal>                                <button type="button" onclick="timeCtl.loop=false;timeCtl.stop()">Stop</button><o:p></o:p></p><p class=MsoNormal>                                &nbsp;|&nbsp;<button type="button" onclick="timeCtl.reset()">Reset</button><o:p></o:p></p><p class=MsoNormal>                                &nbsp;|&nbsp;<button type="button" onclick="timeCtl.loop=true;timeCtl.play()">Loop</button><o:p></o:p></p><p class=MsoNormal>                                &nbsp;|&nbsp;<button type="button" onclick="timeCtl.tick()">Step</button><o:p></o:p></p><p class=MsoNormal>                                &nbsp;|&nbsp;<button type="button" onclick="timeCtl.play()">Play</button><o:p></o:p></p><p class=MsoNormal>                </div><o:p></o:p></p><p class=MsoNormal>    <div id="map" class="tallmap"></div><o:p></o:p></p><p class=MsoNormal>    <div id="docs"><o:p></o:p></p><p class=MsoNormal>        <p>Time Control example: hit PLAY, and the storm position will change along with the<br><o:p></o:p></p><p class=MsoNormal>                                time display. Uses the OpenLayers.Control.TimeManager to update the date<br><o:p></o:p></p><p class=MsoNormal>                                elements with the time of the animation. Starts at Aug 17, 2011 and continues until<o:p></o:p></p><p class=MsoNormal>        Aug 29, 2011 or until you stop it</p><o:p></o:p></p><p class=MsoNormal>    </div><o:p></o:p></p><p class=MsoNormal>  </body><o:p></o:p></p><p class=MsoNormal></html><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>