Python批量压缩TIF文件:基于Rasterio与LZW算法实现
本文介绍利用Python的Rasterio库批量压缩TIF文件的方法。针对DEM数据体积过大问题,通过读取栅格数据并修改Profile中的compress参数为LZW,实现文件体积减半。文中提供完整代码示例及四川省30m DEM数据从2.23Gb压缩至0.99Gb的实际测试结果,适用于需要节省磁盘空间的大规模地理空间数据处理场景。
前言
在进行DEM(数字高程模型)数据裁剪工作时,我注意到各省的数据量极为庞大。以四川省30米分辨率的DEM数据为例,其原始大小高达2GB。鉴于个人电脑磁盘空间有限,我决定对TIF文件应用LZW压缩算法以减小文件体积。
操作流程

批量压缩代码实现
#文件夹中每个文件都进行压缩
# -*- coding: utf-8 -*-
import rasterio as rio
import rasterio
import os
from tqdm import tqdm
#每个线程选择一个文件夹
Input_path ="输入文件夹"+"\\"
Output_path ="输出文件夹"+"\\"
#文件列表
pathDir= os.listdir(Input_path)
#压缩函数
for i in tqdm(range(len(pathDir))):
# 读入栅格文件
rasterfile = Input_path+"\\"+pathDir[i]
#打开栅格
rasterdata = rio.open(rasterfile)
#读取栅格
rasterdata2= rasterdata.read()
#获取栅格信息
profile = rasterdata.profile
print(profile)
#选择压缩方式
profile.update(
compress='lzw', #压缩方式:rle,lzw等
)
#导出文件路径与名字
out_put_name=Output_path +"RLE"+pathDir[i]
#导出
with rasterio.open(out_put_name, mode='w', **profile) as dst:
dst.write(rasterdata2)
压缩结果展示

以四川省原始数据为例,未压缩前文件大小为2.23GB,经过LZW压缩处理后,文件大小缩减至0.99GB,压缩率约为50%,有效节省了存储空间。

以上即为使用Python批量压缩TIF文件的详细操作步骤与代码示例,更多关于Python批量处理文件的技巧,请参阅本站其他相关文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









