Import datasets downloaded using modisfast as a terra::SpatRaster object

mf_import_data(
  path,
  collection,
  output_class = "SpatRaster",
  proj_epsg = NULL,
  roi_mask = NULL,
  vrt = FALSE,
  ...
)

Arguments

path

character string. mandatory. The path to the local directory where the data are stored.

collection

string. mandatory. Collection of interest (see details of mf_get_url).

output_class

character string. Output object class. Currently only "SpatRaster" implemented.

proj_epsg

numeric. EPSG of the desired projection for the output raster (default : source projection of the data).

roi_mask

SpatRaster or SpatVector or sf. Area beyond which data will be masked. Typically, the input ROI of mf_get_url (default : NULL (no mask))

vrt

boolean. Import virtual raster instead of SpatRaster. Useful for very large files. (default : FALSE)

...

not used

Value

a terra::SpatRast object

Note

Although the data downloaded through modisfast could be imported with any netcdf-compliant R package (terra, stars, ncdf4, etc.), care must be taken. In fact, depending on the collection, some “issues” were raised. These issues are independent from modisfast : they result most of time of a lack of full implementation of the OPeNDAP framework by the data providers. Namely, these issues are :

  • for MODIS and VIIRS collections : CRS has to be provided

  • for GPM collections : CRS has to be provided + data have to be flipped

The function mf_import_data includes the processing that needs to be done at the data import phase in order to safely use the data as terra objects.

Also note that reprojecting over large ROIs using the argument proj_epsg might take long. In this case, setting the argument vrt to TRUE might be a solution.

Examples


if (FALSE) {

### Login to EOSDIS Earthdata with your username and password
log <- mf_login(credentials = c("earthdata_un","earthdata_pw"))

### Set-up parameters of interest
coll <- "MOD11A1.061"

bands <- c("LST_Day_1km","LST_Night_1km")

time_range <- as.Date(c("2017-01-01","2017-01-30"))

roi <- sf::st_as_sf(data.frame(
id = "roi_test",
geom="POLYGON ((-5.82 9.54, -5.42 9.55, -5.41 8.84, -5.81 8.84, -5.82 9.54))"),
wkt="geom",crs = 4326)

### Get the URLs of the data
(urls_mod11a1 <- mf_get_url(
collection = coll,
variables = bands,
roi = roi,
time_range = time_range
))

### Download the data
res_dl <- mf_download_data(urls_mod11a1)

### Import the data as terra::SpatRast
modis_ts <- mf_import_data(dirname(res_dl$destfile[1]), collection = coll)

### Plot the data
terra::plot(modis_ts)

}