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

Plot 如何通过imshow在python中绘制geotiff数据,plot,mayavi,mayavi.mlab,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

我有一个带有高程数据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值(或选择要打印的值范围)

数据链接为:


如果您仍然需要一个干净的解决方案来解决这个问题,我相信您需要的是
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()