Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I need to store a series of GPS points with timestamps in the database (traces of various vehicles).

I am wondering which of two approaches to choose for storing them in the PostGIS table: 1.) Each point in own row with separate column for timestamp and one for track ID

2.) Use Linestring or MultiLineString with fourth M coordinate which would contain UNIX timestamp of the time for the point on the track. This would mean single row for each separate track.

share|improve this question

2 Answers 2

up vote 2 down vote accepted

It depends on what you will want to do with the data once they are loaded in the database. If each data point has associated attributes in addition to time (e.g., engine temperature reading, a photo) or of you will want to use the point data in an analysis, then storing each datum in its own row is a good choice.

If each track has associated attributes (e.g., event name) or your analyses will be on tracks (e.g., find track crossings), then it makes more sense to store each as a (MULTI)LINESTRING.

If you choose one approach it won't prevent you from doing the analyses in the other. It will just require some extra steps.

share|improve this answer

Personally I store data collected by my GPS unit as a point layer with a time stamp field, then I can use ST_Makeline if I need the line strings. If you have Postgres 9.0+ you can use an ORDER BY in your aggregate calls to make sure the line goes from point to point in chronological order. I lose the M values along the created lines, but if I need them I always have the point layer I can throw on in the background.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.