Как отобразить цифровую модель рельефа (DEM) (.raw) с помощью Python? - PullRequest
2 голосов
/ 26 апреля 2019

Я хочу отобразить файл DEM (.raw), используя Python, но с результатом может быть что-то не так.

Ниже мой код:

img1 = open('DEM.raw', 'rb')
rows = 4096
cols = 4096

f1 = np.fromfile(img1, dtype = np.uint8, count = rows * cols)
image1 = f1.reshape((rows, cols)) #notice row, column format
img1.close()

image1 = cv2.resize(image1, (image1.shape[1]//4, image1.shape[0]//4))
cv2.imshow('', image1)
cv2.waitKey(0)
cv2.destroyAllWindows()

И я получилэтот результат: результат отображения

Оригинальный файл DEM находится здесь: DEM.raw

1 Ответ

2 голосов
/ 28 апреля 2019

В вашем коде нет ничего плохого, это то, что есть в вашем файле.Вы можете преобразовать его в JPEG или PNG с помощью ImageMagick в командной строке следующим образом:

magick -size 4096x4096 -depth 8 GRAY:DEM.raw result.jpg

И вы получите почти то же самое:

enter image description here

Проблема в другом месте.

Принимая подсказку от Фреда (@ fmw42) и играя, ой, я имею в виду "экспериментируя тщательно и научно", я могу получить более вероятный результат, если обработать ваше изображение как 4096x2048 пикселей с 16 байтами в секунду и MSB с первым порядком байтов:

magick -size 4096x2048 -depth 16 -endian MSB gray:DEM.raw  -normalize result.jpg 

enter image description here

...