2015-12-21 55 views
1

我有一個具有高程數據init的geotiff柵格數據集。光柵圖像中沒有數據由-9999定義。當我嘗試做與下面這段代碼一個情節:如何通過imshow在python中繪製geotiff數據

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值(或選擇要繪製的值範圍)。

數據的鏈接是:

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

回答

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() 
相關問題