Kia ora!
I have a route between coordinates a
and b
(e.g. [-41.31001,174.778842]
and [-41.321305, 174.825574]
), with a known traversal time (e.g. 11 minutes).
I wish to identify the coordinate location x < 11
mins along the route.
i.e. if the total route length is 11
mins and x = 8
, is there a function to quickly find the coordinate 72.73%
(8/11
) along the route?
My current method: iterate over every adjacent pair of coordinates in the route (curr
& next
), calculate and sum the time distance between them until I reach x
, and then linearly interpolate a point between the final curr
and next
coordinates. Inefficient.
Ngā mihi,
Mak
Hey,
I’m not aware of any such libraries.
The simplest optimization I can think of is starting at the point that is closer to your coordinate, i.e for your example, starting from the end point and finding the coordinate that is 27.27%
from your end point.
I don’t think you’ll be able to run this a lot faster, but if you’re using the same route multiple times for such calculations, you can probably pre-calculate the relative distance for all points comprising your route, and then be able to run a binary search on your point list.
Best regards
Kia ora jschnell,
Thanks for getting back to me. No worries re: existing methods. Your idea for (potentially) halving compute is a good one.
If ORS were to implement this (or a better version) natively at some stage, it would be fantastic. In the meantime, I’ll make do!
Another question, inbound.
Ngā mihi,
Mak
1 Like