Read and extract data from a list of wrf output files and a table of lat/lon points based on the distance of the points and the center of model grid points, points outside the domain (and points on domain boundary) are not extracted.
Usage
extract_serie(
filelist,
point,
variable = "o3",
field = "4d",
prefix = "serie",
new = "check",
return.nearest = FALSE,
fast = FALSE,
use_ij = FALSE,
latitude = "XLAT",
longitude = "XLONG",
use_TFLAG = FALSE,
use_datesec = FALSE,
id = "id",
verbose = TRUE
)
Arguments
- filelist
list of files to be read
- point
data.frame with lat/lon
- variable
variable name
- field
'4d' (defoult), '3d', '2d' or '2dz' see notes
- prefix
to output file, default is serie
- new
TRUE, FALSE of 'check' see notes
- return.nearest
return the data.frame of nearest points instead of extract the serie
- fast
faster calculation of grid distances but less precise
- use_ij
logical, use i and j from input instead of calculate
- latitude
name of latitude coordinate variable in the netcdf
- longitude
name of longitude coordinate variable in the netcdf
- use_TFLAG
use the variable TFLAG (CMAQ / smoke) instead of Times (WRF)
- use_datesec
use the variable date and datesec (WACCM / CAM-Chem) instead of Times (WRF)
- id
name of the column with station names, if point is a SpatVector (points) from terra package
- verbose
display additional information
Note
The field argument '4d' or '2dz' is used to read a 4d/3d variable droping the 3rd dimention (z).
new = TRUE create a new file, new = FALSE append the data in a old file, and new = 'check' check if the file exist and append if the file exist and create if the file doesnt exist
FOR CAMx time-series, use the options: use_TFLAG=T, latitude='latitude', longitude='longitude', new=T
FOR WACCM time-series, use the options: use_datesec=T, latitude='lat', longitude='lon', new=T
The site-list of two global data-sets (METAR and AERONET) are provided on examples and site-list for stations on Brazil (INMET and Air Quality stations).
Examples
cat('Example 1: METAR site list\n')
#> Example 1: METAR site list
sites <- readRDS(paste0(system.file("extdata",package="eva3dm"),"/sites_METAR.Rds"))
cat('Example 2: AERONET site list\n')
#> Example 2: AERONET site list
sites <- readRDS(paste0(system.file("extdata",package="eva3dm"),"/sites_AERONET.Rds"))
cat('Example 3: list of INMET stations on Brazil\n')
#> Example 3: list of INMET stations on Brazil
sites <- readRDS(paste0(system.file("extdata",package="eva3dm"),"/sites_INMET.Rds"))
cat('Example 4: list of Air Quality stations on Brazil\n')
#> Example 4: list of Air Quality stations on Brazil
sites <- readRDS(paste0(system.file("extdata",package="eva3dm"),"/sites_AQ_BR.Rds"))
files <- dir(path = system.file("extdata",package="eva3dm"),
pattern = 'wrf.day',
full.names = TRUE)
dir.create(file.path(tempdir(),"SERIE"))
folder <- file.path(tempdir(),"SERIE")
# extract data for 3 locations
extract_serie(filelist = files, point = sites[1:3,],prefix = paste0(folder,'/serie'))
#> extracting series of o3 field 4d for 3 points
#> dim of lat/lon: 125 125
#> used dim of lat/lon: 125 125
#> inside lat / lon range: 3 points
#> calculating distances...
#> lat lon name agency class city state
#> BA0001 -12.68638 -38.33360 Gravatá INEMA Não classificada Camaçari BA
#> BA0002 -12.63026 -38.35853 Cobre INEMA Não classificada Dias D'Ávila BA
#> BA0003 -12.80115 -38.22397 Areias INEMA Não classificada Camaçari BA
#> start i j model_lat model_lon
#> BA0001 2000 110 67 -12.70324 -38.39191
#> BA0002 2000 110 67 -12.70324 -38.39191
#> BA0003 2000 110 67 -12.70324 -38.39191
#> reading o3 : /home/runner/work/_temp/Library/eva3dm/extdata/wrf.day1.o3.nc file 1 of 3
#> reading o3 : /home/runner/work/_temp/Library/eva3dm/extdata/wrf.day2.o3.nc file 2 of 3
#> reading o3 : /home/runner/work/_temp/Library/eva3dm/extdata/wrf.day3.o3.nc file 3 of 3
#> output: /tmp/RtmpfF4sGf/SERIE/serie.o3.Rds