This function inputs a dataframe with latitudes and longitudes of locations
and creates a dataframe with monitors within a certain radius of those
locations. The function can also be used, with the limit
argument, to
pull a certain number of the closest weather monitors to each location.
The weather monitor IDs in the output dataframe can be used with other
rnoaa
functions to pull data from all available weather stations near
a location (e.g., meteo_pull_monitors
).
meteo_nearby_stations(lat_lon_df, lat_colname = "latitude",
lon_colname = "longitude", station_data = ghcnd_stations(),
var = "all", year_min = NULL, year_max = NULL, radius = NULL,
limit = NULL)
A dataframe that contains the latitude, longitude, and
a unique identifier for each location (id
). For an example of the
proper format for this dataframe, see the examples below. Latitude and
longitude must both be in units of decimal degrees. Southern latitudes
and Western longitudes should be given as negative values.
A character string giving the name of the latitude column
in the lat_lon_df
dataframe.
A character string giving the name of the longitude column
in the lat_lon_df
dataframe.
The output of ghcnd_stations()
, which is
a current list of weather stations available through NOAA for the GHCND
dataset. The format of this is a dataframe
with one row per weather station. Latitude and longitude for the station
locations should be in columns with the names "latitude" and "longitude",
consistent with the output from ghcnd_stations()
. To save time,
run the ghcnd_stations
call and save the output to an object,
rather than rerunning the default every time (see the examples in
meteo_nearby_stations
).
A character vector specifying either "all"
(pull all
available weather parameters for the site) or the weather parameters to
keep in the final data (e.g., c("TMAX", "TMIN")
to only keep
maximum and minimum temperature). Example choices for this argument
include:
PRCP
: Precipitation, in tenths of millimeters
TAVG
: Average temperature, in tenths of degrees Celsius
TMAX
: Maximum temperature, in tenths of degrees Celsius
TMIN
: Minimum temperature, in tenths of degrees Celsius
A full list of possible weather variables is available in NOAA's README file for the GHCND data (https://www1.ncdc.noaa.gov/pub/data/ghcn/daily/readme.txt). Most weather stations will only have a small subset of all the possible weather variables, so the data generated by this function may not include all of the variables the user specifies through this argument.
A numeric value giving the earliest year from which you ultimately want weather data (e.g., 2013, if you only are interested in data from 2013 and later).
A numeric value giving the latest year from which you ultimately want weather data.
A numeric vector giving the radius (in kilometers) within which to search for monitors near a location.
An integer giving the maximum number of monitors to include for each location. The [x] closest monitors will be kept. Default is NULL (pull everything available, within the radius if the radius is specified).
A list containing dataframes with the sets of unique weather stations
within the search radius for each location. Site IDs for the weather
stations given in this dataframe can be used in conjunction with other
functions in the rnoaa
package to pull weather data for the
station. The dataframe for each location includes:
id
: The weather station ID, which can be used in other
functions to pull weather data from the station;
name
: The weather station name;
latitude
: The station's latitude, in decimal degrees.
Southern latitudes will be negative;
longitude
: The station's longitude, in decimal degrees.
Western longitudes will be negative;
distance
: The station's distance, in kilometers, from the
location.
Great circle distance is used to determine whether a weather monitor is within the required radius.
The weather monitor IDs generated by this function can be used in
other functions in the rnoaa
package, like
meteo_pull_monitors
and meteo_tidy_ghcnd
, to
pull weather data from weather monitors near a location.
# NOT RUN {
station_data <- ghcnd_stations() # Takes a while to run
lat_lon_df <- data.frame(id = c("sydney", "brisbane"),
latitude = c(-33.8675, -27.4710),
longitude = c(151.2070, 153.0234))
nearby_stations <- meteo_nearby_stations(lat_lon_df = lat_lon_df,
station_data = station_data, radius = 10)
miami <- data.frame(id = "miami", latitude = 25.7617, longitude = -80.1918)
# Get all stations within 50 kilometers
meteo_nearby_stations(lat_lon_df = miami, station_data = station_data,
radius = 50, var = c("PRCP", "TMAX"),
year_min = 1992, year_max = 1992)
# Get the closest 10 monitors
meteo_nearby_stations(lat_lon_df = miami, station_data = station_data,
limit = 10, var = c("PRCP", "TMAX"),
year_min = 1992, year_max = 1992)
# }
Run the code above in your browser using DataLab