首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建循环以下载多个NAM模型投影

如何创建循环以下载多个NAM模型投影
EN

Stack Overflow用户
提问于 2022-05-11 18:31:09
回答 1查看 27关注 0票数 0

我需要一些帮助编写一个循环来下载选定的模型预测列表。我是数据科学世界的新手,我在循环中挣扎。下面我已经张贴了我已经尝试过的,但没有运气。我已经包括了最初的下载链接。理想的最终目标是将所有这些模型项目堆放在一块光栅砖中。

网址:https://nomads.ncep.noaa.gov/cgi-bin/filter_nam_na.pl?file=nam.t00z.awip3200.tm00.grib2&lev_10_m_above_ground=on&var_UGRD=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fnam.20220511

"awip3200“一节是模型列表应该循环通过的部分。(awip3203,awip3206,awip3209.等)。我还附加了代码,它工作在一个型号下线。

谢谢!

代码语言:javascript
复制
#Loop
mod.list <- c(00, 03, 06, 09, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 
              69, 72, 75, 78, 81, 84)

for(i in 1:seq_along(mod.list)) {

  url_ucomp[[i]] <- ("https://nomads.ncep.noaa.gov/cgi-bin/filter_nam_na.pl?file=nam.t00z.awip32" , mod.list[[i]] , ".tm00.grib2&lev_10_m_above_ground=on&var_UGRD=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fnam.20220511")

wind_u[i] <- download.file(url_ucomp[[i]], here("data", "wind_u.grb"))

wind_u[i] <- here("data", "wind_u.grb") %>% 
  raster()

}

#single model download
url_ucomp_00 <- ("https://nomads.ncep.noaa.gov/cgi-bin/filter_nam_na.pl?file=nam.t00z.awip3200.tm00.grib2&lev_10_m_above_ground=on&var_UGRD=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fnam.20220511")

wind_u_00 <- download.file(url_ucomp_00, here("data", "wind_u_00.grb"))

wind_u_00 <- here("data", "wind_u_00.grb") %>% 
  raster()

plot(wind_u_00)
EN

回答 1

Stack Overflow用户

发布于 2022-05-11 19:08:47

下面的代码成功下载了所有文件。所作的修改如下。

  • mod.list必须是字符向量,否则00是数字0,链接是错误的;
  • i替换了下载目录"data",下载的文件名是"widn_u_??.grb""??"替换为mod.list.

中的值

代码语言:javascript
复制
library(here)
library(dplyr)
library(raster)

mod.list <- c("00", "03", "06", "09", "12", "15", "18", "21", "24", "27", 
              "30", "33", "36", "39", "42", "45", "48", "51", "54", "57", "60", 
              "63", "66", "69", "72", "75", "78", "81", "84")

gribstring <- "wind_u_%s.grb"
wind.u <- vector("list", length(mod.list))

for(i in seq_along(mod.list)) {
  url_ucomp <- paste0("https://nomads.ncep.noaa.gov/cgi-bin/filter_nam_na.pl?file=nam.t00z.awip32" , mod.list[[i]] , ".tm00.grib2&lev_10_m_above_ground=on&var_UGRD=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fnam.20220511")
  gribfile <- sprintf(gribstring, mod.list[i])
  download.file(url_ucomp, here("Temp", gribfile))
  #
  #wind.u[[i]] <- here("Temp", gribfile) %>% raster()
  #
}

最后一个循环行被注释掉,因为它抛出了一个错误。

代码语言:javascript
复制
here("Temp", "wind_u_00.grb") %>% raster()

.local中的错误(.Object,.):

C:\Users\ruipb\Documents\Temp\wind_u_00.grb是一个格里布文件,但没有成功识别光栅数据集。.rasterObjectFromFile(x,band = band,objecttype = "RasterLayer“)中的错误,

无法从此文件创建RasterLayer对象.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72205994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档