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

时间:2018-09-10 09:47:33

标签: gdal elevation

我通过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]]

这是什么意思?数据不完整? 有人能帮我吗? 预先感谢。

1 个答案:

答案 0 :(得分:0)

这仅仅是您在光栅带上致电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)