Tiff to array - 错误

时间:2017-10-01 08:47:37

标签: python arrays numpy gis gdal

您好,我将Tiff文件转换为numpy数组时遇到了一些问题。 我有一个16位签名的光栅文件,我想将其转换为numpy数组。 我使用这个gdal图书馆。

import numpy
from osgeo import gdal
ds = gdal.Open("C:/.../dem.tif")
dem = numpy.array(ds.GetRasterBand(1).ReadAsArray())

乍一看,一切都转换得很好,但是我将python中获得的结果与GIS软件中的结果进行了比较,得到了不同的结果。

Python结果

Python result

Arcmap结果

Arcmap result

我在numpy数组中发现了很多低于91和278(实际最小值和最大值)的值,这些值应该不存在。

1 个答案:

答案 0 :(得分:1)

GDAL已经返回一个Numpy数组,默认情况下将其包装在np.array中会创建该数组的副本。这是一个不必要的性能打击。只需使用:

dem = ds.GetRasterBand(1).ReadAsArray()

或者如果是单波段光栅,只需:

dem = ds.ReadAsArray()

回顾统计信息,您确定ArcMap显示绝对高/低值吗?我知道QGIS例如经常从数据集的样本中提取统计数据(用于性能),并且根据设置有时使用百分位数(例如1%,99%)。

编辑:BTW,这是一个公共数据集吗?像SRTM瓷砖一样?如果列出来源可能会有所帮助。