You should be able to run a SQL statement using the PostGIS function [ST_LineLocatePoint][1] to select the relative distance along the route. You will need a single route, a filter for the max distance from the route, and an order by clause. This is untested, but should get you started: Select points.pointID from points, rountes where rountes.routeID = :routeid and ST_Intersects(points.pointShape, ST_Buffer(route.rounteShape, 50000)) order by ST_LineLocatePoint(route.rounteShape, points.pointShape); You could filter by ST_Distance(points.pointShape, route.routeShape) <= 50000, but I'm not sure if that is going to use the spatial index. [1]: https://postgis.net/docs/ST_LineLocatePoint.html ********