采样点流量数据提取(代码分享):利用ECMWF开源数据

内容介绍:

利用欧洲中期天气预报中心(ECMWF)开源数据提取采样时采样点流量数据,在研究范围为大尺度时适用。

数据来源:River discharge and related historical data from the Global Flood Awareness System (copernicus.eu)https://cds.climate.copernicus.eu/cdsapp#!/dataset/cems-glofas-historical?tab=overview

欧洲中期天气预报中心(ECMWF):https://cds.climate.copernicus.eu/https://cds.climate.copernicus.eu/


目录

 0.导语:

1.需要准备的材料

2.下载开源数据

数据介绍:

数据下载:

3.将经纬度进行转换

4.R语言数据提取

5.数据整合

6.小结


 0.导语:

我们平时在进行科研分析的时候,可能经常因为找不到河流流量数据而发愁,该分享将教会你,如何利用欧洲中期天气预报中心开源数据,提取自己想要的水文信息。

本期主要分为5个部分,先介绍①需要准备的材料,然后②下载开源数据,③进行基础数据处理,之后④用R语言去提取你所需要的数据信息(附代码分享),最后把⑤数据整合到一起。

如果你的没有R语言,有其他的编程软件,也是可以的,按照逻辑修改相关的代码即可。


1.需要准备的材料

把需要提的采样点位和对应的采样时间准备好。

采样点位:经纬度;

采样时间:时间根据自己需求定,年月日都行,我们能提到日数据,月数据就平均日一下,年数据就再月平均一下。


2.下载开源数据

数据来源:

River discharge and related historical data from the Global Flood Awareness System (copernicus.eu)https://cds.climate.copernicus.eu/cdsapp#!/dataset/cems-glofas-historical?tab=overview

下载之前需要先注册一下。

数据介绍:

这个数据是来自全球洪水意识系统(GloFAS)的河流流量和相关历史数据,

概述介绍了数据集的分析建模过程,数据集的优势就是可一致地表示全球范围内的关键水文变量,更适合于大尺度数据的研究。

本期示例采用的是3.0版本,精度是0.1经纬度,1经纬度差不多是110km,那0.1经纬度就是11km,这个投影是网格化的预测平均,意思是11km的这么一个方格里都会是这个数据,如果你的研究区很小,采样点很近,可能会不适用。

我们要提取的流量数据,他是一个过去 24 小时内的河流流量,单位是m3/s。数据还提供了两个用于解释的辅助文件,一个包含上游区域数据,另一个包含高程数据,如果有需要,可以在参阅文档中的相关变量表中找一下。

最右边有引文格式,如果你参考了该数据集,要规范引用哦~

数据下载:

下载数据就切到下载界面,选择需要的版本,我选的是3.1,选择需要,对应好网格分辨率就行。水文模型选这个能选的就行,产品类型有两种,我理解的是前面这个流量数据是前24小时流量数据取了均值,后面这个是取了中位数,我这里选了第一个。

根据第一步中你所整理好的时间,选择下面的时间:我这里要提取的数据是2019年1月的数据,我在提取月数据时,因为精度要求并没有特别高,一般取的是1号,15号和30号进行平均,这个你全提了也行,写代码的时候对应修改就行。

这是下载全球你选择的日期的流量数据,你也可以根据只下载你需要的区域,在下面改就可以,这数值是经纬度,对应好版本的最小经纬度是0.1或0.05度就行,格式的话我这里下载的是NC格式的数据。

然后你如果注册并登录了,这里应该是绿色的可以提交的,如果显示让你登录再提交,那么你登录一下。提交之后点下载就行了。


3.将经纬度进行转换

我们用R语言分析一下,看一下下载的数据里有什么。

dis24里的内容就是流量数据,这个流量数据有三个维度,分别是经度,纬度和时间。我们把三个坐标都对应好,才能提出了对应的流量数据。

时间很简单嘛,只有三个,对应的就是我们所下载的3天,也就是1号,15号和31号的数据,主要是要把经纬度对应起来,这个过程在excle中进行即可。

#install.packages("ncdf4")
library(ncdf4)

###########数据分析#################
liul201901 <- nc_open('201901.nc')
print(liul201901)

options(max.print = 5000)
lat <- ncvar_get(nc =liul201901,varid = 'latitude')
lat
lon <- ncvar_get(nc =liul201901,varid = 'longitude')
lon
time <- ncvar_get(nc =liul201901,varid = 'time')
?ncvar_get

我们对数据进行处理,原始数据,新建个表,用这个round函数,保留一位有效数字,粘贴为文本。

4.R语言数据提取

第四部分就是数据提取了。

数据提取:

############数据提取##############
Q201901 <- ncvar_get( nc =liul201901, varid = 'dis24')
Q201901_1 <- Q201901[,,1]
Q201901_2 <- Q201901[,,2]
Q201901_3 <- Q201901[,,3]

dianwei <- read.csv('201901.csv')
#第一个日期提取
dis201901_1 <- c()
for (i in 1:73)
{
  dis201901_1 <- c(dis201901_1,Q201901_1[dianwei$longitude[i],dianwei$latitude[i]])
}

print(dis201901_1)

dianwei[,3]=dis201901_1
#第二个日期提取
dis201901_2 <- c()
for (i in 1:73)
{
  dis201901_2 <- c(dis201901_2,Q201901_2[dianwei$longitude[i],dianwei$latitude[i]])
}

dianwei[,4]=dis201901_2
#第三个日期提取
dis201901_3 <- c()
for (i in 1:73)
{
  dis201901_3 <- c(dis201901_3,Q201901_3[dianwei$longitude[i],dianwei$latitude[i]])
}

dianwei[,5]=dis201901_3

#求均值
dianwei[,6]=rowMeans(dianwei[,3:5])

#输出结果
write.csv(dianwei,"201901流量.csv", row.names = F)

要提的数量多可以写一个循环。

5.数据整合

第五,写出数据,取平均就可以得到月均值、年均值,然后把流量数据整合好即可。

教学视频在B@虞妺i,第二个字读mo哦,水平精力有限,大神指导的话求温柔点~

6.小结

本期主要分为5个部分,先介绍①需要准备的材料,然后②下载开源数据,③进行基础数据处理,之后④用R语言去提取你所需要的数据信息,最后把⑤数据整合到一起。

以上就是本期分享的全部内容了,如果有问题欢迎大家提问指教~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值