[postgis-users] selecting a time window

tasneem dewaswala tasneem.europe at gmail.com
Tue Jan 15 09:28:12 PST 2013


Thanks for you replies,

Francois, yes it is a regular time window from beginning to end,
but i din't understand clearly Nicolas solution, is there any other simpler
way to do this.

On Mon, Jan 14, 2013 at 5:02 PM, Francois Hugues
<hugues.francois at irstea.fr>wrote:

> **
> Hello,
>
> I was answering in a similar way to build lines from your data, but I
> wondered about the time window strategy and its origin. Is it :
> 1. a regular time from the beginning to the end of your data as Nicolas
> solution ?
> 2. a time window for each message : one second before and one second after
> message of interest or two second before message of interest or two second
> after message of interest ?
>
> In the second case, I think you should use a for loop.
>
> Hugues.
>
>
>
>  ------------------------------
> *From:* postgis-users-bounces at lists.osgeo.org [mailto:
> postgis-users-bounces at lists.osgeo.org] *On Behalf Of *Nicolas Ribot
> *Sent:* Sunday, January 13, 2013 8:12 PM
> *To:* PostGIS Users Discussion
> *Cc:* PostGIS Users Discussion
> *Subject:* Re: [postgis-users] selecting a time window
>
>  Hi,
>
> One approach could be to generate 2 seconds intervals from the start time
> to the end time and then find records that fall in these intervals.
> You could then group values by interval, or generate linestrings based on
> the grouped values.
>
> The following example uses CTE to express intermediate tables:
>
> The mgs table has the following structure:
>
>                  Table « public.msg »
>  Colonne  |           Type           | Modificateurs
> ----------+--------------------------+---------------
>  id       | integer                  | non NULL
>  utc_time | timestamp with time zone |
>  lat      | double precision         |
>  lon      | double precision         |
> Index :
>     "msg_pkey" PRIMARY KEY, btree (id)
>
>  1) count the total number of messages within a 2 sec time window, for
> e.g. msg 1,2,3,4 falls under 2 sec time window,
>      similarly 5,6,7,8 in next 2 sec.
>
> -- generates time buckets of 2 seconds in the range of available times
> with buckets as (
> select generate_series(min(utc_time), max(utc_time), interval '2') as t
> from msg
> )
> -- associates times with buckets
> , ranges as (
> select m.id, m.utc_time, m.lon, m.lat, b.t
> from msg m , buckets b
> where utc_time >= t and utc_time < (t + interval '2')
> order by utc
> )
> -- counts the number of utc_times in each time range
> select count(utc_time), t
> from ranges
> group by t
> ;
>
>   2) draw a linestring using lat/lon values in that 2 sec i.e line from
> msg 1 to msg 4:
>
> Same query as above, except this time points are built from coordinates,
> then collected into an array and finally passed to st_makeLine to generate
> geometries.
>
> with buckets as (
> select generate_series(min(utc_time), max(utc_time), interval '2') as t
> from msg
> )
> -- flags times in the range of 2s from given times
> , ranges as (
> select m.id, m.utc_time, m.lon, m.lat, b.t
> from msg m , buckets b
> where utc_time >= t and utc_time < (t + interval '2')
> order by utc
> ) select st_makeLine(array_agg(st_makePoint(lon, lat))) as geom, t
> from ranges
> group by t;
>
> Nicolas
>
>
> On 12 January 2013 15:42, tasneem dewaswala <tasneem.europe at gmail.com>wrote:
>
>> Hello,
>>
>> I have following data with me
>>
>> Msg         UTC_Time          Lat                      Lon
>>
>>    1            133552.25      56.670042           12.862099
>>   2            133552.75      56.6700403333    12.8621025
>>   3            133553.25      56.670037           12.862107
>>   4            133553.5        56.670035           12.8621096667
>>   5            133554.25      56.6700311667    12.8621146667
>>   6            133554.75      56.6700303333    12.8621158333
>>   7            133555.25      56.6700295         12.8621173333
>>   8            133555.75      56.6700286667    12.8621181667
>>
>> I need to do following operations
>> 1) count the total number of messages within a 2 sec time window, for
>> e.g. msg 1,2,3,4 falls under 2 sec time window,
>>     similarly 5,6,7,8 in next 2 sec.
>> 2) draw a linestring using lat/lon values in that 2 sec i.e line from msg
>> 1 to msg 4.
>>
>> i don't know how can i do this, please give me some suggestions
>> i am using c# for programming and my postgresql version is
>> "PostgreSQL 8.4.14, compiled by Visual C++ build 1400, 32-bit"
>>
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130115/8f6ca0c9/attachment.html>


More information about the postgis-users mailing list