[postgis-users] Create Linestrings from multiple Points stored in other table

Nenad Nikolic nnikolic88 at gmail.com
Wed Sep 19 08:57:42 PDT 2012


As the subject suggests I need to create Linestrings by connecting Points.I
have one table locations that looks like this:

CREATE TABLE locations
(
userid integer NOT NULL DEFAULT 0,
"time" integer NOT NULL DEFAULT 0,
"timestamp" bigint,
the_geom geometry(Point,4326),
CONSTRAINT locations_pkey PRIMARY KEY (userid , "time" )
)

Basically it's a table with a lot of locations with Point geometries. Field
'time' is relative timestamp, from 0 to 179. So for every "userid" there is
180 entries with 180 locations.


What i need to do here is to create a new table which will have one
Linestring per "userid", which was calculated from Points in locations
table, of course in correct order defined in "time" attribute. So new table
should look like this:

CREATE TABLE trajectories (
userid int NOT NULL default '0',
the_geom geometry(Linestring, 4326),
PRIMARY KEY ( userid )
)

I can't find a way to do that. Is it even possible to connect multiple
points (in this problem 180 of them) to one Linestring with st_makeline?

I tried something like this

SELECT St_MakeLine(the_geom) as the_route, bp.userid
FROM (SELECT userid, the_geom, "time"
           FROM locations
           ORDER BY "time") bp
GROUP BY bp.userid
ORDER BY bp.userid;

But result has geometries field empty...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20120919/0975ba76/attachment.html>


More information about the postgis-users mailing list