def solver_old_method(): sys.path.append("../operations/populator/modules/") from load_disp_apriori import create_scene_dispersion_file from full_physics.oco_matrix import OcoMatrix latitude = lua_config.l1b.latitude(0).value sza_r = math.radians(lua_config.l1b.solar_zenith(0).value) saz_r = math.radians(lua_config.l1b.solar_azimuth(0).value) time_struct = lua_config.l1b.time().timetuple() aband_data = lua_config.l1b.radiance(0).data() apriori_out_file = "./tmp_disp_solve.dat" create_scene_dispersion_file(lua_config.sid_string, latitude, sza_r, saz_r, time_struct, aband_data, dispersion_coefs, apriori_out_file) result = np.transpose(OcoMatrix(apriori_out_file).data[:,1:]) os.remove(apriori_out_file) return result
def solver_old_method(): sys.path.append("../operations/populator/modules/") from load_disp_apriori import create_scene_dispersion_file from full_physics.oco_matrix import OcoMatrix latitude = lua_config.l1b.latitude(0).value sza_r = math.radians(lua_config.l1b.solar_zenith(0).value) saz_r = math.radians(lua_config.l1b.solar_azimuth(0).value) time_struct = lua_config.l1b.time().timetuple() aband_data = lua_config.l1b.radiance(0).data() apriori_out_file = "./tmp_disp_solve.dat" create_scene_dispersion_file(lua_config.sid_string, latitude, sza_r, saz_r, time_struct, aband_data, dispersion_coefs, apriori_out_file) result = np.transpose(OcoMatrix(apriori_out_file).data[:, 1:]) os.remove(apriori_out_file) return result
def load_sounding_apriori(sounding_id, l1b_obj, ecmwf_obj, num_levels, apriori_out_dir, co2_apriori_db, apriori_base_id_obj=None, brdf_type_id_obj=None, gain_type_id_obj=None, windspeed_f=False, l1b_build_id=None, use_brdf_type=None): if l1b_obj.instrument_name == ACOS_File.GOSAT_INST_NAME and type(sounding_id) is str and sounding_id[-1] not in ACOS_File.GOSAT_POL_ORDER: average_name = 'Polarization' else: average_name = None # Get radiances per band radiances = l1b_obj.get_radiance_data(sounding_id, average=average_name) # These return per band, so just get first one sounding_indexes = l1b_obj.get_sounding_indexes(sounding_id) latitude = l1b_obj.get_sounding_info('latitude', sounding_id, average=average_name)[0] longitude = l1b_obj.get_sounding_info('longitude', sounding_id, average=average_name)[0] time_struct = l1b_obj.get_sounding_time(sounding_id, average=average_name)[0] sza_r = math.radians(l1b_obj.get_sounding_info('solar_zenith', sounding_id, average=average_name)[0]) saz_r = math.radians(l1b_obj.get_sounding_info('solar_azimuth', sounding_id, average=average_name)[0]) apriori_surf_type = l1b_obj.get_surface_grouping(sounding_id) if l1b_obj.instrument_name == ACOS_File.GOSAT_INST_NAME and gain_type_id_obj != None: gain_code = l1b_obj.get_sounding_info('gain', sounding_id) print >>gain_type_id_obj, "'%s' '%s'" % (sounding_id, gain_code) if use_brdf_type != None and len(use_brdf_type) > 0: brdf_type = use_brdf_type else: # Get the mapping of the apriori surface type to the albedo to be used brdf_type = APRIORI_SURF_MASK_PICKS[ apriori_surf_type ] if brdf_type == None: raise LookupError('Could not determine brdf type from surface mask') if brdf_type_id_obj != None: print >>brdf_type_id_obj, "%s %s" % (sounding_id, brdf_type) apriori_map_value = create_static_apriori_files(sounding_id, latitude, longitude, time_struct, num_levels, apriori_surf_type, apriori_out_dir, co2_apriori_db) if apriori_base_id_obj != None: print >>apriori_base_id_obj, "%s %s" % (sounding_id, apriori_map_value) if brdf_type == LAMBERTIAN: # Create albedo apriori from radiances create_sounding_albedo_apriori_from_radiance(sounding_id, radiances, sza_r, l1b_obj.instrument_name, apriori_out_dir) elif brdf_type == COXMUNK: # Create windspeed file ws_u_val = ecmwf_obj[WINDSPEED_U_DATASET][sounding_indexes[0],:,sounding_indexes[1]] ws_v_val = ecmwf_obj[WINDSPEED_V_DATASET][sounding_indexes[0],:,sounding_indexes[1]] if len(ws_u_val.shape) > 1: ws_u_val = numpy.average(ws_u_val, 1) ws_v_val = numpy.average(ws_v_val, 1) ecmwf_ws_values = (ws_u_val, ws_v_val) create_windspeed_apriori_from_ecmwf(sounding_id, ecmwf_ws_values, apriori_out_dir, windspeed_f) else: raise Exception("Unknown brdf_type: %s for sounding %s" % (brdf_type, sounding_id)) if l1b_obj.instrument_name == ACOS_File.GOSAT_INST_NAME: dispersion_coefs = l1b_obj.get_sounding_info('dispersion', sounding_id, average=average_name) dispersion_ap_file = os.path.join(apriori_out_dir, DISPERSION_FILE_TMPL % sounding_id) create_scene_dispersion_file(sounding_id, latitude, sza_r, saz_r, time_struct, radiances[0], dispersion_coefs, dispersion_ap_file, l1b_build_id)