Как вывести данные геофизов в Python по imshow

У меня есть наборы растровых данных Geotiff с init данных высоты. Нет данных в растровом изображении, определенном -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 ответ

Решение

Если вам все еще нужно чистое решение этого вопроса, я думаю, что вы ищете массив масок из 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()
Другие вопросы по тегам