Skip to content

Commit c91d979

Browse files
Malte ZamzowMalte Zamzow
authored andcommitted
Improve readability of function and filter x and y coordinates
1 parent 3cd0c5d commit c91d979

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

R/load_netcdf.R

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,21 @@ load_netcdf <- function(
2525
start_xy = c(10,10), count_xy = c(NA,NA)
2626
){
2727
ncMeta <- ncdump::NetCDF(x = file.path(filePath, fileName))
28+
dimDf <- ncMeta$dimension
29+
xLen <- dimDf$len[dimDf$name == "x"]
30+
yLen <- dimDf$len[dimDf$name == "y"]
2831
if(any(is.na(count_xy))){
2932
all_values <- c("x", "y")[which(is.na(count_xy))]
3033
if("x" %in% all_values){
31-
count_xy[1] <- ncMeta$dimension$len[ncMeta$dimension$name == "x"]
34+
count_xy[1] <- xLen
3235
}
3336
if("y" %in% all_values){
34-
count_xy[2] <- ncMeta$dimension$len[ncMeta$dimension$name == "y"]
37+
count_xy[2] <- yLen
3538
}
3639
}
3740

38-
dimDf <- ncMeta$dimension
39-
to_many_counts <- c(dimDf$len[dimDf$name == "x"], dimDf$len[dimDf$name == "y"]) -
40-
(count_xy + start_xy - 1)
41+
42+
to_many_counts <- c(xLen, yLen) - (count_xy + start_xy - 1)
4143
if(any(to_many_counts < 0)){
4244
count_xy[to_many_counts < 0] <- count_xy[to_many_counts < 0] + to_many_counts[to_many_counts < 0]
4345
}
@@ -56,8 +58,7 @@ load_netcdf <- function(
5658
vars <- availableVars
5759
}
5860

59-
if(count_xy[1] < dimDf$len[dimDf$name == "x"] |
60-
count_xy[2] < dimDf$len[dimDf$name == "y"]){
61+
if(count_xy[1] < xLen |count_xy[2] < yLen){
6162
crop_nc <- TRUE
6263
}
6364

@@ -66,10 +67,12 @@ load_netcdf <- function(
6667
t_id <- dimDf$id[dimDf$name == "t"]
6768

6869
valDf <- ncMeta$dimension_values
70+
initial_x <- valDf$vals[valDf$id == x_id]
71+
initial_y <- valDf$vals[valDf$id == y_id]
6972
cat(paste0("Loading Coordinates and time variables ... \n"))
7073
nc <- list()
71-
nc[["x"]] <- valDf$vals[valDf$id == x_id]
72-
nc[["y"]] <- valDf$vals[valDf$id == y_id]
74+
nc[["x"]] <- valDf$vals[valDf$id == x_id][start_xy[1]:(start_xy + count_xy - 1)[1]]
75+
nc[["y"]] <- valDf$vals[valDf$id == y_id][start_xy[2]:(start_xy + count_xy - 1)[2]]
7376
nc[["t"]] <- valDf$vals[valDf$id == t_id]
7477
nc[["t_date"]] <- as.Date(nc[["t"]], origin = "1990-01-01")
7578

@@ -91,8 +94,8 @@ load_netcdf <- function(
9194
)
9295
if(crop_nc){
9396
bb_crop <- c(
94-
range(nc$x[v_crop[1:2]]),
95-
range(nc$y[v_crop[3:4]])
97+
range(initial_x[v_crop[1:2]]),
98+
range(initial_y[v_crop[3:4]])
9699
)
97100
e <- raster::extent(bb_crop)
98101
nc[[varName]] <- raster::crop(nc[[varName]], e)

0 commit comments

Comments
 (0)