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
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)
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