Python Basemap中的ValueError?

3

最近我第一次使用Python的Basemap库,昨天我成功地在一个大约有30,000个点的数据集上运行了脚本。但是今天当我添加新的数据集时,脚本停止工作并且报告数值错误。我不知道是什么原因导致的,但是我收到了一个数值错误?

    ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-16fa79cd74a5> in <module>()
     12     longitude = np.array(df[(df['FLOAT'] == x)]['LONGITUDE'])
     13     latitude = np.array(df[df['FLOAT'] == x]['LATITUDE'])
---> 14     m.plot(longitude,latitude, latlon=True)
     15 parallels = np.arange(-90.,90.,10.)
     16 

C:\Anaconda\lib\site-packages\mpl_toolkits\basemap\__init__.pyc in with_transform(self, x, y, *args, **kwargs)
    534             if self.projection in _cylproj or self.projection in _pseudocyl:
    535                 if x.ndim == 1:
--> 536                     x = self.shiftdata(x)
    537                 elif x.ndim == 0:
    538                     if x > 180:

C:\Anaconda\lib\site-packages\mpl_toolkits\basemap\__init__.pyc in shiftdata(self, lonsin, datain, lon_0)
   4775             thresh = 360.-londiff_sort[-2]
   4776             itemindex = len(lonsin)-np.where(londiff>=thresh)[0]
-> 4777             if itemindex:
   4778                 # check to see if cyclic (wraparound) point included
   4779                 # if so, remove it.

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

有人有线索吗?也许数组中有一个数据值不正确?


据我所知,第4776行中的np.where返回的是一个数组,但它应该返回一个单一的值。你的longitudelatitude数组的形状是什么? - Alyssa Haroldsen
当我打印形状值时,它们的输出都是(2140L)。 - Raishin
也就是说,如果你指的是我传递的经度和纬度数组。我不太清楚basemap在那之后到底做了什么。当我切换回旧的csv文件时它可以工作,所以我想可能有一些数据输入错误...只要它是有效的配对,我不知道为什么会导致basemap出问题。新文件中的数据范围通常从-179.829到179.796的经度。纬度与最大值相差很远。 - Raishin
1
如果是这种情况,似乎没有足够的信息来解决问题,除非提供问题数据和代码本身。新旧CSV文件是否相似?如果是这样,请执行差异比较并查看哪些值导致了问题。 - Alyssa Haroldsen
好的,这是30万多条数据记录...我只能想象它与试图绘制延伸到地图边缘之一的线有关。只要我要求它绘制的线不这样做,它似乎工作得很好。 - Raishin
当数据被分成非连续的部分时,我能够将其绘制出来。每一行被分成多个小行,分别在自己的纬度/经度范围内绘制。这并没有引起任何问题。 - Raishin
1个回答

2
这是由底图错误#214引起的。
截至撰写本文时(2016年3月17日),此错误仍然存在,因此您需要找到解决方法:
  • 在绘图之前对数据进行排序。 当然,如果您需要绘制实际的线段,则可能不希望这样做。
  • 将数据分成子部分,就像您所做的那样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接