关于OSRM Server返回坐标缩减及间距的技术问询
OSRM路线坐标相关问题解答
1. 坐标间距与选取规则
OSRM返回的坐标没有固定间距,是根据道路的几何特征动态选取的:
- 直线路段的坐标点会比较稀疏,间距可能达到几百米
- 弯道、岔路口、复杂路况的路段会密集生成坐标点,间距可能只有几米
- 核心目的是用最少的点精准还原道路的实际走向,平衡精度和数据量
2. 缩减坐标数量的方法
完全可以缩减坐标数量,分两种场景处理:
直接通过OSRM请求参数控制
OSRM提供了内置参数来减少返回的坐标量:
- 使用
overview=simplified:这是默认值,若之前用了overview=full,改成simplified会返回经过简化的路线几何,大幅减少坐标数 - 使用
steps=false:如果不需要路线的分步导航点,加上这个参数会去掉步骤相关的额外坐标,只保留主路线的几何点 - 示例请求参数(以OSRM的route接口为例):
/route/v1/driving/{start};{end}?overview=simplified&steps=false
自定义固定间隔取点(如每10英里一个点)
OSRM没有直接支持按固定距离间隔返回坐标的参数,但可以拿到路线数据后自行处理:
- 用Leaflet加载路线后,通过
polyline.getLatLngs()获取所有原始坐标点 - 使用地理计算库(如Turf.js)实现间隔取点:
- 将坐标转换为Turf的LineString对象
- 使用
turf.pointOnLine方法,按指定距离(10英里需转换为米,1英里≈1609.34米)循环取点 - 用取到的点重新生成简化后的路线
- 也可以使用道格拉斯-普克算法(Turf的
turf.simplify)做路线抽稀,虽不是严格按固定间隔,但能在保证形状的前提下大幅减少坐标数
内容的提问来源于stack exchange,提问作者Abraham Arnold
相关产品推荐
相关产品推荐

