如何通过 gdal 获取每个像素的高程?

How to get elevation of every pixel by gdal?

我通过gdal读取了一个img文件。我想获得每个像素的高程。 但是我得到的数据是这样的

[[1551 1551 1553 ... 1388 1387 1386]                                                                                     
[1552 1551 1551 ... 1385 1383 1383]                                                                                     
[1551 1548 1549 ... 1386 1381 1380]                                                                                     
...                                                                                                                     
[2047 2049 2046 ...  531  526  528]                                                                                     
[2016 2035 2051 ...  524  522  525]                                                                                     
[1982 2003 2025 ...  518  518  518]]

这是什么意思?数据不全? 有人能帮我吗? 提前致谢。

这只是您在光栅波段上调用 ​​print() 得到的印刷品吗?

您的数据可能是正确的,但是当您打印 np.array 时,它通常会被裁剪,不会向您显示 所有 数据。

它只是意味着在 ... 之间有很多值,但它不会打印这些值。

由于图像可能很大,我不确定像这样显示这些值是否有意义?我认为你应该考虑将其可视化。

我通常使用 qgis 可视化地理空间栅格,您基本上应该能够将图像拖放到其中以查看数据。

不过你当然也可以通过matplotlib可视化你感兴趣的图像部分

如果你真的喜欢对印刷值感兴趣

不过,您可以使用两个选项来查看整个印刷品。

1) 如果您想将值保存到文本文件,请使用 np.savetext

如果你在名为 x 的变量中有你的值,这可以通过 np.savetxt("values.txt", x)

2) 您可以通过设置 threshold printoption 让 numpy 打印所有内容。您可以在导入 numpy 之后或打印之前设置它。同样,如果我们希望您的数据在 x.

import numpy as np
np.set_printoptions(threshold=np.nan)
print(x)

如果您希望将其写入文件,您可以改为这样做

import numpy as np
np.set_printoptions(threshold=np.nan)
with open('values.txt', 'w') as f:
    print(x, file=f)