Py学习  »  Python

编程分享 | Python如何批量压缩tif文件

happy科研 • 3 年前 • 455 次点击  

01.前言

Tif文件是栅格数据最常用的一种格式。图像数据区以位图的方式进行数据的表示。因此Tif文件可以进行压缩,常用的压缩方式有LZW、RAW、RLE、CCITT等。我在进行DEM数据的裁剪时,发现各个省的数据量非常大,比如说四川省的30m的DEM数据的大小为2G。考虑到有限的电脑磁盘空间,我对Tif文件采用了LZW压缩。

02.流程

3.批量压缩代码

#文件夹中每个文件都进行压缩
# -*- 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)

04.结果展示

首先是四川省的原始文件大小为2.23Gb,压缩后的大小为0.99Gb,压缩了大概一半。


往期精彩:

2021年全国水体分布(按省、市、县)矢量数据的制作与分享

DEM数据全国各省的裁剪与分享(30m、90m、250m、1000m)

使用PIE engine免费快速下载全球12.5m的DEM影像

我下载了python所有包,24个G,有需要的自提

我爬取交通学博士付费的GIS资源,每年被动收入2w很简单?

使用google earth engine(GEE)提取2000年到2019年长江下游水体(河流、湖泊)数据


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120877
 
455 次点击