GIS数据处理-IDL调用7-zip自动解压压缩文件
在之前的文章IDL直接读取QuikScat 压缩gz文件中,提到了IDL可以通过一个/COMPRESS参数来直接读取压缩文件。如下:
OPENR , LUN , filename , /COMPRESS,/GET_LUN
但是这仅仅适用于二进制的文件,在实际应用中常用的netcdf (也就是所谓的nc文件)经常也是压缩传输的,如果要读取这些压缩文件就必须先把netcdf文件解压出来,然后进行处理。我们考虑以下的一种应用情形,我们的数据的是动态变化的,也就是说不断增加的,这时候靠人工的手动解压就有点无为力了,所以我们需要在IDL中直接解压。下面是我探索的一种方法:
首先方法的思路借鉴这篇文章:IDL调用cmd命令,也就是说靠在IDL中通过spawn命令调用windows自带的命令行来解压相应的压缩文件。具体配置过程如下:
安装7-zip
7-Zip 是一款 开源 软件。大多数源代码都基于 GNU LGPL 许可协议下发布。功能强大,支持众多的压缩格式,对于常见的bz2、tar、gz完全可以胜任,另外其7z格式是目前公认的压缩率最高的压缩格式。你可以猛击这里下载,现在最新的版本也是10年的版本,但是功能稳定强大,一个优秀的软件何必天天更新~下载之后一路下一步即可。
配置环境变量
如果需要用命令行调用7-zip进行解压的话,需要配置7-zip的环境变量。配置方法如下:
- 找到7-zip的安装目录(默认的是C:\Program Files\7-Zip),复制这个路径。
- 我的电脑(win7是计算机)上右键,选择”属性“,然后选择高级系统设置,如图:
然后在系统变量里面找到Path,然后将7-zip的安装路径粘贴上去就好,如图,注意路径直接用分号隔开。
测试环境是否配置成功
运行cmd,在里面输入7z,然后回车,出现下面的界面表示配置成功了!
IDL调用7-zip
在此之前,你可能需要简单的了解下7z命令行解压的命令格式,详细的你可以参照这里。这里做一个简单的示例,代码如下:
PRO tscod spawn,'7z e D:\sssss.bz2 -oD:\',/hide END
上面这个命令是把D:\sssss.bz2 文件解压到D:\,参数 e 表示解压。
结语
综合来说上面的方法可以解决我的需求,不过目前发现7-zip的解压效率并不是很高,速度上稍微有那么一点慢,不过可以接受,另外rar也支持命令行模式,但是支持的格式不多,比如bz2格式就无法用命令行的方式来解压。
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
您好,我按照以上方法操作,dos下输入7z e D:\sssss.bz2 -oD:\ 可以实现,但是idl中spawn,调用这个命令就无法实现,请问是什么原因?
打错了 是cmd运行那个命令是可以实现,但spawn就不行
有什么报错么?你把/hide 这个参数取消看看
没有报错,取消hire也不能实现
把你的spawn语句发一下?
spawn,'7z e '+path+finame[i]+' -o'+path
我试了spawn,'del '+path+finame[i]可以的。但就是7z不行。
'7z e '+path+finame[i]+' -o'+path 这个执行出来的路径能保证完全正确么?可以print出来,然后复制到cmd看看,如果cmd能行,spawn应该也没问题,你仔细看中路径中有没有空格和中文。
请问这个问题解决了吗,我也是不能调用7z
报了啥错?