前言
最近在下载Landsat 8 地面反射率数据(Surface Reflectance)时,遇到了一个问题,无论是使用geemap.ee_export_image_to_drive() 函数还是geemap.download_ee_image() 函数下载的数据,易康都打不开,显示Error loading image data: Layer 0 of file G: data.tif has an unsupported data type. G: data.tif,如下图。利用ENVI软件进行多次检查和对比,发现不是坐标系的问题,而是数据类型的问题,因为易康软件中不识别double数据类型,所以最开始是使用Python进行了数据类型转换,后来发现Earth Engine在下载前就可以实现数据类型的转换。下面将会介绍这两种方法。
1 Python实现数据类型的转换
# img是读取到的数据,将其缩放到0-1范围内
min_value = np.min(img)
max_value = np.max(img)
scaled_data = ((img - min_value) / (max_value - min_value))
# 将数据从0-1缩放到0-255范围并转为 uint8,并且交换数据的维度
uint_data = (scaled_data * 255).astype(np.uint8).transpose(2,0,1)
2 Earth Engine实现数据类型的转换
# Image.unitScale(low, high),会将输入的数据范围(low, high)转换到(0,1)之间
# Image.multiply(255) 将其拉伸为(0,255),此时数据类型为Float
# Image.toUint8() 是将数据转为非负整数,这样后面下载的数据就可以用ENVI打开了
img = img.unitScale(0, 0.3).multiply(255).toUint8()
后记
大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。