如何将Google Maps API获取的道路区间而非整条道路用于分析?
如何指定A6高速公路的斯图加特-法兰克福区间供ChatGPT分析
你当前通过get_route_segment函数只能提取到道路编号A6,但要让ChatGPT精准分析斯图加特到法兰克福的特定路段,需要给它提供区间定位信息,以下是几种直接有效的输入方式:
1. 最直接的文本描述
直接结合起止点和道路编号输入:
请分析德国A6高速公路中,从斯图加特到法兰克福的路段
这种方式足够让ChatGPT定位到你需要的区间,无需额外数据。
2. 补充途经节点(提升精准度)
如果需要进一步缩小范围,可以加入路线中的关键途经城镇(比如API返回路线里的海尔布隆):
请分析德国A6高速公路中,斯图加特→海尔布隆→法兰克福的路段
3. 结合经纬度范围(进阶精准)
通过优化你的Python函数,提取该A6路段的起止经纬度,把坐标信息提供给ChatGPT,能实现最精准的区间定位。
优化后的代码示例
import re import googlemaps def get_route_segment_with_coords(api_key, origin, destination): gmaps = googlemaps.Client(key=api_key) route_data = gmaps.directions(origin, destination)[0] route_segment = [] segment_summary = route_data["summary"] # 提取道路编号 if 'and' in segment_summary: route_segment = re.findall(r'\b[A-Z]\d+\b', segment_summary) else: route_segment.append(segment_summary) # 提取目标道路(A6)的起止经纬度 target_road = "A6" road_coords = [] for step in route_data['legs'][0]['steps']: # 检查当前步骤是否使用A6 if target_road in step.get('html_instructions', ''): start_loc = step['start_location'] end_loc = step['end_location'] road_coords.append({ 'start': (start_loc['lat'], start_loc['lng']), 'end': (end_loc['lat'], end_loc['lng']) }) # 合并连续路段的坐标(取第一个起点和最后一个终点) if road_coords: overall_start = road_coords[0]['start'] overall_end = road_coords[-1]['end'] return route_segment, (overall_start, overall_end) else: return route_segment, None
使用方式
调用该函数后,你会得到道路编号和该路段的起止经纬度,比如返回:(['A6'], ((48.7784, 9.1800), (50.1109, 8.6821)))
把这些信息整理后发给ChatGPT:
请分析德国A6高速公路中,从北纬48.7784°东经9.1800°到北纬50.1109°东经8.6821°的路段(对应斯图加特到法兰克福区间)
内容的提问来源于stack exchange,提问作者Ekagra Gupta
相关产品推荐
相关产品推荐

