[mapserver-dev] Adding a time index stamp to returned image.

Basques, Bob (CI-StPaul) bob.basques at ci.stpaul.mn.us
Fri Jul 24 14:30:02 PDT 2015


my SQL looks like this:

 DATA "bbox from (
SELECT
row_number() over (order by accessed_at nulls last) as seq,
client,
extract('epoch' from (%time_idx1%::timestamp + INTERVAL '%min% minute' - accessed_at)::interval) as elapsed,
id, accessed_at, bbox
                        FROM
                                layer_metrics
                        Where
                                accessed_at < (%time_idx1%::timestamp + INTERVAL '%min% minute')
AND
                                accessed_at >= (%time_idx1%::timestamp + INTERVAL '%min% minute' - INTERVAL '10 minute')
AND
client NOT IN ('%172.17.17.97%','%172.17.17.151%')

                                         ) as subquery using unique id using srid=200068"

I tried a modified SQL like so:

SELECT
                                row_number() over (order by accessed_at nulls last) as seq,
                                client,
                                extract('epoch' from ('2015-07-21 08:00:00'::timestamp + INTERVAL '25 minute' - accessed_at)::interval) as elapsed,
                                '2015-07-21 08:00:00'::timestamp + INTERVAL '25 minute' as tstamp,
                                id, accessed_at, to_char(accessed_at - INTERVAL '5 hours', 'HH24:MI:SS') as tstamp --,
                               -- bbox
                        FROM
                                layer_metrics
                        Where
                                accessed_at < ('2015-07-21 08:00:00'::timestamp + INTERVAL '25 minute')
                        AND
                                accessed_at >= ('2015-07-21 08:00:00'::timestamp + INTERVAL '25 minute' - INTERVAL '120 minute')


to get the “tstamp" value in all rows:


1;"172.17.16.150";6860;"2015-07-21 08:25:00";2062502;"2015-07-21 06:30:40+00";"01:30:40"
2;"172.17.16.150";6860;"2015-07-21 08:25:00";2062503;"2015-07-21 06:30:40+00";"01:30:40"
3;"172.17.16.150";6860;"2015-07-21 08:25:00";2062504;"2015-07-21 06:30:40+00";"01:30:40"
4;"172.17.16.150";6860;"2015-07-21 08:25:00";2062505;"2015-07-21 06:30:40+00";"01:30:40"
5;"172.17.16.150";6857;"2015-07-21 08:25:00";2062506;"2015-07-21 06:30:43+00";"01:30:43"
6;"172.17.16.150";6857;"2015-07-21 08:25:00";2062507;"2015-07-21 06:30:43+00";"01:30:43"
7;"172.17.16.150";6857;"2015-07-21 08:25:00";2062508;"2015-07-21 06:30:43+00";"01:30:43"
8;"172.17.16.150";6857;"2015-07-21 08:25:00";2062509;"2015-07-21 06:30:43+00";"01:30:43"
9;"172.17.16.150";6842;"2015-07-21 08:25:00";2062510;"2015-07-21 06:30:58+00";"01:30:58"
10;"172.17.16.150";6842;"2015-07-21 08:25:00";2062511;"2015-07-21 06:30:58+00";"01:30:58”

Which outputs just peachy,  but for some reason a time object won’t come through via an expression for labelling.  I think my problem is I’m trying to do it all in one call.  I didn’t try a whole separate layer . . .anyway, any of the “tstamp” values will work for the label.

bobb





On Jul 24, 2015, at 4:08 PM, Lime, Steve D (MNIT) <Steve.Lime at state.mn.us<mailto:Steve.Lime at state.mn.us>> wrote:

Should be very doable – I like a challenge. You’re not saying much about how you were going about it. I created a quick test that drops the current time in the center of the map where the time is from the now() function in PostgreSQL. See:

  http://maps1.dnr.state.mn.us/cgi-bin/mapserv64?mode=map&map=/usr/local/mapserver/apps/test/timestamp/test.map

If you refresh it you’ll get the timestamp associated. Presumably you could format this to your liking using the various utilities in PostgreSQL. To do this I had to create a dummy table in my database that contained a single dummy column, and I added 1 row to it. That allowed me to get useful SQL generated via MapServer. The timestamp layer looks like:

 LAYER
    NAME “timestamp”
    TYPE POINT
    STATUS DEFAULT

    TRANSFORM FALSE
    UNITS PERCENTAGES

    CONNECTIONTYPE POSTGIS
    CONNECTION “database of your choice”
    DATA "the_geom FROM (SELECT ST_MakePoint(.50, .50) AS the_geom, NOW() AS tstamp, dummy_column FROM dummy_table) AS foo USING UNIQUE dummy_column USING SRID=-1"
    LABELITEM tstamp
    CLASS
      LABEL
        TYPE TRUETYPE
        FONT “verdana-bold”
        COLOR 0 0 0
        SIZE 12
        POSITION CC
      END
    END
  END

To change the location of the point you’d edit the coordinates inside the ST_MakePoint() function. Hope it helps.

Steve

From: mapserver-dev-bounces at lists.osgeo.org<mailto:mapserver-dev-bounces at lists.osgeo.org> [mailto:mapserver-dev-bounces at lists.osgeo.org] On Behalf Of Basques, Bob (CI-StPaul)
Sent: Tuesday, July 21, 2015 4:09 PM
To: mapserver-dev at lists.osgeo.org<mailto:mapserver-dev at lists.osgeo.org>
Subject: [mapserver-dev] Adding a time index stamp to returned image.

All,

I’m using a POSTGRES connection an trying to place a timestamp text chunk into the corner of a image from Postgres.

I’ve got a method for generating a set of images for a time-lapse movie (https://www.dropbox.com/s/7spkctc2mmtfmhc/out4.mp4?dl=0), but need to add a timestamp to each of the images upon output.  I’m not having much luck though outputting a seemingly simple item from Postgres.  Fro some reason TimeStamps are not completely understood by MapServer.  Maybe I need to cast the timestamp to a text string or something . . .

Thoughts??

Thanks

bobb

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20150724/8ba8c2d2/attachment-0001.html>


More information about the mapserver-dev mailing list