在OSRM中,避免在路由中直接使用点是为了提高性能和减少计算时间。相反,我们可以使用经纬度坐标或节点ID来指定起始点和目标点。
以下是一种解决方法的示例代码:
import osrm
# 创建OSRM客户端
client = osrm.Client(host='http://localhost:5000')
# 使用经纬度坐标进行路由查询
source = (13.37770, 52.51627) # 柏林 Brandenburg 门
target = (13.40485, 52.52001) # 柏林市中心大街
route = client.route(
coordinates=[source, target],
overview=osrm.overview.full
)
print(route)
# 使用节点ID进行路由查询
source_node = 0 # 起始点节点ID
target_node = 1 # 目标点节点ID
route = client.route(
coordinates=[source_node, target_node],
overview=osrm.overview.full
)
print(route)
在示例代码中,我们首先创建了一个OSRM客户端。然后,我们使用经纬度坐标和节点ID分别进行了两次路由查询。这样可以避免直接使用点,提高计算性能。
请注意,实际的节点ID可能需要从OSRM服务器的图数据库中查询得到。此外,示例代码中的http://localhost:5000
是本地OSRM服务器的主机地址,您需要根据自己的设置进行相应更改。