private void createNewVariables ( NetcdfDataset ds , Variable ncVar , List < Dimension > newDims , Dimension levelDim ) throws InvalidRangeException { List < Dimension > dims = ncVar . getDimensions ( ) ; int newDimIndex = dims . indexOf ( levelDim ) ; //String shapeS = ncVar.getShapeS(); int [ ] origin = new int [ ncVar . getRank ( ) ] ; int [ ] shape = ncVar . getShape ( ) ; int count = 0 ; for ( Dimension dim : newDims ) { String name = ncVar . getShortName ( ) + "-" + dim . getShortName ( ) ; origin [ newDimIndex ] = count ; shape [ newDimIndex ] = dim . getLength ( ) ; Variable varNew = ncVar . section ( new Section ( origin , shape ) ) ; varNew . setName ( name ) ; varNew . setDimension ( newDimIndex , dim ) ; // synthesize long name String long_name = ds . findAttValueIgnoreCase ( ncVar , CDM . LONG_NAME , ncVar . getShortName ( ) ) ; long_name = long_name + "-" + dim . getShortName ( ) ; ds . addVariableAttribute ( varNew , new Attribute ( CDM . LONG_NAME , long_name ) ) ; ds . addVariable ( null , varNew ) ; parseInfo . format ( "Created New Variable as section = " ) ; varNew . getNameAndDimensions ( parseInfo , true , false ) ; parseInfo . format ( "%n" ) ; count += dim . getLength ( ) ; } }
create new variables as sections of ncVar