您好,我将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结果
Arcmap结果
我在numpy数组中发现了很多低于91和278(实际最小值和最大值)的值,这些值应该不存在。
答案 0 :(得分:1)
GDAL已经返回一个Numpy数组,默认情况下将其包装在np.array
中会创建该数组的副本。这是一个不必要的性能打击。只需使用:
dem = ds.GetRasterBand(1).ReadAsArray()
或者如果是单波段光栅,只需:
dem = ds.ReadAsArray()
回顾统计信息,您确定ArcMap显示绝对高/低值吗?我知道QGIS例如经常从数据集的样本中提取统计数据(用于性能),并且根据设置有时使用百分位数(例如1%,99%)。
编辑:BTW,这是一个公共数据集吗?像SRTM瓷砖一样?如果列出来源可能会有所帮助。