[Mapserver-dev] Adding a Time extent to Mapserver
Martin, Daniel
DMartin at erac.com
Thu Jan 2 18:13:06 EST 2003
A while ago, I stumbled on to TimeMap - very similar to what you guys are
talking about. It's not open source and I don't suggest it is a solution,
but if you want to see some finished products that have a temporal dimension
to them head over to http://www.timemap.net/
Viewing the demos on that site really opened my eyes to a whole new way of
thinking about GIS. They may give you some ideas on what works and what
doesn't.
-Dan Martin
> -----Original Message-----
> From: Steve Lime [mailto:steve.lime at dnr.state.mn.us]
> Sent: Thursday, January 02, 2003 4:52 PM
> To: morissette at dmsolutions.ca; dgraham at i3.com
> Cc: mapserver-dev at lists.gis.umn.edu
> Subject: Re: [Mapserver-dev] Adding a Time extent to Mapserver
>
>
> I like Dan's idea. It'd be real easy to implement for WMS and for the
> CGI implementation. In fact the bulk of the code is there,
> just needs to
> be applied to the DATA field (EXPRESSION, FILTER and
> CONNECTION already
> support this via the CGI). Might need to generalize the variable
> substitution beyond the CGI though. The definition of a default time
> parameter is not done, easy to add though, just call it
> "time". The only
> missing piece would be some code to ingest a date string and parse it
> into components so that substitutions could be done. One would think
> that code would exist though. Anyone seen such a beast?
>
> Steve
>
> Stephen Lime
> Data & Applications Manager
>
> Minnesota DNR
> 500 Lafayette Road
> St. Paul, MN 55155
> 651-297-2937
>
> >>> Daniel Morissette <morissette at dmsolutions.ca> 12/30/02 02:10PM >>>
> Hi David,
>
> Your suggestion is a good start and would work for several cases, but
> if
> you want to represent 50 years of monthly data then you would need 600
> layers which is not practical in the current mapfile architecture. We
> also need to account for situations like what John H. reported in
> another message where the data is all in a single file (or database
> table) and the selection needs to be made using an attribute filter.
>
> Maybe another potential approach would be to use the equivalent of
> %variable% replacements (added by Steve in CONNECTION strings) in the
> layer parameters, so let's say you receive a getMap request with
> TIME=2002-12-27 for instance, the following variable replacements
> would
> be available (this is just an example, more could be added):
>
> %time% -> "2002-12-27"
> %time-yyyy% -> "2002"
> %time-mm% -> "12"
> %time-dd% -> "27"
> %time-yyyymmdd% -> "20021227"
>
> Then your layer defn could look like this:
>
> LAYER
> DATA "temporal_data/%time-yyyy%/%time-mm%/mydata"
> CLASS
> ...
> END
> END
>
> Or if your data is all in the same table we could use something like
> this:
>
> LAYER
> DATA "temporal_data/mydata"
> FILTER "[StartDate] < '%time%' and [EndDate] > '%time%'"
> CLASS
> ...
> END
> END
>
>
> This would require some special processing in mapwms.c to handle the
> %variable% replacements, but could open lots of possibilities. I'm
> sure
> Steve would have some ideas too since he is the most familiar with the
> mapfile parameters processing. Let's see what he thinks.
>
> Daniel
>
>
> David Graham wrote:
> >
> > Hello everyone:
> >
> > I just got in a request for serving up geospatial data with a
> temporal
> > nature. Basically we would have the same data available for various
> > time. It would likely be served via WMS which does support temporal
> > data. The problem is that Mapserver is not set up to deal with it.
> >
> > In the WMS spec the getCapablilities reads:
> >
> > For a time range:
> > <Extent name="time" default="2000">1990/2000/P1Y<Extent>
> >
> > For a single time:
> > <Extent name="time" default="1998">1998</Extent>
> >
> > For a set of specific times:
> > <Extent name="time"
> >
> default="2002-12-27">2002-01-14,2002-05-18,2002-07-04,2002-10-
> 31,2002-12-27</Extent>
> >
> > The getMap request contains a time attribute that can be set to set
> the
> > request for a certain time.
> >
> > So I have been thinking how to accomplish such a thing in mapserver
> with
> > a minimal amount of code change.
> >
> > I did come up with one senario that seemed like it would not break
> the
> > architecture. Here it is:
> >
> > - Add a wms_min_time and a wms_max_time metadata tag to each layer.
> >
> > - Add a wms_temporal_layer_name metadata tag to each layer.
> >
> > - Reconfigure the WMS capabilities document to present a single
> layer
> > for each unique wms_temporal_layer_name found. The time extent
> would
> > be calculated from the available wms_min_time and wms_max_time
> numbers
> > for every mapserver layer contained in the wms_tempral_layer_name
> group.
> > - i.e. group the mapserver layers together to represent the same
> data
> > across the temporal dimension.
> >
> > - Reconfigure getMap such that if the layer attribute passed by the
> WMS
> > client is a wms_temporal_layer_name it will then use the time
> attribute
> > to look up exactly which mapserver layer is applicable.
> >
> > Now this is one suggestion. I am looking for other suggestions. I
> see
> > that Daniel developed most of the code for the WMS so I would enjoy
> > hearing his take on issue.
> >
> > Dave
> >
> > --
> > David W. Graham
> > Director of Geospatial Applications Development
> > information integration and imaging, LLC
> > 201 Linden St, Third Floor
> > Fort Collins, CO 80524
> > (970) 482-4400
> > dgraham at i3.com
> > http://www.i3.com
> >
>
> _______________________________________________
> Mapserver-dev mailing list
> Mapserver-dev at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-dev
> _______________________________________________
> Mapserver-dev mailing list
> Mapserver-dev at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-dev
>
More information about the mapserver-dev
mailing list