Skip to content

Commit 80c2177

Browse files
committed
check for altitude bin spacing and number of bins, retain most common type only
1 parent 4a34476 commit 80c2177

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

R/as.vpts.R

+21-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,27 @@ as.vpts <- function(data) {
2222
height <- datetime <- source_file <- radar <- NULL
2323

2424
# Throw error if nrows per height are not identical
25-
26-
assertthat::assert_that(
27-
remainder_is_zero(dim(data)[1], length(unique(data$height))) > 0,
28-
msg = "Number of rows per height variable must be identical"
29-
)
25+
# FIXME: first if statement is a weak check that could fail, could be improved.
26+
if(!remainder_is_zero(dim(data)[1], length(unique(data$height)))){
27+
data %>%
28+
dplyr::group_by(radar, datetime) %>%
29+
dplyr::mutate(bioRad_internal_interval = height-lag(height)) %>%
30+
dplyr::add_count(name="bioRad_internal_levels") -> data
31+
interval_median <- median(data$bioRad_internal_interval, na.rm=TRUE)
32+
interval_unique <- unique(data$bioRad_internal_interval)
33+
interval_unique <- interval_unique[!is.na(interval_unique)]
34+
if(length(bin_unique)>1){
35+
warning(paste("profiles found with different altitude interval:",paste(sort(bin_unique),collapse=" ")), ", retaining ",bin_median, " only.")
36+
data <- dplyr::filter(data, bioRad_internal_interval == interval_median)
37+
}
38+
levels_median <- median(data$bioRad_internal_levels)
39+
levels_unique <- unique(data$bioRad_internal_levels)
40+
if(length(levels_unique)>1){
41+
warning(paste("profiles found with different number of height layers:",paste(sort(levels_unique),collapse=" ")), ", retaining ",levels_median, " only.")
42+
data <- dplyr::filter(data, bioRad_internal_levels == levels_median)
43+
}
44+
data <- dplyr::select(data, -c(bioRad_internal_interval, bioRad_internal_levels))
45+
}
3046

3147
radar <- unique(data[["radar"]])
3248

0 commit comments

Comments
 (0)