$Id:$ @compute_month_day pro read_level2, level2_file, l2, xstride,ystride forward_function read_and_thin_and_fix ;-------------------------------------------------------------------------------------- ;-- constants ;-------------------------------------------------------------------------------------- missing = -999.0 ;--- determine format netcdf_flag = 0 if (strpos(level2_file,'.nc') gt 0) then netcdf_flag = 1 lat = read_standard(level2_file, 'latitude') nx_raw = n_elements(lat[*,0]) ny_raw = n_elements(lat[0,*]) temp = lat[0:nx_raw-1:xstride,0:ny_raw-1:ystride] nx = n_elements(temp[*,0]) ny = n_elements(temp[0,*]) lat = temp read_global_attrs, level2_file, wmo_sat_code, start_year, end_year, start_time, start_day, end_time, end_day doy = start_day year = start_year compute_month_day, doy, leapyr(year), month, dom L2 = {nx:nx, $ ny:ny, $ year: year, $ doy: doy, $ month: month, $ dom: dom, $ bad_pixel_mask: fltarr(nx,ny), $ lat: lat, $ lon: fltarr(nx,ny), $ land_class: fltarr(nx,ny), $ snow_class: fltarr(nx,ny), $ solglint_mask: fltarr(nx,ny), $ lunglint_mask: fltarr(nx,ny), $ coast_mask: fltarr(nx,ny), $ tpw: fltarr(nx,ny), $ ttropo: fltarr(nx,ny), $ tsfc: fltarr(nx,ny), $ zsfc: fltarr(nx,ny), $ zsfcstd: fltarr(nx,ny), $ zen: fltarr(nx,ny), $ solzen: fltarr(nx,ny), $ solglintzen: fltarr(nx,ny), $ solscatang: fltarr(nx,ny), $ lunzen: fltarr(nx,ny), $ lunglintzen: fltarr(nx,ny), $ moon_illum_frac: fltarr(nx,ny), $ city_mask: fltarr(nx,ny), $ sfc_type_mask: fltarr(nx,ny), $ topa: fltarr(nx,ny), $ zopa: fltarr(nx,ny), $ logzopa: fltarr(nx,ny), $ dzopasfc: fltarr(nx,ny), $ dtsfcbt11: fltarr(nx,ny), $ dtsfcopa: fltarr(nx,ny), $ logdtsfcopa: fltarr(nx,ny), $ etropo11: fltarr(nx,ny), $ etropo10: fltarr(nx,ny), $ emiss3811: fltarr(nx,ny), $ emiss3811_clr: fltarr(nx,ny), $ emiss3810: fltarr(nx,ny), $ bt38: fltarr(nx,ny), $ bt38_clr: fltarr(nx,ny), $ bt62: fltarr(nx,ny), $ bt73: fltarr(nx,ny), $ bt85: fltarr(nx,ny), $ bt10: fltarr(nx,ny), $ bt10_clr: fltarr(nx,ny), $ bt11: fltarr(nx,ny), $ bt11_clr: fltarr(nx,ny), $ bt10std: fltarr(nx,ny), $ bt11std: fltarr(nx,ny), $ logbt11maxsub: fltarr(nx,ny), $ logbt11std: fltarr(nx,ny), $ logbt10std: fltarr(nx,ny), $ bt12: fltarr(nx,ny), $ bt12_clr: fltarr(nx,ny), $ bt133: fltarr(nx,ny), $ btd7362: fltarr(nx,ny), $ btd1110: fltarr(nx,ny), $ btd1112: fltarr(nx,ny), $ btd8511: fltarr(nx,ny), $ btd3811: fltarr(nx,ny), $ btd3810: fltarr(nx,ny), $ dbtd3811clr: fltarr(nx,ny), $ dbt11max3x3: fltarr(nx,ny), $ dbt10max3x3: fltarr(nx,ny), $ bt11maxsub: fltarr(nx,ny), $ bt11minsub: fltarr(nx,ny), $ dbt11maxsub: fltarr(nx,ny), $ logdbt11maxsub: fltarr(nx,ny), $ logdbt11maxminsub: fltarr(nx,ny), $ logdbt11max3x3: fltarr(nx,ny), $ refl047: fltarr(nx,ny), $ refl065: fltarr(nx,ny), $ refl065cv: fltarr(nx,ny), $ logrefl065cv: fltarr(nx,ny), $ refl065minsub: fltarr(nx,ny), $ refl065maxsub: fltarr(nx,ny), $ drefl065clr: fltarr(nx,ny), $ drefl065maxsubclr: fltarr(nx,ny), $ drefl065min3x3: fltarr(nx,ny), $ drefl065minsub: fltarr(nx,ny), $ logdrefl065minsub: fltarr(nx,ny), $ drefl065maxminsub: fltarr(nx,ny), $ logdrefl065maxminsub: fltarr(nx,ny), $ refl065min3x3: fltarr(nx,ny), $ refrat086065: fltarr(nx,ny), $ refrat138065: fltarr(nx,ny), $ refl065std: fltarr(nx,ny), $ refl086: fltarr(nx,ny), $ refl138: fltarr(nx,ny), $ refl160: fltarr(nx,ny), $ refl38: fltarr(nx,ny), $ refldnb: fltarr(nx,ny), $ bt67: fltarr(nx,ny), $ bt6711covar: fltarr(nx,ny), $ bt6211covar: fltarr(nx,ny), $ btd1167: fltarr(nx,ny), $ btd1173: fltarr(nx,ny), $ btd11133: fltarr(nx,ny), $ btd13373: fltarr(nx,ny), $ logrefl065std: fltarr(nx,ny), $ logrefl065: fltarr(nx,ny), $ logrefl160: fltarr(nx,ny), $ logrefl138: fltarr(nx,ny), $ fmft: fltarr(nx,ny), $ logcod065: fltarr(nx,ny), $ logcod138: fltarr(nx,ny), $ logcod160: fltarr(nx,ny), $ ndsi : fltarr(nx,ny), $ beta1185 : fltarr(nx,ny), $ beta1112 : fltarr(nx,ny), $ beta11133 : fltarr(nx,ny), $ cld_prob: fltarr(nx,ny), $ ctype: fltarr(nx,ny), $ cmask: fltarr(nx,ny), $ cmask_aux: fltarr(nx,ny), $ cld_frac_nwp: fltarr(nx,ny)} ;-------------------------------------------------------------------------------------- ;--- read in observations ;-------------------------------------------------------------------------------------- l2.bad_pixel_mask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'bad_pixel_mask') l2.lon = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'longitude') l2.zen = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'sensor_zenith_angle') l2.solzen = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'solar_zenith_angle') l2.solglintzen = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'glint_zenith_angle') l2.solscatang = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing, level2_file, 'scattering_angle') l2.lunzen = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'lunar_zenith_angle') l2.lunglintzen = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'lunar_glint_zenith_angle') l2.land_class = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'land_class') l2.snow_class = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'snow_class') l2.solglint_mask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'glint_mask') l2.lunglint_mask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'glint_mask_lunar') l2.moon_illum_frac = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'moon_illum_frac') l2.city_mask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'city_mask') l2.coast_mask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'coast_mask') l2.sfc_type_mask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'bayes_mask_sfc_type') l2.tpw = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'total_precipitable_water_nwp') l2.tsfc = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'surface_temperature_nwp') l2.ttropo = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'tropopause_temperature_nwp') l2.zsfc = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'surface_elevation') l2.zsfcstd = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'surface_elevation_stddev_3x3') l2.topa = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cld_temp_opaque') l2.dtsfcopa = l2.tsfc - l2.topa x = l2.dtsfcopa idx = where(x gt 0,cc) & if (cc gt 0) then x[idx] = alog(x[idx]) idx = where(x le 0,cc) & if (cc gt 0) then x[idx] = -2.0 l2.logdtsfcopa = x l2.dtsfcbt11 = l2.tsfc - l2.bt11 l2.zopa = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cld_height_opaque') l2.logzopa = l2.zopa & idx = where(l2.zopa gt 0.0,cc) & if (cc gt 0) then l2.logzopa[idx] = alog10(l2.zopa[idx]) idx = where(l2.logzopa eq 0.0,cc) & if (cc gt 0) then l2.logzopa[idx] = 1.5 l2.dzopasfc = l2.zopa - l2.zsfc l2.etropo10 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'emiss_tropo_10_4um_nom') l2.etropo11 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'emiss_tropo_11_0um_nom') l2.emiss3811 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'emiss_3_75um_nom') l2.emiss3811_clr = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'emiss_3_75um_nom_clear') l2.emiss3810 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'emiss_3_75um_nom_rel_10_4um_nom') l2.bt38 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_3_75um_nom') l2.bt38_clr = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_3_75um_nom_clear_sky') l2.bt73 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_7_3um_nom') l2.bt85 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_8_5um_nom') l2.bt10 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_10_4um_nom') l2.bt10_clr = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_10_4um_nom_clear_sky') l2.bt11 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11_0um_nom') l2.bt11_clr = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11_0um_nom_clear_sky') l2.bt12 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_12_0um_nom') l2.bt12_clr = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_12_0um_nom_clear_sky') l2.bt133 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_13_3um_nom') l2.btd1112 = l2.bt11 - l2.bt12 l2.btd1110 = l2.bt11 - l2.bt10 l2.dbt11max3x3 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11_0um_nom_max_3x3') - l2.bt11 l2.logdbt11max3x3 = l2.dbt11max3x3 idx = where(l2.logdbt11max3x3 gt 0.0,cc) & if (cc gt 0) then l2.logdbt11max3x3[idx] = alog10(l2.logdbt11max3x3[idx]) l2.dbt10max3x3 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_10_4um_nom_max_3x3') - l2.bt10 l2.bt11maxsub = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11_0um_nom_max_sub') l2.logdbt11maxsub = l2.bt11maxsub - l2.bt11 idx = where(l2.logdbt11maxminsub gt 0.0,cc) & if (cc gt 0) then l2.logdbt11maxsub[idx] = alog10(l2.logdbt11maxsub[idx]) idx = where(l2.logdbt11maxsub eq 0,cc) if (cc gt 0) then l2.logdbt11maxsub[idx] = -2.0 l2.bt11minsub = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11_0um_nom_min_sub') l2.dbt11maxsub = l2.bt11maxsub - l2.bt11 l2.logdbt11maxminsub = l2.bt11maxsub - l2.bt11minsub idx = where(l2.logdbt11maxminsub gt 0.0,cc) & if (cc gt 0) then l2.logdbt11maxminsub[idx] = alog10(l2.logdbt11maxminsub[idx]) l2.refl047 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_47um_nom') l2.refl065 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom') l2.refl065min3x3 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_min_3x3') l2.refl086 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_86um_nom') l2.refl160 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_1_60um_nom') l2.refl138 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_1_38um_nom') l2.refl38 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_3_75um_nom') l2.refldnb = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_lunar_dnb_nom') l2.logcod065 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cld_opd_mask_0_65um_nom') idx = where(l2.logcod065 gt 0.0,cc) & if (cc gt 0) then l2.logcod065[idx] = alog10(l2.logcod065[idx]) l2.logcod138 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cld_opd_mask_1_38um_nom') idx = where(l2.logcod138 gt 0.0,cc) & if (cc gt 0) then l2.logcod138[idx] = alog10(l2.logcod138[idx]) l2.logcod160 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cld_opd_mask_1_60um_nom') idx = where(l2.logcod160 gt 0.0,cc) & if (cc gt 0) then l2.logcod160[idx] = alog10(l2.logcod160[idx]) l2.ndsi = (l2.refl065 - l2.refl160) / (l2.refl065 + l2.refl160) l2.bt11std = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11_0um_nom_stddev_3x3') l2.logbt11std = l2.bt11std idx = where(l2.logbt11std gt 0,cc) if (cc gt 0) then l2.logbt11std[idx] = alog10(l2.logbt11std[idx]) idx = where(l2.logbt11std eq 0,cc) if (cc gt 0) then l2.logbt11std[idx] = -2.0 l2.bt10std = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_10_4um_nom_stddev_3x3') l2.logbt10std = l2.bt10std idx = where(l2.logbt10std gt 0,cc) if (cc gt 0) then l2.logbt10std[idx] = alog10(l2.logbt10std[idx]) idx = where(l2.logbt10std eq 0,cc) if (cc gt 0) then l2.logbt10std[idx] = -2.0 l2.drefl065clr = l2.refl065 - read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_clear_sky') l2.drefl065maxsubclr = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_max_sub') - $ read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_clear_sky') l2.refl065cv = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_stddev_sub') / l2.refl065 x = l2.refl065cv idx = where(x gt 0,cc) & if (cc gt 0) then x[idx] = alog(x[idx]) idx = where(x le 0,cc) & if (cc gt 0) then x[idx] = -2.0 l2.logrefl065cv = x l2.refl065minsub = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_min_sub') l2.refl065maxsub = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_max_sub') l2.drefl065min3x3 = l2.refl065 - l2.refl065min3x3 l2.drefl065minsub = l2.refl065 - l2.refl065minsub l2.logdrefl065minsub = l2.drefl065minsub idx = where(l2.logdrefl065minsub gt 0,cc) if (cc gt 0) then l2.logdrefl065minsub[idx] = alog10(l2.refl065minsub[idx]) idx = where(l2.refl065minsub eq 0,cc) if (cc gt 0) then l2.logdrefl065minsub[idx] = -2.0 l2.drefl065maxminsub = l2.refl065maxsub - l2.refl065minsub l2.logdrefl065maxminsub = l2.drefl065maxminsub idx = where(l2.logdrefl065maxminsub gt 0,cc) if (cc gt 0) then l2.logdrefl065maxminsub[idx] = alog10(l2.drefl065maxminsub[idx]) idx = where(l2.drefl065maxminsub eq 0,cc) if (cc gt 0) then l2.logdrefl065maxminsub[idx] = -2.0 l2.refrat086065 = l2.refl086 / l2.refl065 l2.refrat138065 = l2.refl138 / l2.refl065 l2.refl065std = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'refl_0_65um_nom_stddev_3x3') l2.logrefl065std = l2.refl065std idx = where(l2.logrefl065std gt 0,cc) if (cc gt 0) then l2.logrefl065std[idx] = alog10(l2.logrefl065std[idx]) idx = where(l2.logrefl065std eq 0,cc) if (cc gt 0) then l2.logrefl065std[idx] = -2.0 x = l2.refl065 idx = where(x gt 0,cc) & if (cc gt 0) then x[idx] = alog(x[idx]) idx = where(x le 0,cc) & if (cc gt 0) then x[idx] = -2.0 l2.logrefl065 = x x = l2.refl138 idx = where(x gt 0,cc) & if (cc gt 0) then x[idx] = alog(x[idx]) idx = where(x le 0,cc) & if (cc gt 0) then x[idx] = -2.0 l2.logrefl138 = x x = l2.refl160 idx = where(x gt 0,cc) & if (cc gt 0) then x[idx] = alog(x[idx]) idx = where(x le 0,cc) & if (cc gt 0) then x[idx] = -2.0 l2.logrefl160 = x l2.fmft = (l2.bt11 - l2.bt12) - (l2.bt11_clr - l2.bt12_clr) *(l2.bt11-260.0) / (l2.bt11_clr - 260.0) idx = where(l2.bt11_clr le 260.0 or l2.bt11 le 260.0,cc) if (cc gt 0) then begin l2.fmft[idx] = l2.bt11[idx] - l2.bt12[idx] endif l2.btd8511 = l2.bt85 - l2.bt11 l2.btd7362 = l2.bt73 - l2.bt62 l2.btd3811 = l2.bt38 - l2.bt11 l2.btd3810 = l2.bt38 - l2.bt10 l2.dbtd3811clr = (l2.bt38 - l2.bt11) - (l2.bt38_clr - l2.bt11_clr) l2.bt6711covar = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11um_vs_67um_covar_5x5') l2.bt6211covar = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_11um_vs_62um_covar_5x5') l2.bt67 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'temp_6_7um_nom') l2.btd1167 = l2.bt11 - l2.bt67 l2.btd1173 = l2.bt11 - l2.bt73 l2.btd11133 = l2.bt11 - l2.bt133 l2.btd13373 = l2.bt133 - l2.bt73 l2.beta1185 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'beta_11um_85um_tropopause') l2.beta1112 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'beta_11um_12um_tropopause') l2.beta11133 = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'beta_11um_133um_tropopause') l2.cld_prob = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cloud_probability') l2.cmask = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cloud_mask') l2.ctype = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cloud_type') l2.cmask_aux = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cloud_mask_aux') l2.cld_frac_nwp = read_and_thin_and_fix(nx_raw,ny_raw,nx,ny,xstride,ystride,missing,level2_file, 'cloud_fraction_nwp') ;--------------------------------------------------------------- ; turn stuff off ;--------------------------------------------------------------- idx = where(l2.refl138 eq missing,cc) if (cc gt 0) then begin l2.logcod138[idx] = missing l2.refrat138065[idx] = missing endif idx = where(l2.refl160 eq missing,cc) if (cc gt 0) then begin l2.logcod160[idx] = missing l2.ndsi[idx] = missing endif idx = where(l2.bt12 eq missing,cc) if (cc gt 0) then begin l2.btd1112[idx] = missing l2.fmft[idx] = missing endif idx = where(l2.bt85 eq missing,cc) & if (cc gt 0) then l2.btd8511[idx] = missing idx = where(l2.bt38 eq missing,cc) if (cc gt 0) then begin l2.btd3811[idx] = missing l2.btd3810[idx] = missing l2.dbtd3811clr[idx] = missing endif idx = where(l2.bt67 eq missing,cc) & if (cc gt 0) then l2.btd1167[idx] = missing idx = where(l2.bt73 eq missing,cc) if (cc gt 0) then begin l2.btd1173[idx] = missing l2.btd13373[idx] = missing endif idx = where(l2.bt133 eq missing,cc) if (cc gt 0) then begin l2.btd11133[idx] = missing l2.btd13373[idx] = missing endif idx = where(l2.bt10 eq missing,cc) if (cc gt 0) then begin l2.btd1110[idx] = missing l2.btd3810[idx] = missing endif end ;---------------------------------------------------------------- ;function read_and_fix,nx,ny,xstride,ystride,missing,file,sds_name ; data = read_standard(file,sds_name) ; if (n_elements(data) eq 1) then begin ; data = make_array(nx,ny,/FLOAT, value = missing) ; endif ; return, data ;end ;---------------------------------------------------------------- function read_and_thin_and_fix,nx_raw,ny_raw,nx,ny,xstride,ystride,missing,file,sds_name data_raw = read_standard(file,sds_name) if (n_elements(data_raw) eq 1) then begin data = make_array(nx,ny,/FLOAT, value = missing) endif else begin data = data_raw[0:nx_raw-1:xstride,0:ny_raw-1:ystride] endelse return, data end