我有一个卫星数据的二维数组,以及两个相应的二维数组,给出每个像素的纬度和经度。
数据数组是一个掩码数组。
当我使用 pcolormesh 绘制它时,它看起来像这样:
m.pcolormesh(lon, lat, data)
我正在尝试将此数据网格化到 0.25x0.25 度网格上。
lonGrid = arange(0, 360, 0.25)
latGrid = arange(-90, 90 0.25)
dataGridded = griddata(lon.ravel(),lat.ravel(),data.ravel(),latGrid,lonGrid, interp='linear')
m.pcolormesh(lonGrid, latGrid, dataGridded)
这个错误似乎与 pcolormesh
填充屏蔽值之间的空间有关。但我不确定如何解决这个问题。
谢谢
编辑:
我能够使用 griddata 的 scipy 版本来使其工作......但它的速度要慢得多,而且语法也更笨拙。我仍然希望得到一些帮助,让上面的 mpl(?) 版本正常工作
from scipy.interpolate import griddata as griddata2
lonGrid,latGrid = meshgrid(lonGrid,latGrid)
dataGrid = griddata2((lon.ravel(),lat.ravel()),data.ravel(),(lonGrid,latGrid), method = 'linear')
dataGrid = ma.masked_where((dataGrid < 0) | isnan(dataGrid), dataGrid)
m.pcolormesh(lonGrid, latGrid, dataGridded)
最佳答案
以下是一些初步的故障排除想法。
- 您使用的 Numpy 版本是什么?如果是 1.09 或更早版本,如果给定掩码数组,.ravel() 将不会返回掩码数组。请参阅here .
数据数组“wind”变成了“data”。 “数据”真的被掩盖了吗?两人之间发生了什么?更多代码会很有用。
dataGridded = griddata(lon.ravel(),lat.ravel(),XXXX.ravel(),latGrid,lonGrid, interp='linear')
关于python - 绘制已使用 griddata 网格化的屏蔽数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497901/