楼主: kingjames23
15594 0

[学习分享] 用R语言批量从气象网-格点数据集中提取特定位点数据 [推广有奖]

  • 4关注
  • 2粉丝

已卖:115份资源

硕士生

24%

还不是VIP/贵宾

-

威望
0
论坛币
1975 个
通用积分
36.0147
学术水平
11 点
热心指数
11 点
信用等级
11 点
经验
5095 点
帖子
62
精华
0
在线时间
185 小时
注册时间
2017-12-10
最后登录
2025-2-8

楼主
kingjames23 发表于 2019-1-19 10:55:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

一、从气象网获得1961-2016年的中国地面降水日值0.5°×0.5°格点数据集(V2.0)

数据集实体文件名称:

中国降水日值0.5°×0.5°格点数据集文件命名由数据集代码(SURF_CLI_CHN_PRE_DAY_GRID_0.5)、年月日标识(YYYYMMDD)组成。

具体形式:SURF_CLI_CHN_PRE_DAY_GRID_0.5-YYYYMMDD.TXT

每日格点数据的格式如下(以1980年10月21日网格数据为例):


数据集实体文件的内容描述:

第一行"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。

二、根据所需样地的经纬度,确定样地所在格点数据网格中的位置:

如:

三、将所需格点位置的数据提出,组成所需表格,所需R代码如下:

##批量读取格点数据文件

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

setwd("E:\\qixiang")

#批量读取txt文件的内容

files=list.files(pattern = ".txt")

length(files)

for(i in 1:length(files))

{

filename=files

filenamea=substr(files,31,40)

data=read.table(file=filename,check.names=FALSE,skip=6)

#将所需的站点数据存储到data1中

data1<-data.frame(prec=c(data[36,46],data[37,46],data[37,45],data[37,44],data[38,43],data[39,42],data[40,42],data[40,41],data[41,41],data[42,40],data[43,40],data[44,40],data[45,40],data[46,40],data[47,40],data[48,39],data[48,38],data[49,38],data[49,39]))

names(data1)<-filenamea

assign(x=filenamea,value=data1)

}

#将对象名称存储到date中

date<-ls()

#合并对象组成所需表格

qixiang<-get(date[1])

for(i in c(2:(length(date)-6)))

{

qixiang<-cbind(qixiang,get(date))

}

#将所得数据写入csv文件

write.csv(t(qixiang),“qixiang20170420".csv”)

处理后可得表格:


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 02:50