全年日降雨数据下载与处理教程

一、下载数据

从中国气象数据网获得2014年的中国地面降水日值0.5°×0.5°格点数据集(V2.0),网址:http://data.cma.cn/

数据集实体文件名称:中国降水日值0.5°×0.5°格点数据集文件命名由数据集代码(SURF_CLI_CHN_PRE_DAY_GRID_0.5)、年月日标识(YYYYMMDD)组成。具体形式:SURF_CLI_CHN_PRE_DAY_GRID_0.5-YYYYMMDD.TXT

日降雨格点数据(.txt)用Excel打开如下:

全年日降雨数据下载与处理教程_第1张图片数据集说明:

全年日降雨数据下载与处理教程_第2张图片

第一行"ncols 128"表示实体数据有128列;

第二行"nrows 72"表示实体数据有72行;

第三行"xllcorner 72"表示数据最左下方格点单元的经度范围是72°-72.5°E;

第四行"yllcorner 18"表示数据最左下方格点单元的纬度范围是18°-18.5°N;

第五行"cellsize 0.5"表示网格是0.5°×0.5°的;

第六行"NODATA_value -9999.0"表示中国区域以外的值用-9999.0表示。

从第七行开始是对应网格的降水值,第七行(降水数据第一行)第一列数据网格中心为(72.25°E ,53.75°N),第七行第二列数据网格中心为(72.75°E ,53.75°N),……,数据最后一行最后一列网格中心为(135.75°E ,18.25°N)。降水值保留1位小数。经度单位:度,纬度单位:度,格点降水单位:mm。

二、计算所需站点位置

根据所需样地的经纬度,确定样地所在格点数据网格中的位置;
例如:山东东营(118.75°,37.75°) => (34,93)

三、使用R批量处理

使用R语言将所需格点位置的数据提取出来,组成所需表格

全年日降雨数据下载与处理教程_第3张图片

R文件与格点数据文件放在相同目录下,提取结果如下:

全年日降雨数据下载与处理教程_第4张图片

全年日降雨数据下载与处理教程_第5张图片

所需R代码如下:

#将工作目录设置为数据文件存放的位置

setwd("F:\\qixiang")

#批量读取txt文件的内容
#list.files列出指定目录中的文件
files=list.files(pattern = ".txt")
#获得文件数量
length(files)
#对文件进行批量处理
for(i in 1:length(files))
  
{
  #filename = SURF_CLI_CHN_PRE_DAY_GRID_0.5-20140101.txt
  filename=files[i]
  
  #filenamea = 20140101
  filename_cut=substr(filename,31,38)
  
  #读取文件名为filename的文件,不检查变量名是否有效,跳过前6行再读取数据
  data=read.table(file=filename,check.names=FALSE,skip=6)
  
  #将所需的站点数据存储到data1中
  data1<-data.frame(prec=data[34,93])
  
  #names函数:获取数据集中所有变量的名字
  names(data1)<-filename_cut
  
  #assign函数:创建变量x,将value赋值给x
  assign(x=filename_cut,value=data1)
  
}

#ls()列出所有对象,将对象名称存储到date中
date<-ls()

#合并对象组成所需表格

qixiang<-get(date[1])

for(i in c(2:(length(date)-6)))
  
{
  
  qixiang<-cbind(qixiang,get(date[i]))
  
}

#将所得数据写入csv文件

write.csv(t(qixiang),"qixiang2014.csv")

你可能感兴趣的:(研究学习)