在过去的20年里,我一直试图使用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))该示例数据的最终目标是在数据中列出的年份中,从离这些公园最近的气象站(或公园坐标)获得年温度、湿度和其他环境变量。我知道,根据气象站的情况,这些年的数据可能会丢失。
发布于 2018-03-20 14:13:13
这应该会让您开始(从您的问题中使用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中从所有可用变量指定meteo_pull_monitors中需要哪些变量。
您的下一步将是检查您想要的变量是否在您期望的时间范围内对这些站点可用。如果没有,你可以用下一个最近的。
例如。
离你的第一个公园最近的车站只有降水量、最低气温和最高气温:
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你可以看到缺少的测量数据,你需要处理。
https://stackoverflow.com/questions/49383436
复制相似问题