R/pr_extract_spectra.R
pr_extract_spectra.Rd
function to extract values of a PRISMA image converted with prismaread on points/polygons saved on a vector file or on a `sf` object
pr_extract_spectra( in_file, in_vect, id_field = NULL, dissolve = FALSE, stats = TRUE, selstats = c("mean", "stdev"), stats_format = "long", quantiles = FALSE, percs = c(0.05, 0.25, 0.5, 0.75, 0.95), allpix = FALSE, out_file = NULL )
in_file | input PRISMA file obtained with `pr_convert` |
---|---|
in_vect | either the full path to a vector file, or a `sf` object containing the points/polygons on which data should be extracted |
id_field | `character` (Optional), name of the column of the vector dataset to be used to "name" the outputs, and also "aggregate" them in case `dissolve` is TRUE. If NULL, a arbitrary `ID` field is created, and each point/polygon is considered separately (see Details), Default: NULL |
dissolve | `logical` If TRUE and `id_field` was specified, in case multiple features of the input vector share a common id, they are dissolved before extracting the data, Default: FALSE |
stats | `logical` IF TRUE, compute standard statistics (mean, min, max, sd, variation coefficient) on the vector features. Statistics to be computed are set using the `selstats` argument, Default: TRUE |
selstats | `character` containing the statistics to be computed. Possible values are: "mean", "stdev","variance","coeffvar", "min","max", Default: c("mean", "stdev") |
stats_format | `character` ["long" | "wide"] defines the format used for statistics output. If "long", the output has one column for the ID of the feature, and one column for each statistic. If "wide", the output has one column for each ID/statistic couple (e.g., mean_id_1, stdev_id_1, mean_id_2, etcetera) |
quantiles | `logical`, if TRUE, also compute quantiles on the vector features. Computed quantiles are set using the `percs` argument, Default: FALSE |
percs | `(sorted) numeric array [0,1]` defines which quantiles should be computed if `quantiles` is TRUE, Default: c(0.05,0.25,0.50,0.75,0.95) |
allpix | `logical` IF TRUE, also save the values for all pixels of the `in_vect` features in the `allpix` slot of the output list, Default: FALSE |
out_file | `character` full path of an output file where results should be stored, with extension. Valid extensions are ".csv", ".xls", ".xlsx" and ".RData". If NULL, output is not saved, Default: NULL |
format of the output varies based on arguments `allpix` and `stats` 1. If stats = TRUE and allpix = FALSE: a `tibble` containing extracted statistics, for each feature of the input and each wavelength. Format depends on `stat_sformat`; 2. If stats = FALSE and allpix = TRUE: a `tibble` containing extracted raster values for each pixel of each feature of the input and each wavelength; 3. If stats = TRUE and allpix = TRUE: a `list` in which the `stats` slot contains statistics, and the `allpix` slot contains pixel values;
if (FALSE) { if(interactive()){ in_file <- "D:/prismareaetd/L2D/testL2D_HCO_VNIR.envi" in_vect <- "D:/prismaread/test/testpoints_l2d_polys.gpkg" # extract base statistics test <- pr_extract_spectra(in_file, in_vect, out_file = "D:/Temp/test1.xlsx") test # plot results using ggplot ggplot(test, aes(x = wvl, y = mean)) + geom_line(aes(color = ID, group = ID)) + facet_wrap(~ID) + theme_light() # extract base statistics ands save results as excel file, in "wide" format test <- pr_extract_spectra(in_file, in_vect, out_file = "D:/Temp/test1.xlsx", stats_format = "wide") test # extract custom statistics test <- pr_extract_spectra(in_file, in_vect, selstats = c("mean", "coeffvar", "stdev", "min", "max")) # plot results using ggplot ggplot(test, aes(x = wvl)) + geom_line(aes(y = mean, color = ID, group = ID)) + geom_line(aes(y = mean + stdev, group = ID), color = "grey75") + geom_line(aes(y = mean - stdev, group = ID), color = "grey75") + facet_wrap(~ID) + theme_light() # extract custom statistics and quantiles test <- pr_extract_spectra(in_file, in_vect, quantiles = TRUE, selstats = c("mean", "stdev")) test # extract also all pixels test <- pr_extract_spectra(in_file, in_vect, allpix = TRUE, quantiles = TRUE, selstats = c("mean", "stdev")) test$allpix ggplot(test$allpix, aes(x = wvl)) + geom_line(aes(y = value, group = pixel, color = ID), lwd = 0.01) + facet_wrap(~ID) + theme_light() } }