Go to the documentation of this file.
37 static double radeg =
RADEG;
43 int32_t ip, ipb, ib, iw, ix;
60 printf(
"Loading land mask information from %s\n",
input->land);
62 printf(
"-E- %s : Unable to initialize land mask\n", __FILE__);
66 printf(
"Loading DEM information from %s\n",
input->demfile);
67 if (
input->dem_auxfile[0])
68 printf(
"Loading auxiliary elevation file from %s\n",
input->dem_auxfile);
70 printf(
"-E- %s : Unable to initialize DEM \n", __FILE__);
74 printf(
"Loading ice mask file from %s\n",
input->icefile);
76 (
int)
day,
input->ice_threshold) != 0) {
77 printf(
"-E- %s : Unable to initialize ice mask\n", __FILE__);
84 int32_t yr = (int32_t) year;
85 int32_t dy = (int32_t)
day;
86 int32_t ms = (int32_t) (sec * 1.e3);
90 for (iw = 0; iw <
nbands; iw++) {
96 for (ix = 0; ix <
l1_input->xcal_nwave; ix++) {
99 printf(
"-E- %s line %d: xcal wavelength %f does not match sensor\n",
100 __FILE__, __LINE__,
l1_input->xcal_wave[ix]);
105 for (ip = 0; ip <
l1rec->npix; ip++) {
108 l1rec->Lt[ipb] = -999.0;
111 if (
l1rec->Lt[ipb] > 0.0 &&
l1rec->Lt[ipb] < 1000.0)
112 l1rec->Lt[ipb] /= rvs[ip];
117 for (ip = 0; ip <
l1rec->npix; ip++) {
120 for (iw = 0; iw <
nbands; iw++) {
123 if (
l1rec->Lt[ipb] > 0.0 &&
l1rec->Lt[ipb] < 1000.0) {
130 if (!
l1rec->navfail[ip]) {
133 if (
l1rec->lon[ip] < -180.)
134 l1rec->lon[ip] += 360.0;
136 else if (
l1rec->lon[ip] > 180.0)
137 l1rec->lon[ip] -= 360.0;
141 if (
input->proc_land) {
143 l1file->terrain_corrected) != 0) {
144 printf(
"-E- %s line %d: Error getting terrain height.\n",
149 l1rec->height[ip] = 0.0;
152 if (
input->proc_ocean != 2 &&
155 printf(
"-E- %s line %d: Error setting land and bathymetry masks.\n",
159 if (!
l1rec->land[ip] &&
169 for (iw = 0; iw <
nbands; iw++) {
171 l1rec->sw_n [ipb] = 1.334;
176 l1rec->sw_a_avg [ipb] = aw [iw];
177 l1rec->sw_bb_avg[ipb] = bbw[iw];
183 if (!
l1rec->land[ip]) {
188 for (iw = 0; iw <
nbands; iw++) {
194 l1rec->sw_bb[ipb] *= bbw_fac;
195 l1rec->sw_bb_avg[ipb] *= bbw_fac;
206 if (
l1rec->delphi[ip] < -180.)
207 l1rec->delphi[ip] += 360.0;
208 else if (
l1rec->delphi[ip] > 180.0)
209 l1rec->delphi[ip] -= 360.0;
212 l1rec->csolz[ip] = cos(
l1rec->solz[ip] / radeg);
213 l1rec->csenz[ip] = cos(
l1rec->senz[ip] / radeg);
216 temp = sqrt((1.0 -
l1rec->csenz[ip] *
l1rec->csenz[ip])*(1.0 -
l1rec->csolz[ip] *
l1rec->csolz[ip]))
217 * cos(
l1rec->delphi[ip] / radeg);
218 l1rec->scattang[ip] = acos(
MAX(-
l1rec->csenz[ip] *
l1rec->csolz[ip] + temp, -1.0)) * radeg;
227 if (navfail_cnt !=
l1rec->npix) {
232 if(
input->anc_profile1[0] != 0 )
235 if( strlen(
input->sfc_albedo ) )
240 if (
input->pixel_anc_file[0])
243 if (
input->windspeed > -999)
244 for (ip = 0; ip <
l1rec->npix; ip++)
247 for (ip = 0; ip <
l1rec->npix; ip++)
250 for (ip = 0; ip <
l1rec->npix; ip++)
253 for (ip = 0; ip <
l1rec->npix; ip++)
256 for (ip = 0; ip <
l1rec->npix; ip++)
259 for (ip = 0; ip <
l1rec->npix; ip++)
268 for (ip = 0; ip <
l1rec->npix; ip++) {
276 if ((
input->proc_ocean != 0) && !
l1rec->land[ip] && !
l1rec->navfail[ip]) {
297 for (ib = 0; ib <
nbands; ib++) {
299 l1rec->Lr [ipb] = 0.0;
300 l1rec->t_sol [ipb] = 1.0;
301 l1rec->t_sen [ipb] = 1.0;
302 l1rec->tg_sol[ipb] = 1.0;
303 l1rec->tg_sen[ipb] = 1.0;
304 l1rec->t_o2 [ipb] = 1.0;
305 l1rec->t_h2o [ipb] = 1.0;
306 l1rec->polcor [ipb] = 1.0;
int32 l1file(int32 sdfid, int32 *nsamp, int32 *nscans, int16 *dtynum)
float get_sstref(short reftyp, char *file, l1str *l1rec, int32_t ip)
int get_height(l1str *l1rec, int32_t ip, int terrain_corrected)
int loadl1(filehandle *l1file, l1str *l1rec)
int geom_per_band_deriv(l1str *l1rec)
double esdist_(int32_t *year, int32_t *day, int32_t *msec)
void polcor(l1str *l1rec, int32_t ip)
int bindex_get(int32_t wave)
void atmocor1(l1str *l1rec, int32_t ip)
float seawater_nsw(float wave, float sst, float sss, float *dnswds)
int ice_mask_init(char *file, int year, int day, float threshold)
float get_sssref(char *file, float lon, float lat, int day)
int land_bath_mask(l1str *l1rec, int32_t ip)
int init_anc_add(l1str *l1rec)
float aw_spectra(int32_t wl, int32_t width)
float bbw_spectra(int32_t wl, int32_t width)
int get_rhos(l1str *l1rec, int32_t ip)
int atmocor1_land(l1str *l1rec, int32_t ip)
char ice_mask(float lon, float lat)
void unix2yds(double usec, short *year, short *day, double *secs)
double * get_xcal(l1str *l1rec, int type, int wave)
real *8 function esdist(iyr, iday, msec)
int setflags(l1str *l1rec)
void setflagbits_l1(int level, l1str *l1rec, int32_t ipix)
for(i=0;i< NROOTS;i++) s[i]
void read_pixel_anc_file(char *filename, l1str *l1rec)
float get_dem(float lat, float lon)
int32_t sensorID[MAXNFILES]
int init_cld_dat(l1str *l1rec)
float seawater_bb(float wave, float sst, float sss, double delta)
void seawater_set(l1str *l1rec)