如何通过 imshow 在 python 中绘制 geotiff 数据
how to plot geotiff data in python by imshow
我有一个带有高程数据初始化的 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()
问题是当我画图时,它也绘制了无数据值。我的问题是如何从光栅图像中排除 -9999 值(或要绘制的 select 值范围)。
数据的link是:
https://drive.google.com/file/d/0B2rkXkOkG7ExR1VsVW5HQXBhSDQ/view?usp=sharing
如果你仍然需要一个干净的解决方案来解决这个问题,我相信你正在寻找的是来自 numpy.ma
的 masked array,例如:
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()
我有一个带有高程数据初始化的 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()
问题是当我画图时,它也绘制了无数据值。我的问题是如何从光栅图像中排除 -9999 值(或要绘制的 select 值范围)。
数据的link是:
https://drive.google.com/file/d/0B2rkXkOkG7ExR1VsVW5HQXBhSDQ/view?usp=sharing
如果你仍然需要一个干净的解决方案来解决这个问题,我相信你正在寻找的是来自 numpy.ma
的 masked array,例如:
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()