内容介绍:
利用欧洲中期天气预报中心(ECMWF)开源数据提取采样时采样点流量数据,在研究范围为大尺度时适用。
欧洲中期天气预报中心(ECMWF):https://cds.climate.copernicus.eu/https://cds.climate.copernicus.eu/
目录
0.导语:
我们平时在进行科研分析的时候,可能经常因为找不到河流流量数据而发愁,该分享将教会你,如何利用欧洲中期天气预报中心开源数据,提取自己想要的水文信息。
本期主要分为5个部分,先介绍①需要准备的材料,然后②下载开源数据,③进行基础数据处理,之后④用R语言去提取你所需要的数据信息(附代码分享),最后把⑤数据整合到一起。
如果你的没有R语言,有其他的编程软件,也是可以的,按照逻辑修改相关的代码即可。
1.需要准备的材料
把需要提的采样点位和对应的采样时间准备好。
采样点位:经纬度;
采样时间:时间根据自己需求定,年月日都行,我们能提到日数据,月数据就平均日一下,年数据就再月平均一下。
2.下载开源数据
下载之前需要先注册一下。
数据介绍:
这个数据是来自全球洪水意识系统(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语言去提取你所需要的数据信息,最后把⑤数据整合到一起。
以上就是本期分享的全部内容了,如果有问题欢迎大家提问指教~