社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

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

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
 
482 次点击