AWS Location Services Route Calculator是否支持交通延误数据查询?
AWS Location Services Route Calculator是否支持交通延误数据?
核心结论
AWS Location Services的Route Calculator支持交通延误数据,但取决于你使用的数据源提供商以及参数配置,这也是你当前结果未体现拥堵差异的原因。
问题原因分析
你提到同一路线凌晨2点和上午11点的计算时间差异极小,但Here Maps手动查询有40分钟延误,大概率是因为你当前使用的Route Calculator是Esri数据源:
- Esri的Route Calculator默认基于「自由流速度」计算行程时间,不支持结合
DepartureTime参数考虑实时/历史交通拥堵,无论出发时间如何,结果都不会体现延误。 - 而Here作为数据源的Route Calculator,会根据你指定的
DepartureTime(或DepartNow=True)自动结合该时间点的实时交通(时间接近当前)或历史交通模式(未来/过去时间)计算带延误的行程时间,和Here Maps的手动查询结果一致。
解决方案
- 检查并切换数据源
登录AWS控制台,进入Location Services -> Route Calculators,查看你使用的calculator_name对应的「Provider」字段。如果是Esri,创建一个新的Route Calculator,选择Here作为提供商。 - 确保参数正确
你的现有代码参数配置是正确的:- 已设置
DepartureTime(需为ISO 8601格式,如2024-05-20T11:00:00Z) - 已指定
TravelMode='Car'
切换到Here数据源的计算器后,重新调用API即可得到包含交通延误的行程时间。
- 已设置
你提供的测试数据与代码
测试数据
| Town1 | Town2 | Mile 2 | Mile 8 | Mile 16 | Mile 23 | Time 2 | Time 8 | Time 16 | Time 23 |
|---|---|---|---|---|---|---|---|---|---|
| ACTON | CHARLEMONT | 86.56 | 86.56 | 87.98 | 87.98 | 103.68 | 103.89 | 104.95 | 104.31 |
| ACTON | CHARLESTOWN | 23.43 | 23.43 | 22.98 | 23.43 | 38.09 | 38.14 | 44.33 | 42.89 |
代码实现
def initialize_amazon_client(aws_access_key_id, aws_secret_access_key): """Initialize and return an Amazon Location Service client.""" session = boto3.Session( aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name='us-east-1' ) return session.client('location') client = initialize_amazon_client(aws_access_key_id, aws_secret_access_key) response = client.calculate_route( CalculatorName=calculator_name, DeparturePosition=origin, DestinationPosition=destination, TravelMode='Car', DepartNow=False, DepartureTime=departure_time, DistanceUnit='Miles', CarModeOptions={ 'AvoidFerries': False, 'AvoidTolls': False } )
内容的提问来源于stack exchange,提问作者Jorge
相关产品推荐
相关产品推荐

