2013/8/1 Brent Wood <[email protected]> > Hi Lorenzo, > > It is not clear what the geometry type of a waypoint_sessione is. I'm > guessing it is a point, with each point joined by sessione_id to a sessione > table. >
It's right :) > > The polyline approach you mention should work for you. It is not that > difficult to implement as a script, might be trickier as a Postgres UDF. > I don't know Postgres UDF, I'll take a look at it. > > Turn your session points into a (multi?)linestring. > I've put them in LINESTRING, after the clip (I'm trying to resolve the problem into several steps) I've put the in a MULTILINESTRING geometry. > Clip the linestring by the buffer around the point. This will give a > linestring for each seperate period the session track came within the > buffer distance of the point. > For each returned linestring, select the points that match your > requirements (<7km/hr) that intersect the linestring (or perhaps a very > small buffer of it - point/line intersections can be tricky - but this case > should be OK), and from these, select the min/max times. > If these are more than 10 mins apart, check that there are no points > within this interval with speeds of > 7km (if so, then this sequence fails > to meet your criteria), > If not, you have a positive result. > Great, I was not able to find the solution of this step, I'll try. > > HTH, > > Brent Wood > Thanks a lot Brent. l. Lorenzo Perone photoblog: http://lorenzoperone.wordpress.com website: http://blog.spaziogis.it GEO+ geomatica in Italia *http://bit.ly/GEOplus* > > ------------------------------ > *From:* Lorenzo Perone <[email protected]> > *To:* [email protected] > *Sent:* Friday, August 2, 2013 1:09 AM > *Subject:* [postgis-users] Analyze a timeline of geographical events > > Hi, > I'm trying to resolve a not easy (for me) problem. > We are developing a GPS tracking system based on android phones. > The waypoints transmitted by the devices are stored in a Postgis table > called "waypoint_sessione". > The table has this structure. > > TABLE waypoint_sessione > gid bigserial > sessione_id bigint number of the session opened by the device (depends by > user, truck, device) > time_dataora bigint (unix timestamp) > elevazione double precision > direzione double precision > velocita double precision (speed) > pdop double precision > precisione integer > the_geom geometry > > My scope is to discover for each session if a user have spent a lot of > time, more than 10 minutes, stopped whitin a 150 m buffer from known point. > When a device is stopped his speed is not zero, so I need to use a speed > threshold, tipically 7 Km/h. > > I've thought to proceed in this way: > - Create a buffer form the known point > - Select the waypoints in the buffer grouping them by sessione_id > > Here is the first doubt. > If the user, it's easy, pass through the buffer more than one time for > each session I've to group the waypoints non only by session_id but also > for each passage. > I can't use the gid column because in waypoint_sessione are stored datas > from al large number of devices that are transmitting simultaneous. > I could create a polyline for each session and then trim it by the buffer > and select the waypoints that are the same of the node of the polyline for > each part. > Is there a simpler way? > > The step forward is, for each group of waypoints, to discover if I have a > consecutive period of more than 10 minutes during wich the speed is below > the threshold of 7 Km/h. > Discover these periods is my goal. > > Thanks. > lorenzo > > > [email protected] > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users > > >
_______________________________________________ postgis-users mailing list [email protected] http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
