如何通过imshow在python中绘制geotiff数据

时间:2015-12-21 14:47:23

标签: plot mayavi mayavi.mlab

我有一个带有高程数据init的geotiff栅格数据集。 -9999未定义光栅图像中的数据。当我尝试用下面的代码制作情节时:

import gdal
import numpy as np
from mayavi import mlab

ds = gdal.Open('data.tif')
dem = ds.ReadAsArray()
gt = ds.GetGeoTransform()
ds = None

mlab.imshow(dem)
mlab.colorbar()
mlab.show()

问题是当我制作情节时,它也会绘制nodata值。我的问题是如何从光栅图像中排除-9999值(或选择要绘制的值范围)。

数据链接是:

https://drive.google.com/file/d/0B2rkXkOkG7ExR1VsVW5HQXBhSDQ/view?usp=sharing

1 个答案:

答案 0 :(得分:2)

如果你仍然需要一个干净的解决方案来解决这个问题,我相信你所寻找的是来自numpy.ma蒙面数组,如:

import gdal
import numpy as np
from mayavi import mlab

ds = gdal.Open('data.tif')
dem = ds.ReadAsArray()

msk = dem==-9999 # boolean array with True at elements to be masked
dem = np.ma.array(data=dem, mask=msk, fill_value=np.nan)

gt = ds.GetGeoTransform()
ds = None

mlab.imshow(dem)
mlab.colorbar()
mlab.show()