def __init__(self, rffile, rows, cols): rf = OpenRecordFile(rffile) self.__time_hdr_fmts = {12: "fii", 8: "fi"}[rf.record_size] self.__time_hdr_fmts_size = rf.record_size self.STIME, self.SDATE = rf.unpack("fi") rf.next() lays = 1 record_size = rf.record_size while rf.record_size == record_size: lays += 1 rf.next() self.__dummy_length = (rf.record_size + 8) / 4 lays //= 2 record = rows * cols * 4 + 8 total_size = self.__dummy_length times = 0 while total_size < rf.length: times += 1 total_size += record * 2 * lays + self.__time_hdr_fmts_size + 8 times -= 1 self.variables = OrderedDict del rf self.createDimension('TSTEP', times) self.createDimension('DATE-TIME', 2) self.createDimension('LAY', lays) self.createDimension('ROW', rows) self.createDimension('COL', cols) self.createDimension('VAR', 2) self.NVARS = len(self.dimensions['VAR']) self.NLAYS = len(self.dimensions['LAY']) self.NROWS = len(self.dimensions['ROW']) self.NCOLS = len(self.dimensions['COL']) self.FTYPE = 1 self.__memmap = memmap(rffile, '>f', 'r', offset=0) if self.__time_hdr_fmts_size == 12: self.LSTAGGER = self.__memmap[3].view('i') else: self.LSTAGGER = nan self.variables = PseudoNetCDFVariables(self.__variables, ['TFLAG', 'U', 'V'])
def __init__(self,rffile,rows,cols): rf=OpenRecordFile(rffile) self.__time_hdr_fmts={12: "fii", 8: "fi"}[rf.record_size] self.__time_hdr_fmts_size=rf.record_size self.STIME,self.SDATE=rf.unpack("fi") rf.next() lays=1 record_size=rf.record_size while rf.record_size==record_size: lays+=1 rf.next() self.__dummy_length=(rf.record_size+8)/4 lays//=2 record=rows*cols*4+8 total_size=self.__dummy_length times=0 while total_size<rf.length: times+=1 total_size+=record*2*lays+self.__time_hdr_fmts_size+8 times-=1 self.variables=OrderedDict del rf self.createDimension('TSTEP',times) self.createDimension('DATE-TIME',2) self.createDimension('LAY',lays) self.createDimension('ROW',rows) self.createDimension('COL',cols) self.createDimension('VAR',2) self.NVARS=len(self.dimensions['VAR']) self.NLAYS=len(self.dimensions['LAY']) self.NROWS=len(self.dimensions['ROW']) self.NCOLS=len(self.dimensions['COL']) self.FTYPE=1 self.__memmap=memmap(rffile,'>f','r',offset=0) if self.__time_hdr_fmts_size==12: self.LSTAGGER=self.__memmap[3].view('i') else: self.LSTAGGER=nan self.variables=PseudoNetCDFVariables(self.__variables,['TFLAG','U','V'])