如何使用rnoaa下载阿拉斯加威廉王子湾2011-2020年降水数据
阿拉斯加威廉王子湾降水数据rnoaa获取指南
1. 目标区域stationid查询方法
- 调用
rnoaa::ghcnd_stations()函数获取全量GHCND站点元数据,返回结果包含所有站点的经纬度、ID、数据覆盖时间范围等核心字段 - 按威廉王子湾经纬度范围(大致区间为北纬60°-62°,西经144°-149°,西经数值记为负数)过滤元数据,得到区域内所有候选站点
- 额外筛选
first_year≤ 2011且last_year≥2020的站点,确保数据覆盖你需要的2011-2020区间,筛选结果中的id字段即为所需stationid
2. 2011-2020年降水数据下载方法
你提到的CDO网页端仅展示到2014年的数据是前端展示限制,rnoaa对接的官方接口可以获取到近年的完整数据。你提到的cpc_prcp()是获取CPC全球0.5°分辨率逐日降水格点数据的函数,无需站号即可直接获取区域级数据,适配你的需求;如果需要站点级的逐小时/逐日数据,也可以使用ghcnd、isd函数实现。
2.1 cpc_prcp批量获取配置方法
该函数仅支持单日期查询,你可以先生成目标区间的日期序列,循环调用后过滤目标区域即可,参考代码如下:
library(rnoaa) library(dplyr) # 生成2011-2020年完整日期序列 date_seq <- seq.Date(as.Date("2011-01-01"), as.Date("2020-12-31"), by = "day") # 批量拉取并筛选区域降水数据 prcp_result <- lapply(date_seq, function(cur_date){ # 拉取单日全球降水格点数据 day_prcp <- cpc_prcp(date = as.character(cur_date), drop_undefined = TRUE) # 过滤威廉王子湾范围的格点 region_prcp <- day_prcp %>% filter(lat >= 60 & lat <= 62, lon >= -149 & lon <= -144) return(region_prcp) }) %>% bind_rows()
2.2 站点级数据备选方案
- 逐日站点降水:调用
ghcnd()函数,传入第一步筛选得到的stationid,配置参数date_min = "2011-01-01"、date_max = "2020-12-31"、var = "PRCP"即可直接获取 - 逐小时站点降水:调用
isd()函数,传入stationid,设置start = 2011、end = 2020,提取返回结果中的降水字段即可,无2014年的时间限制
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

