You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Folium中绘制两城市间的最短路径连线

解决Folium绘制东京与茂宜岛跨太平洋最短路径的问题

问题描述

使用Python的Folium模块绘制东京(35.6895, 139.6917)与夏威夷茂宜岛(20.7967, -156.3319)的连线时,默认生成的连线会绕经大西洋、欧洲,而非跨太平洋的合理最短路径。原代码如下:

import folium

tokyo = (35.6895, 139.6917)
maui = (20.7967, -156.3319)

# Calculate the midpoint
midpoint = ((tokyo[0] + maui[0]) / 2, (tokyo[1] + maui[1]) / 2)

# Create a map centered around the midpoint
m = folium.Map(location=midpoint, zoom_start=2)

# Draw a line connecting Tokyo and Maui
folium.PolyLine(
    locations=[tokyo, maui],
    color='green',
    weight=2
).add_to(m)

# Add markers for Tokyo and Maui
folium.Marker(location=tokyo, popup='Tokyo').add_to(m)
folium.Marker(location=maui, popup='Maui').add_to(m)

# Save the map to an HTML file
m.save('path_map.html')

当前效果为连线绕经全球西侧,未沿太平洋最短路径绘制。

解决方案

问题根源在于两点经度跨度极大(东京东经139°,茂宜岛西经156°,平面投影下默认选择较短的西侧路径)。只需调整其中一个点的经度为跨太平洋的等效经度,让平面投影中的经度差指向太平洋方向即可:

  • 将茂宜岛的经度从 -156.3319 转换为 203.6681(计算方式:-156.3319 + 360 = 203.6681),此时两点经度差约为64°,平面直线将对应跨太平洋的大圆航线。
  • 同时调整地图中心至太平洋区域,避免地图显示偏向大西洋。

修改后的代码

import folium

tokyo = (35.6895, 139.6917)
# 调整茂宜岛经度为跨太平洋的等效值
maui = (20.7967, 203.6681)  

# 设置地图中心为太平洋区域,替代原中点
map_center = (28, 170)  
m = folium.Map(location=map_center, zoom_start=2)

# 绘制跨太平洋连线
folium.PolyLine(
    locations=[tokyo, maui],
    color='green',
    weight=2
).add_to(m)

# 添加标记(注意标记仍使用原经度,确保显示位置正确)
folium.Marker(location=(35.6895, 139.6917), popup='Tokyo').add_to(m)
folium.Marker(location=(20.7967, -156.3319), popup='Maui').add_to(m)

m.save('pacific_path_map.html')

说明

  • 标记仍使用原经度坐标,确保在地图上的实际位置正确。
  • 调整后的PolyLine会沿太平洋绘制最短路径,符合球面大圆航线的平面投影效果。

内容的提问来源于stack exchange,提问作者Evan Wright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:15:14