Python读取TIFF文件主要有两种方法,一般的图像类型,可以使用Pillow;如果是地理空间的TIFF文件,可以使用rasterio
1 安装gdal
rasterio 是专门用于处理地理空间数据(如 GeoTIFF 文件)的库,适合处理带有空间参考系的 TIFF 文件。
从安装raster开始,它需要依赖GADL库,因此需要先安装GDAL
conda install gdal
但Import gdal仍显示ModuleNotFoundError: No module named ‘gdal’
为检查安装是否成功,运行
gdalinfo --version
但报错“由于找不到libcrypto-3-x64.dll / libssl-3-x64.dll,无法打开……”,因此可以网站[dll下载网站]下载这两个dll文件,放在./anaconda/目录下,但Import gdal仍显示ModuleNotFoundError: No module named ‘gdal’
因为在 Python 中,GDAL 的 Python 包实际上是 osgeo.gdal,而不是直接使用 gdal
所以导入gdal通过
from osgeo import gdal
2 安装rasterio
运行
conda install rasterio
3 读取TIFF文件
import rasterio
# 打开 TIFF 文件
with rasterio.open('F:/data201909 (1).tiff') as dataset:
# 输出数据的所有属性
print(dir(dataset))
# 常用的几个属性
print(f"文件的宽度: {dataset.width}")
print(f"文件的高度: {dataset.height}")
print(f"投影信息: {dataset.crs}")
print(f"波段数: {dataset.count}")
print(f"像素大小: {dataset.transform}")
print(f"波段描述: {dataset.descriptions[0]}")
print(f"地理边界(bounding box): {dataset.bounds}")
print(f"数据类型(dtype): {dataset.dtypes[0]}")
# 读取数据
tiff_data = dataset.read(1) # 读取第一波段
# show出数据图像
plt.figure()
plt.imshow(tiff_data,cmap='RdBu_r')
plt.colorbar(shrink = 0.8)
以上方法是针对文件只有一个波段的数据,当有多个波段时,想查明多个波段信息
# 获取波段的总数量
num_bands = dataset.count
print(f"波段数: {num_bands}")
# 读取每个波段的名称或描述
band_descriptions = dataset.descriptions
print("波段名称或描述:")
for i, description in enumerate(band_descriptions, 1):
print(f"波段 {i}: {description}")