I have a set of GPS tracks pertaining to a cycling event that happened in the same day. I don't have much geographical information about the event itself, except for the tracklogs I downloaded from a site as GPX.

Along the route, there were some predefined stops that can be clearly seen at the map. These stops have some characteristics spatial and temporal properties (points of speed near zero, segments at random directions, large gaps in the time/distance plot), and is very easy to spot those points visually.

What I like to devise is a way to "detect" those points algorithmically having only the GPX files as input.

Below there is a sample stop point, plotted using Python:

enter image description here

Also included is a very interesting picture taken from 22.2.5 Mining for Movement Patterns in 22.2 Scientific Fundamentals of Computational Movement Analysis in Springer Handbook of Geographic Information. What I am looking for is the "meeting place" pattern. The book just mentions the conceptual framework for that, not how to extract it algorithmically. It is important to note, though, that although every cyclist stopped at the meeting places, the didn't do so necessarily at the same time, so the meeting place is spatial mostly, instead of spatio-temporal.

enter image description here

  • I found the same text from the book available as an article here: geo.uzh.ch/~plaube/pubs/gudmundssonEtal12.pdf Mar 12, 2014 at 13:57
  • 1
    Did you ever find a good solution to your problem?
    – Georg
    Nov 7, 2017 at 7:36
  • @Georg I did not since I quit working on that specific problem due to time constraints (and it was a hobby problem after all). But I've recently read this: "If the magnitude of the time averaged velocity of an activity stream gets too low at any point, subsequent points from that activity are filtered until the activity breaches a specific radius in distance from the initial stopped point." I don't think that would be the best possible solution, but it contains some key concepts, IMO. Nov 7, 2017 at 16:33

2 Answers 2


The MovingPandas library provides stop detection tools. To find the "meeting place", you could afterwards run density-based clustering (e.g. DBSCAN) on the extracted stops.

enter image description here


I am no expert in this field, just thinking out aloud. You could try to break your track up into individual points. Filter out points say above 1mph this leaves a bunch of either non moving or very slowly moving points. Then run some point density tool, this should create a grid where points are most dense which would be your meeting places? This assumes when the cyclists are cycling they tend to go faster than 1mph.

I'm sure there are people out there who can shoot holes in this?

  • I believe filtering is the main part of the solution here. From a GPS track you can generate derived data such as distance and speed. Then you can "cross filter" by the most convenient columns, such as "filter slow points between distances X and Y", since riders will have similar distances when they arrive at a stop point. I plan to post some feedback when I get better results. Thanks for your intrest! Mar 17, 2014 at 14:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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