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
相关产品推荐
相关产品推荐

