欢迎光临散文网 会员登陆 & 注册

R语言学习记录:nc格式转tif

2022-03-24 23:08 作者:孤独的王大老实  | 我要投稿

R语言转换nc至tif的方法探究

法1:

法1结果

Reference:https://www.jianshu.com/p/50fac745eb76

总结:代码有点长,路径设置比较麻烦。但是当某个nc文件是连续几年的数据时候比较好用。

另外还学到了一种设置批量路径的新思路,就是提前把各个路径以及文件名设置好,在写出文件路径的时候直接用这个集合【i】的格式。

法2:

法2结果

Reference:

NetCDF(nc)数据读取与格式转换 (qq.com)

https://mp.weixin.qq.com/s/pB4ZAOGSvxdRI4U-yXdxOg

总结:其实原文只有三行代码,长这样:

但是有一个问题,第二行里varname参数是需要指定的,如果不指定它会默认进行猜测。我这里的示例nc只有一个变量就是pre,如果有多个变量的话最好还是提前查看指定一下。这个时候就需要用到法1里提到过的ncdf4包。

法3:

法3结果

Reference:王老实(我自己)

总结:在查到法2的时候我自己忍不住又想探究一下terra包会不会有什么区别,促使我探究的原因大概率是前几天在StackExchange上被疯狂安利terra包,法2的作者徐老师也曾经对比过raster包和terra包的运行速度,也推荐使用terra包,但是在徐老师的后面几篇文章中提到:terra包目前有几处地方还不太稳定,有的地方会报错。具体哪来着我也忘了(好像是裁剪还是掩膜啥来着对不齐)。

然后就开始试了一下terra包的writeRaster,果然还是有些不同的:

1.Terra写出必须要加上一个“filetype”的参数,不然会报错。

2.Terra输出的堆栈信息较多

raster包写出的names就是X1...X12,while terra包的names是pre_1...pre_12

上面是rast读取,下面是brick读取

虽然自己肯定都知道自己下载的是什么数据,但是展示出来的信息更多看起来就更舒服一点

3.还有就是两个包输出的时候最好都设置overwrite=T,不然可能会报错。

4.这里还可以手动更改name,让它变成xx_01、xx_02、xx_03的格式。

然后输出的时候可以直接按照name输出

5.需要注意的是法2用raster包写出的时候没加“.tif”,但是最后输出的文件自动带了tif后缀。terra包写出的时候就必须加“.tif”后缀。


另外,在StackExchange上有人比较了raster和terra加载nc文件,那个提问者说他用terra加载一个很大的nc用了40多分钟 while raster包只用了一两秒,然后这个问题的回答说raster读取nc文件基于ncdf4,terra读取nc文件基于GDAL,所以很慢,答主当时建议读取nc文件还是用raster包。这是2021年10月12日的提问和回答,不知道现在解决了没有。

https://gis.stackexchange.com/questions/413105/terrarast-vs-rasterbrick-for-loading-in-nc-files

R语言学习记录:nc格式转tif的评论 (共 条)

分享到微博请遵守国家法律