Get a list of ICESat-2 tracks using a bounding box as input
getTracks(
minx,
miny,
maxx,
maxy,
date,
outputFormat = "csv",
download_method = "curl",
verbose = FALSE
)
the 'minx' parameter of the bounding box
the 'miny' parameter of the bounding box
the 'maxx' parameter of the bounding box
the 'maxy' parameter of the bounding box
a character string specifying the Data collection date in the format 'yyyy-MM-dd' (such as '2020-01-01')
a character string specifying the output format of the downloaded data. One of 'csv' or 'json'
a character string specifying the download method to use. Can be one of 'internal', 'wininet' (Windows only), 'libcurl', 'wget', 'curl' or 'auto'. For more information see the documentation of the 'utils::download.file()' function
a boolean. If TRUE then information will be printed out in the console
either a data.table (if outputFormat is 'csv') or a nested list (if outputFormat is 'json')
https://openaltimetry.org/data/swagger-ui/
https://nsidc.org/data/icesat-2
if (FALSE) {
require(IceSat2R)
require(magrittr)
require(sf)
sf::sf_use_s2(use_s2 = FALSE)
#..........................................................
# In case we are interested to find the ICESat-2 tracks for
# - a specific area (or bounding box)
# - a specific time interval (close to September 2021)
#..........................................................
#...............
# Ice sheet area
#...............
data(ne_10m_glaciated_areas)
ice_sheet = 'Kluane Ice Cap'
ice_sheet_geom = ne_10m_glaciated_areas %>%
subset(!is.na(name)) %>%
subset(name == ice_sheet)
ice_sheet_geom
#..............
# time interval
#..............
approx_date_start = "2021-09-05"
approx_date_end = "2021-09-20"
res_rgt_many = time_specific_orbits(date_from = approx_date_start,
date_to = approx_date_end,
RGT_cycle = NULL,
download_method = 'curl',
threads = parallel::detectCores(),
verbose = TRUE)
res_rgt_many
# table(as.Date(res_rgt_many$Date_time))
#..............................................
# create the bounding box of the ice
# sheet so that I use the same area in the
# 'st_intersects()' and 'getTracks()' functions
# ('getTracks()' takes a bounding box as input)
#..............................................
bbx_ice_sheet = sf::st_bbox(obj = ice_sheet_geom)
sf_obj_ice_sheet = sf::st_as_sfc(bbx_ice_sheet)
#.........................................
# intersection of the Ice Sheet with
# the tracks for the specified time period
#.........................................
res_inters = sf::st_intersects(x = sf::st_geometry(sf_obj_ice_sheet),
y = sf::st_geometry(res_rgt_many),
sparse = TRUE)
#...........................................
# one or more intersected RGT's for the area
#...........................................
df_inters = data.frame(res_inters)
rgt_subs = res_rgt_many[df_inters$col.id, , drop = FALSE]
#.......................................................
# Keep the Date and the bounding box to
# verify with the 'getTracks()' function
# an alternative is to use the "verify_RGTs()" function
#.......................................................
for (item in 1:nrow(rgt_subs)) {
dat_item = rgt_subs[item, , drop = F]
Date = as.Date(dat_item$Date_time)
op_tra = getTracks(minx = as.numeric(bbx_ice_sheet['xmin']),
miny = as.numeric(bbx_ice_sheet['ymin']),
maxx = as.numeric(bbx_ice_sheet['xmax']),
maxy = as.numeric(bbx_ice_sheet['ymax']),
date = as.character(Date),
outputFormat = 'csv',
download_method = 'curl',
verbose = FALSE)
date_obj = dat_item$Date_time
tim_rgt = glue::glue("Date: {date_obj} Time specific RGT: '{dat_item$RGT}'")
if (nrow(op_tra) > 0) {
iter_op_trac = paste(op_tra$track, collapse = ', ')
cat(glue::glue("{tim_rgt} OpenAltimetry: '{iter_op_trac}'"), '\n')
}
else {
cat(glue::glue("{tim_rgt} without an OpenAltimetry match!"), '\n')
}
}
}