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的环境变量。配置方法如下:

  1. 找到7-zip的安装目录(默认的是C:\Program Files\7-Zip),复制这个路径。
  2. 我的电脑(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格式就无法用命令行的方式来解压。

GIS数据处理-IDL8.3更改默认字体 GIS基础-DEM混合式数据结构

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论