【问题标题】:RNOAA R package data accessRNOAA R 包数据访问
【发布时间】:2018-08-29 05:18:51
【问题描述】:

在过去的二十年里,我一直在尝试使用 r 包 rnoaa 从离我的研究地点最近的气象站(基本上是佛罗里达州的每个州或国家公园)下载气候数据。

我没有找到任何对我有帮助或真正有意义的小插曲或教程,尤其是考虑到我正在使用的公园数量。我想知道这里是否有人有使用此软件包的经验,并且可以展示如何使用我列表中的几个公园进行此操作的示例?

我也有公园的经纬度:

df<-structure(list(ParkName = structure(c(2L, 6L, 4L, 7L, 5L, 6L, 
3L, 3L, 1L), .Label = c("Big Talbot Island State Park", "Fakahatchee Strand Preserve State Park", 
"Jonathan Dickinson State Park", "Key Largo Hammocks", "Myakka River State Park", 
"Paynes Prairie Preserve State Park", "Sebastian Inlet State Park"
), class = "factor"), ParkLatitude = c(26.02109, 29.57728, 25.25342, 
27.86018, 27.2263, 29.57728, 27.00857, 27.00857, 30.47957), ParkLongitude = c(-81.42208, 
-82.30675, -80.31574, -80.45221, -82.26661, -82.30675, -80.13897, 
-80.13897, -81.43955), Year = c(2004L, 2000L, 1996L, 1997L, 2008L, 
2002L, 2004L, 2002L, 1995L)), .Names = c("ParkName", "ParkLatitude", 
"ParkLongitude", "Year"), class = "data.frame", row.names = c(NA, 
-9L))

此示例数据的最终目标是获取数据中列出的年份中距离这些公园(或公园坐标)最近的气象站的年度温度、湿度和其他环境变量。我知道这些年份的数据可能会丢失,具体取决于气象站。

【问题讨论】:

  • 您在包的帮助中没有找到任何内容?运行??rnoaa,有一些小插曲和帮助页面,第一眼看起来相当丰富
  • @Val 不在我尝试使用它的应用程序上。很多小插曲也略微过时。此外,NOAA 为其每个站点使用代号,我不知道如何优化某种程序,以找到离我的坐标最近的站点。
  • ?meteo_nearby_stations?meteo_pull_monitors中的例子

标签: r database data-mining rnoaa


【解决方案1】:

这应该让你开始(使用你的问题中的df):

library(rnooa)

# load station data - takes some minutes

station_data <- ghcnd_stations()

# add id column for each location (necessary for next function)

df$id <- 1:nrow(df)

# retrieve all stations in radius (e.g. 20km) using lapply

stations <- lapply(1:nrow(df),
                   function(i) meteo_nearby_stations(df[i,],lat_colname = 'ParkLatitude',lon_colname = 'ParkLongitude',radius = 20,station_data = station_data)[[1]])

# pull data for nearest stations -  x$id[1] selects ID of closest station

stations_data <- lapply(stations,function(x)  meteo_pull_monitors(x$id[1]))

这将为您提供最近车站的所有变量。当然,你可以用var in meteo_pull_monitors from all the available variables 指定你需要的变量。

您的下一步是检查您想要的变量是否在您想要的时间范围内可用于这些站点。如果没有,您可以使用下一个最接近的。

例如

离您的第一个公园最近的车站只有降水量、最低和最高温度:

stations_data[[1]]

# # A tibble: 4,077 x 5
# id       date  prcp  tmax  tmin
# <chr>     <date> <dbl> <dbl> <dbl>
# 1 USW00092826 2007-02-01    NA    NA    NA
# 2 USW00092826 2007-02-02    NA    NA    NA
# 3 USW00092826 2007-02-03    NA    NA    NA
# 4 USW00092826 2007-02-04    NA    NA    NA
# 5 USW00092826 2007-02-05    NA    NA    NA
# 6 USW00092826 2007-02-06    NA    NA    NA
# 7 USW00092826 2007-02-07    NA    NA    NA
# 8 USW00092826 2007-02-08    NA    NA    NA
# 9 USW00092826 2007-02-09    NA    NA    NA
#10 USW00092826 2007-02-10    NA    NA    NA
# # ... with 4,067 more rows

您可以看到缺少需要处理的测量值。

【讨论】:

  • 感谢@Val,我们将使用您提供的模板,看看我们可以操作它
猜你喜欢
  • 2020-10-15
  • 2016-08-09
  • 2019-02-18
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 2020-07-25
相关资源
最近更新 更多