protected boolean identifyEncodingStation ( NetcdfDataset ds , EncodingInfo info , CF . FeatureType ftype , Formatter errlog ) { // find the obs dimension Dimension obsDim = null ; if ( info . time . getRank ( ) > 0 ) obsDim = info . time . getDimension ( info . time . getRank ( ) - 1 ) ; // may be time(time) or time(stn, obs) else if ( info . time . getParentStructure ( ) != null ) { Structure parent = info . time . getParentStructure ( ) ; // if time axis is a structure member, try pulling dimension out of parent structure obsDim = parent . getDimension ( parent . getRank ( ) - 1 ) ; } if ( obsDim == null ) { errlog . format ( "CFpointObs: must have a non-scalar Time coordinate%n" ) ; return false ; } // find the station dimension if ( info . lat . getRank ( ) == 0 ) { // scalar means single info . set ( Encoding . single , null , obsDim ) ; return true ; } Dimension stnDim = info . lat . getDimension ( 0 ) ; if ( obsDim == stnDim ) { info . set ( Encoding . flat , null , obsDim ) ; // not used ? return true ; } // the raggeds if ( identifyRaggeds ( ds , info , stnDim , obsDim , errlog ) ) return true ; // heres whats left if ( info . lat . getRank ( ) == 1 ) { //Encoding e = (info.time.getParentStructure() != null) ? Encoding.multiStructure : Encoding.multidim; info . set ( Encoding . multidim , stnDim , obsDim ) ; return true ; } errlog . format ( "CFpointObs: %s Must have Lat/Lon coordinates of rank 0 or 1%n" , ftype ) ; return false ; }
for stations figure out the encoding