在QGIS和Arcmap中显示的同一张栅格图,波段像素值范围却不一样是为啥?
######版本:QGIS 3.34.1,Arcmap10.2
试过用GDAL将图像波段值设置在0-1之间,其他值设为nodata。
from osgeo import gdal
# 输入和输出文件路径
input_file = r'Asia_cv_srtm.tif'
output_file = r'Asia_cv_srtm_processed.tif'
# 打开栅格数据集
src_ds = gdal.Open(input_file)
band = src_ds.GetRasterBand(1) # 假设我们处理的是第一个波段
# 读取波段数据
data = band.ReadAsArray()
# 设置无效值(这里我们简单地将其设为-9999)
data[data < 0] = -9999
data[data > 1] = -9999
# 设置NoDataValue
band.SetNoDataValue(-9999)
# 如果需要写入修改后的数据到新文件
# 创建输出文件(这里我们简单地复制原始文件的驱动器和属性)
driver = src_ds.GetDriver()
dst_ds = driver.CreateCopy(output_file, src_ds, 0)
# 获取输出文件的波段并写入修改后的数据
dst_band = dst_ds.GetRasterBand(1)
dst_band.WriteArray(data)
dst_band.SetNoDataValue(-9999) # 确保在新文件中也设置了NoDataValue
# 清理并关闭数据集
del dst_band # Python 2.x 可以不使用这行代码,但在 Python 3.x 中需要显式删除对象
dst_ds = None # 确保数据集被正确关闭
src_ds = None # 关闭原始数据集
用Arcmap打开依然会出现负的异常值