Python批量压缩TIF文件:基于Rasterio与LZW算法实现

Dylan
Dylan
发布时间:2026-10-12| 3人浏览过
原创

本文介绍利用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批量处理文件的技巧,请参阅本站其他相关文章。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。