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

R语言学习记录:从nc文件中提取某站点的时间序列

2022-04-04 23:21 作者:孤独的王大老实  | 我要投稿

今天接到一位姐妹的求助,她要提取某个站点的PDSI,但是不知道怎么整,问我会不会。这等小事不得让我拿捏一下,我说“坐标,年份,速来”

然后发现用raster包和terra包提取,有一点区别,于是再记录一下。

目的:提取nc格式的站点PDSI

数据源:

Drought indices (uea.ac.uk)

https://crudata.uea.ac.uk/cru/data/drought/

Climate Explorer: Select a monthly field (knmi.nl)

http://climexp.knmi.nl/selectfield_obs2.cgi?id=someone@somewhere

法1:raster包stack处理

View一下p,发现它长这样

是一个宽数据

class一下p,它是一个矩阵

矩阵、数组

转置一下p

转置以后长这样

法2:raster包brick处理

brick函数的结果和stack一样

和法1一样,只不过把栅格做成了brick而不是stack,主要区别就在于brick函数秒出结果,stack函数足足等了16多分钟!果然brick函数效率高啊。


法3:terra包rast处理


terra的处理结果

terra的处理速度和raster的brick一样,都是秒出。但是列名(转置后是行名)不一样,rast读取的图层名不如brick函数输出的图层名信息多,brick函数输出的图层名年月日都标上了。这竟然和之前nc转tif的记录中截然相反。

在nc转tif中,rast读取的nc文件图层名是pre_i,brick读取的nc文件名就只是x1,x2等等。

这提了个醒:读取nc文件时要这两种方法都试一试,看看哪个易于后续操作。

法4:还有更快捷的方法,但是只针对于世界气象组织网站上的数据

Climate Explorer: Select a monthly field (knmi.nl)

http://climexp.knmi.nl/selectfield_obs2.cgi?id=someone@somewhere

这个网站收录了很多数据集,包括这次用到的PDSI。


找到需要的数据集


点进去后会要你选择提取的区域,提取点还是面,面的话要加一个mask


经纬度要确定好是十进制的

点击make time series

时间序列图

然后它的时间序列就出来了,还可以下载这个点数据的eps,pdf,元数据,raw data(dat格式),nc文件等等

由于只需要1960到2020年的数据,在这个页面的下面还可以进一步限制条件


好多可以限制的条件

限制完了就可以在新的页面上下载它了。

时间序列
  • 推荐下载dat格式的文件。为什么推荐下载dat格式的文件呢?因为快啊,下载下来的dat格式文件用excel打开,分列,把多余的表头删除就ok了。(别问为啥不用R或者Python或者MATLAB打开dat文件,光是开软件加写路径和代码的工夫excel就在旁边抽事后烟看着你笑了,效率为王啊!)(说到敲文件路径,昨天还和师妹吐槽来着:MATLAB比R人性化太多了,R就是个垃圾,路径还得用反斜杠,右下角的目录窗口更换盘符还得点右边的三个点)

  • 如果不嫌麻烦,就是想用netcdf来install B,其实也可以。用下面的代码:

  • metadata。点这个会下载整个数据集年份的全球区域的原始数据。如果要转区域的tif的话可以参考这个

  • pdf。下载一个dat文件的pdf版本,属实没必要。

  • eps。我只在ps上用过eps文件,这方面还真没遇到过,不过图像文件的封装方式有很多,估计这也是其中一种。希望有知道这个文件怎么用遥感方式处理的大手子可以来指点一下。


R语言学习记录:从nc文件中提取某站点的时间序列的评论 (共 条)

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