@@ -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