首页 > 解决方案 > 底图的 drawgreatcirlces() 函数无法将浮点 NaN 转换为整数

问题描述

我正在使用 Google Colab 运行我的程序。

在这个程序中,我试图使用 matplotlib-basemap 从温哥华港到孟买港画一个大圆圈。

收到错误“无法将浮点 NaN 转换为整数”。

代码在这里:

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

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

mulon = 18.9483
mulat = 72.8442
vanlon = 49.2889
vanlat = 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()

当我运行此代码时,解释器返回以下内容:

ValueError                                Traceback (most recent call last)
<ipython-input-5-e58daae598d7> in <module>()
     13 vanlat = 123.1115
     14 
---> 15 map.drawgreatcircle(mulon, mulat, vanlon, vanlat, color='b')
     16 
     17 map.drawcoastlines()

/usr/local/lib/python3.7/dist-packages/mpl_toolkits/basemap/__init__.py in drawgreatcircle(self, lon1, lat1, lon2, lat2, del_s, **kwargs)
   2887         gc = pyproj.Geod(a=self.rmajor,b=self.rminor)
   2888         az12,az21,dist = gc.inv(lon1,lat1,lon2,lat2)
-> 2889         npoints = int((dist+0.5*1000.*del_s)/(1000.*del_s))
   2890         lonlats = gc.npts(lon1,lat1,lon2,lat2,npoints)
   2891         lons = [lon1]; lats = [lat1]

ValueError: cannot convert float NaN to integer

标签: pythonmatplotlib-basemap

解决方案


推荐阅读