Пример #1
0
def set_bounds(info):
    atm_file = info.atmdir + info.atmfile
    erai_file = atm_file.replace("_Y_", "2000").replace("_M_", "01").replace(
        "_D_", "01").replace("_h_", "00")
    varlist = ["g4_lat_0", "g4_lon_1"]
    output_dir = info.nc_file_dir
    try:
        os.mkdir(output_dir)
    except:
        pass

    ncfile = io.grib2nc(erai_file, varlist, output_dir)
    lat = mygis.read_nc(ncfile, varlist[0]).data
    lon = mygis.read_nc(ncfile, varlist[1]).data - 360

    # print(lon, info.lon[0])
    lon[lon < -180] += 360
    info.xmin = np.where(lon >= info.lon[0])[0][0]
    info.xmax = np.where(lon <= info.lon[1])[0][-1] + 1
    #note lat is inverted from "expected"
    info.ymin = np.where(lat <= info.lat[1])[0][0]
    info.ymax = np.where(lat >= info.lat[0])[0][-1] + 1
    lon, lat = np.meshgrid(lon[info.xmin:info.xmax],
                           lat[info.ymin:info.ymax][::-1])
    info.lat_data = lat
    info.lon_data = lon
Пример #2
0
def set_bounds(info):
    atm_file = info.atmdir + info.atmfile
    erai_file = atm_file.replace("_Y_", "2000").replace("_M_", "01").replace(
        "_D_", "01").replace("_h_", "00")
    varlist = ["g4_lat_0", "g4_lon_1"]
    output_dir = info.nc_file_dir
    try:
        os.mkdir(output_dir)
    except:
        pass

    ncfile = io.grib2nc(erai_file, varlist, output_dir)
    lat = mygis.read_nc(ncfile, varlist[0]).data
    lon = mygis.read_nc(ncfile, varlist[1]).data - 360

    # print(lon, info.lon[0])
    lon[lon < -180] += 360
    info.xmin = max(0, np.argmin(np.abs(lon - info.lon[0])) - 1)
    info.xmax = min(lon.size - 1, np.argmin(np.abs(lon - info.lon[1])) + 1)
    if (info.xmax < info.xmin):
        print("ERROR: attempting to wrap around the ERAi boundary lon=" +
              str(lon[0]) + str(lon[-1]))
        print("  Requested East lon = " + str(info.lon[0]))
        print("  Requested West lon = " + str(info.lon[1]))
        print("Requires Custom Solution!")
        raise IndexError

    # info.xmin = max(0,np.where(lon >= info.lon[0])[0][0]-1)
    # info.xmax = min(lon.size-1, np.where(lon[info.xmin:] >= info.lon[1])[0][0] + info.xmin + 1)
    #note lat is inverted from "expected"
    info.ymin = np.where(lat <= info.lat[1])[0][0]
    info.ymax = np.where(lat >= info.lat[0])[0][-1] + 1
    lon, lat = np.meshgrid(lon[info.xmin:info.xmax],
                           lat[info.ymin:info.ymax][::-1])
    info.lat_data = lat
    info.lon_data = lon

    # important to remove this file so that if this temporary date overlaps the actual time period we want to run,
    # later steps won't break when they try to use this temporary file by mistake
    os.remove(ncfile)
Пример #3
0
def set_bounds(info):
    atm_file=info.atmdir+info.atmfile
    erai_file=atm_file.replace("_Y_","2000").replace("_M_","01").replace("_D_","01").replace("_h_","00")
    varlist=["g4_lat_0","g4_lon_1"]
    output_dir=info.nc_file_dir
    try:
        os.mkdir(output_dir)
    except:
        pass
        
    ncfile=io.grib2nc(erai_file,varlist,output_dir)
    lat=mygis.read_nc(ncfile,varlist[0]).data
    lon=mygis.read_nc(ncfile,varlist[1]).data-360
    
    info.xmin=np.where(lon>=info.lon[0])[0][0]
    info.xmax=np.where(lon<=info.lon[1])[0][-1]+1
    #note lat is inverted from "expected"
    info.ymin=np.where(lat<=info.lat[1])[0][0]
    info.ymax=np.where(lat>=info.lat[0])[0][-1]+1
    lon,lat=np.meshgrid(lon[info.xmin:info.xmax],lat[info.ymin:info.ymax][::-1])
    info.lat_data=lat
    info.lon_data=lon