# Heuristics for unsupervised or semi-supervised approaches to GIS coordinate data

I have a more conceptual/heuristic question about how to go about formulating a problem in order to take a semi- or unsupervised method of solving it. I'm working on a project with data collected through a mobile app that allows cyclists to track their rides. Much of this dataset is comprised of coordinate (lat, long) data uploaded from the cyclist's location every second of their ride. So, as one reads down the records within the coordinate table of the database, the ride is represented in chronological order each second of the way with latitude, longitude, speed, and GPS accuracy readings.

One of the tasks for this project is looking at more efficient methods for rendering a web-based map of these rides from these coordinate data, and this typically involves "snapping" the ride coordinates to street coordinates for cleaner drawing of the routes cyclists take (basically, searching for the closest street coordinate as a "ground truth" and matching the cyclist coordinates to that). An idea that has been bounced around is the possibility of using an unsupervised or semi-supervised approach to "snapping" these coordinates by way of measuring similarity between coordinates as more trips are iterated over. The idea is to "snap" cycling coordinates to one another, taking advantage of the fact that many cyclists often travel the same routes over and over.

This strikes me as a type of clustering, but I'm not entirely sure how to make headway on the problem after that. It seems something like K-Means could be a decent starting point for the problem but I have no idea where to begin with (a) setting the value of K, and (b) developing some kind of similarity metric to implement the snapping. Thanks for reading and I apologize for any ambiguity or confusion as I try to work through the problem.