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

Basemap drawgreatcircles()报Cannot convert float NaN to integer错误问询

错误原因

你代码里把两地的经度、纬度数值写反了:

  • 纬度的合法取值范围是-90°~90°,你定义的vanlat = 123.1115远超出合法范围,mulat = 72.8442、vanlon = 49.2889也和实际坐标对应关系不符
  • 无效的坐标输入导致pyproj.Geod.inv()计算两点大圆距离时返回NaN,后续尝试把NaN转为整数就触发了该报错
解决方法

修正四个坐标变量的赋值,把经度、纬度对应到正确的变量名即可,注意温哥华经度为西经,需要写为负值:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

plt.figure(figsize=(12,9))

map = Basemap(projection='mill', 
              llcrnrlat=-90, 
              urcrnrlat=90, 
              llcrnrlon=-180, 
              urcrnrlon=180,
              resolution='c')

# 修正后:孟买坐标 北纬18.9483°,东经72.8442°
mulat = 18.9483
mulon = 72.8442
# 修正后:温哥华坐标 北纬49.2889°,西经123.1115°
vanlat = 49.2889
vanlon = -123.1115

map.drawgreatcircle(mulon, mulat, vanlon, vanlat, color='b')

map.drawcoastlines()

map.drawparallels(np.arange(-90, 90, 10), labels=[True, False, False, False])
map.drawmeridians(np.arange(-180, 180, 30), labels=[False, False, False, True])

plt.title('Basemap', fontsize=20)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:48:01