如何使用 Python 显示数字高程模型 (DEM) (.raw)?
How can display a Digital Elevation Model (DEM) (.raw) using Python?
我想使用 Python 显示 DEM 文件 (.raw),但结果可能有问题。
下面是我的代码:
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()
我得到了这个结果:
display result
原来的DEM文件放在这里:DEM.raw
您的代码没有任何问题,这就是您文件中的内容。您可以在命令行中使用 ImageMagick 将其转换为 JPEG 或 PNG,如下所示:
magick -size 4096x4096 -depth 8 GRAY:DEM.raw result.jpg
你会得到几乎相同的结果:
问题在别处。
听取 Fred (@fmw42) 的提示并四处游玩,哎呀我的意思是 "experimenting carefully and scientifically",如果我处理您的图像,我可以获得更有可能的结果为 4096x2048 像素,16 bpp 和 MSB first endianness:
magick -size 4096x2048 -depth 16 -endian MSB gray:DEM.raw -normalize result.jpg
我想使用 Python 显示 DEM 文件 (.raw),但结果可能有问题。
下面是我的代码:
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()
我得到了这个结果: display result
原来的DEM文件放在这里:DEM.raw
您的代码没有任何问题,这就是您文件中的内容。您可以在命令行中使用 ImageMagick 将其转换为 JPEG 或 PNG,如下所示:
magick -size 4096x4096 -depth 8 GRAY:DEM.raw result.jpg
你会得到几乎相同的结果:
问题在别处。
听取 Fred (@fmw42) 的提示并四处游玩,哎呀我的意思是 "experimenting carefully and scientifically",如果我处理您的图像,我可以获得更有可能的结果为 4096x2048 像素,16 bpp 和 MSB first endianness:
magick -size 4096x2048 -depth 16 -endian MSB gray:DEM.raw -normalize result.jpg