tDim.setDimId(3) tDim.setValues(range(1, tDims.getDimLength()+1)) tind = 1 for mn in range(1, 13): print mn fileOut = dirOut + "/" + "narccap." + month_abbr[mn].lower() + "66" if os.path.isfile(fileOut): os.remove(fileOut) while not mns[tind-1] == mn: tind += 1 startInd = tind ARLDI = ARLDataInfo() ARLDI.X = xs.getValues() ARLDI.Y = ys.getValues() for lind in range(len(rightFullLvls)): ARLDI.levels.add(lvDict[lind]) ARLDI.LevelVarList.add(lvVarDict[lvDict[lind]]) ARLDI.createDataFile(fileOut) while tind <= len(mns) and mns[tind-1] == mn: dataHead = ARLDI.getDataHead(proj, 'NRCP', 2) ARLDI.writeIndexRecord(ts[tind], dataHead) for hg in rightFullLvls: for arlV in lvVarDict[hg]: arlV = str(arlV)
tDim.setDimName("time") tDim.setDimId(3) tDim.setValues(range(1, tDims.getDimLength() + 1)) tind = 1 for mn in range(1, 13): print mn fileOut = dirOut + "/" + "narccap." + month_abbr[mn].lower() + "66" if os.path.isfile(fileOut): os.remove(fileOut) while not mns[tind - 1] == mn: tind += 1 startInd = tind ARLDI = ARLDataInfo() ARLDI.X = xs.getValues() ARLDI.Y = ys.getValues() for lind in range(len(rightFullLvls)): ARLDI.levels.add(lvDict[lind]) ARLDI.LevelVarList.add(lvVarDict[lvDict[lind]]) ARLDI.createDataFile(fileOut) while tind <= len(mns) and mns[tind - 1] == mn: dataHead = ARLDI.getDataHead(proj, 'NRCP', 2) ARLDI.writeIndexRecord(ts[tind], dataHead) for hg in rightFullLvls: for arlV in lvVarDict[hg]: arlV = str(arlV)
def addfile(fname, access='r', dtype='netcdf', keepopen=False, **kwargs): """ Opens a data file that is written in a supported file format. :param fname: (*string*) The full or relative path of the data file to load. :param access: (*string*) The access right setting to the data file. Default is ``r``. :param dtype: (*string*) The data type of the data file. Default is ``netcdf``. :param keepopen: (*boolean*) If the file keep open after this function. Default is ``False``. The file need to be closed later if ``keepopen`` is ``True``. :returns: (*DimDataFile*) Opened file object. """ if access == 'r': fname = fname.strip() fname, isweb = __getfilename(fname) if fname is None: raise IOError(fname) if isweb: return addfile_nc(fname, False) if not os.path.exists(fname): raise IOError(fname) fsufix = os.path.splitext(fname)[1].lower() if fsufix == '.ctl': return addfile_grads(fname, False) elif fsufix == '.tif': return addfile_geotiff(fname, False) elif fsufix == '.awx': return addfile_awx(fname, False) elif fsufix == '.bil': return addfile_bil(fname, False) meteodata = MeteoDataInfo() meteodata.openData(fname, keepopen) datafile = DimDataFile(meteodata, access=access) return datafile elif access == 'c': if dtype == 'arl': arldata = ARLDataInfo() arldata.createDataFile(fname) datafile = DimDataFile(arldata=arldata) elif dtype == 'bufr': bufrdata = BufrDataInfo() if os.path.exists(fname): try: os.remove(fname) except: info=sys.exc_info() print info[0],":",info[1] bufrdata.createDataFile(fname) datafile = DimDataFile(bufrdata=bufrdata) else: version = kwargs.pop('version', 'netcdf3') if version == 'netcdf3': version = NetcdfFileWriter.Version.netcdf3 else: version = NetcdfFileWriter.Version.netcdf4 ncfile = NetcdfFileWriter.createNew(version, fname) largefile = kwargs.pop('largefile', None) if not largefile is None: ncfile.setLargeFile(largefile) datafile = DimDataFile(access=access, ncfile=ncfile) return datafile elif access == 'w': fname = fname.strip() fname, isweb = __getfilename(fname) if fname is None: raise IOError(fname) meteodata = MeteoDataInfo() ncfile = NetcdfFileWriter.openExisting(fname) meteodata = MeteoDataInfo() meteodata.openData(ncfile.getNetcdfFile(), True) datafile = DimDataFile(dataset=meteodata, access=access, ncfile=ncfile) return datafile else: return None
#---- Set directories dataDir = "D:/Temp" #---- Set output data file outFile = os.path.join(dataDir, 'arl/test2.arl') #---- Read a GRIB data file mydata = MeteoDataInfo() infile = os.path.join(dataDir, 'grib/201001011800.pgbh06.gdas.20100101-20100105.grb2') print infile mydata.openNetCDFData(infile) print 'GRIB file has been opened...' #---- Set output ARL data info arlDI = ARLDataInfo() #---- Set variable and level list gvars = ['Pressure_surface','Temperature_height_above_ground',\ 'u-component_of_wind_height_above_ground','v-component_of_wind_height_above_ground',\ 'Geopotential_height_isobaric','Temperature_isobaric',\ 'u-component_of_wind_isobaric','v-component_of_wind_isobaric','Vertical_velocity_pressure_isobaric',\ 'Relative_humidity_isobaric'] avars = ['PRSS','T02M','U10M','V10M','HGTS','TEMP','UWND','VWND','WWND','RELH'] levels = [0,1000,975,950,925,900,875,850,825,800,775,750,700,\ 650,600,550,500,450,400,350,300,250,225,200,175,150,\ 125,100,70,50,30,20,10,7,5,3,2,1] for l in levels: arlDI.levels.add(l) if l == 0: arlDI.LevelVarList.add(['PRSS','T02M','U10M','V10M'])
#---- Set directories dataDir = "D:/Temp" #---- Set output data file outFile = os.path.join(dataDir, 'arl/test2.arl') #---- Read a GRIB data file mydata = MeteoDataInfo() infile = os.path.join(dataDir, 'grib/201001011800.pgbh06.gdas.20100101-20100105.grb2') print infile mydata.openNetCDFData(infile) print 'GRIB file has been opened...' #---- Set output ARL data info arlDI = ARLDataInfo() #---- Set variable and level list gvars = ['Pressure_surface','Temperature_height_above_ground',\ 'u-component_of_wind_height_above_ground','v-component_of_wind_height_above_ground',\ 'Geopotential_height_isobaric','Temperature_isobaric',\ 'u-component_of_wind_isobaric','v-component_of_wind_isobaric','Vertical_velocity_pressure_isobaric',\ 'Relative_humidity_isobaric'] avars = [ 'PRSS', 'T02M', 'U10M', 'V10M', 'HGTS', 'TEMP', 'UWND', 'VWND', 'WWND', 'RELH' ] levels = [0,1000,975,950,925,900,875,850,825,800,775,750,700,\ 650,600,550,500,450,400,350,300,250,225,200,175,150,\ 125,100,70,50,30,20,10,7,5,3,2,1] for l in levels: