Mayavi显示错误的对象范围

时间:2014-10-26 14:33:56

标签: python vtk mayavi gis

我有拼接的Aster GDEM瓷砖马赛克。当我使用plt.contourf(mosaic.lon1d, mosaic.lat1d, mosaic.elev, 40, cmap=plt.cm.terrain)绘制数据时,一切都已就位并正确显示。 enter image description here

但是,以下代码:

fig = mlab.figure(figure='ICVM', bgcolor=(1,1,1), fgcolor=(0,0,0), size=(1024,786))
mlab.clf()

topo = mlab.surf(mosaic.lat1d, mosaic.lon1d, mosaic.elev, colormap='gist_earth', warp_scale=-1e-4)

mlab.axes(xlabel='lat.', ylabel='lon.')
mlab.outline()

mlab.view(-160, 125, 10, array([26.5,35.,-0.1168]))
mlab.roll(-90)

产生这个图,这是好的,除了纬度从24到29而不是29到34这样的事实。 enter image description here

为什么会这样?我可以改变这个吗?

以下链接会将数据(lat1d, lon1d, elev)下载为.npy文件,以便使用numpy.load读取。 download data zip file: http://goo.gl/nhCNFS

1 个答案:

答案 0 :(得分:1)

如果数组值没有增加(你的lat1d数据正在减少),似乎mayavi有问题。

如果您反转lat1d和elev数组,则会得到正确的图。

fig = mlab.figure(figure='ICVM', bgcolor=(1,1,1), fgcolor=(0,0,0), size=(1024,786))
mlab.clf()

topo = mlab.surf(lat1d[::-1], lon1d, elev[::-1], colormap='gist_earth', warp_scale=-1e-4)

mlab.axes(xlabel='lat.', ylabel='lon.')
mlab.outline()

enter image description here