NASA Logo
Ocean Color Science Software

ocssw V2022
l1_io.c
Go to the documentation of this file.
1 /* =========================================================== */
2 /* Module l1_io.c */
3 /* */
4 /* Functions to open, close, read, and write a level-1b file, */
5 /* with the format determined by the file handle content. */
6 /* */
7 /* Written By: */
8 /* */
9 /* B. A. Franz */
10 /* SAIC General Sciences Corp. */
11 /* NASA/SIMBIOS Project */
12 /* April 1998 */
13 /* */
14 /* Modifications By: */
15 /* J. Gales */
16 /* Futuretech */
17 /* NASA/SIMBIOS Project */
18 /* 10/00 */
19 /* */
20 /* Add support for OCTSL1A */
21 /* W. Robinson, SAIC, 10 Dec 2004 add CZCS, VIIRS support */
22 /* =========================================================== */
23 #include "l1.h"
24 
25 #include "scene_meta.h"
26 
27 #include <stdio.h>
28 
29 #include "l1_mos.h"
30 #include "l1_hdf_generic_read.h"
31 #include "l1_seawifs.h"
32 #include "l1_seawifs_netcdf.h"
33 #include "l1_octs.h"
34 #include "l1_octs_netcdf.h"
35 #include "l1_osmi.h"
36 #include "l1_modis.h"
37 #include "l1_czcs.h"
38 #include "l1_xcal.h"
39 #include "l1_aci.h"
40 #include "l1_sgli.h"
41 #include "l1_ocm.h"
42 #include "l1_ocm2.h"
43 #include "l1_ocmdb.h"
44 #include "l1_meris_N1.h"
45 #include "l1_meris_CC.h"
46 #include "l1_safe.h"
47 #include "l1_viirs_h5.h"
48 #include "l1_viirs_l1b.h"
49 #include "l1_hico.h"
50 #include "l1_goci.h"
51 #include "l1_oli.h"
52 #include "l1_viirs_l1a.h"
53 #include "l1_ocia.h"
54 #include "l1_aviris.h"
55 #include "l1_prism.h"
56 #include "l1_nc_generic_read.h"
57 #include "l1_l5tm.h"
58 #include "l1_l7etm.h"
59 #include "l1_msi.h"
60 #include "l1_hawkeye.h"
61 #include "l1_misr.h"
62 #include "l1_oci.h"
63 #include "l1_ocis.h"
64 #include "l1_seabass.h"
65 #include "l1_l1c.h"
66 #include "l1_l1c_anc.h"
67 #include "l1_spexone.h"
68 
69 /* ---------------------------------------------------------------- */
70 /* Close the level 1 file associated with the input file handle. */
71 
72 /* ---------------------------------------------------------------- */
73 void closel1(filehandle *l1file) {
74  switch (l1file->format) {
75  case FT_L1HDF:
76  if (l1file->mode == READ)
78  else
80  break;
81  case FT_L1BNCDF:
83  break;
84  case FT_MOSL1B:
86  break;
87 #ifdef BUILD_HISTORICAL
88  case FT_SEAWIFSL1A:
90  break;
91  case FT_SEAWIFSL1ANC:
93  break;
94 #endif
95  case FT_OCTSL1A:
96  case FT_OCTSL1B:
98  break;
99  case FT_OCTSL1ANC:
101  break;
102 #ifdef BUILD_HISTORICAL
103  case FT_OSMIL1A:
105  break;
106 #endif
107  case FT_L1XCAL:
109  break;
110 #ifdef BUILD_HISTORICAL
111  case FT_CZCSL1A:
113  break;
114 #endif
115  case FT_MODISL1B:
116  closel1_modis();
117  break;
118 #ifdef BUILD_HISTORICAL
119  case FT_CLASSAVHRR:
121  break;
122 #endif
123  case FT_OCML1B:
125  break;
126  case FT_OCM2L1B:
128  break;
129  case FT_OCML1BDB:
131  break;
132  case FT_MERISL1B:
134  break;
135  case FT_MERISCC:
137  break;
138  case FT_MERISL1BSAFE:
140  break;
141  case FT_VIIRSL1B:
143  break;
144  case FT_VIIRSL1BNC:
146  break;
147  case FT_VIIRSL1A:
149  break;
150  case FT_HICOL1B:
152  break;
153  case FT_GOCIL1B:
155  break;
156  case FT_OLIL1B:
158  break;
159  case FT_OCIA:
161  break;
162  case FT_OCIL1B:
164  break;
165  case FT_OCIS:
167  break;
168  case FT_AVIRIS: {
169  aviris_t* data = (aviris_t*) l1file->private_data;
170  if (data->isnetcdf)
172  else
174  } break;
175  case FT_PRISM:
177  break;
178  case FT_OLCI:
180  break;
181  case FT_SGLI:
183  break;
184  case FT_L5TML1B:
186  break;
187  case FT_L7ETML1B:
189  break;
190  case FT_MSIL1C:
192  break;
193  case FT_HAWKEYEL1A:
195  break;
196  case FT_MISR:
198  break;
199  case FT_SEABASSRRS:
201  break;
202  case FT_L1C:
204  break;
205  case FT_L1CANC:
207  break;
208  case FT_SPEXONE:
210  break;
211  default:
212  fprintf(stderr,
213  "-E- %s Line %d: l1close - Unknown L1 file format specifier: %d\n",
214  __FILE__, __LINE__, l1file->format);
215  break;
216  };
217 
218  free(l1file->Fonom);
219  l1file->Fonom = NULL;
220 
221  return;
222 }
223 
224 /* ---------------------------------------------------------------- */
225 /* Open a level 1 file for reading, load file handle with metadata */
226 /* from file header. At a minimum, the name and format fields of */
227 /* file handle must be loaded before this function is called. */
228 
229 /* ---------------------------------------------------------------- */
230 int openl1(filehandle *l1file) {
231  int status = 1;
232  /*
233  if (l1file->sensorID == SEABASS){
234  return open_seabass(l1file);
235  }
236  */
237 
238  /* Get number of bands and band indexing from sensor table */
239  l1file->nbands = rdsensorinfo(l1file->sensorID, l1_input->evalmask, NULL, NULL);
240  if (l1file->nbands < 0) {
241  printf("-E- %s line %d: Error reading sensor table\n",
242  __FILE__, __LINE__);
243  return (status);
244  }
245  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "Bindx", (void **) &l1file->bindx);
246  l1file->nbandsir = rdsensorinfo(l1file->sensorID, l1_input->evalmask, "NbandsIR", NULL);
247 
248  /* set wavelength index */
249  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "Lambda", (void **) &l1file->iwave);
250  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "fwave", (void **) &l1file->fwave);
251  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "Fobar", (void **) &l1file->Fobar);
252  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "Tau_r", (void **) &l1file->Tau_r);
253  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "k_oz", (void **) &l1file->k_oz);
254  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "k_no2", (void **) &l1file->k_no2);
255  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "aw", (void **) &l1file->aw);
256  rdsensorinfo(l1file->sensorID, l1_input->evalmask, "bbw", (void **) &l1file->bbw);
257 
258  bindex_set(l1file->iwave, l1file->nbands + l1file->nbandsir, BANDW);
259 
260  if ((l1file->Fonom = (float*) calloc(l1file->nbands, sizeof (float))) == NULL) {
261  printf("-E- (%s, %d) Cannot allocate space for l1file->Fonom\n", __FILE__, __LINE__);
262  exit(EXIT_FAILURE);
263  }
264  int i;
265  for (i = 0; i < l1file->nbands; i++) {
266  if (l1_input->outband_opt >= 2) {
267  get_f0_thuillier_ext(l1file->iwave[i], BANDW, l1file->Fonom + i);
268  } else {
269  l1file->Fonom[i] = l1file->Fobar[i];
270  }
271  }
272 
273  /* Open L1 file for reading or writing, as requested */
274  if (l1file->mode == READ) {
275 
276  switch (l1file->format) {
277  case FT_MOSL1B:
279  break;
280 #ifdef BUILD_HISTORICAL
281  case FT_SEAWIFSL1A:
283  break;
284  case FT_SEAWIFSL1ANC:
286  break;
287 #endif
288  case FT_L1HDF:
290  break;
291  case FT_L1BNCDF:
293  break;
294  case FT_OCTSL1A:
295  case FT_OCTSL1B:
297  break;
298  case FT_OCTSL1ANC:
300  break;
301 #ifdef BUILD_HISTORICAL
302  case FT_OSMIL1A:
304  break;
305 #endif
306  case FT_L1XCAL:
308  break;
309 #ifdef BUILD_HISTORICAL
310  case FT_CZCSL1A:
312  break;
313 #endif
314  case FT_MODISL1B:
316  break;
317 #ifdef BUILD_HISTORICAL
318  case FT_CLASSAVHRR:
320  break;
321 #endif
322  case FT_OCML1B:
324  break;
325  case FT_OCM2L1B:
327  break;
328  case FT_OCML1BDB:
330  break;
331  case FT_MERISL1B:
333  break;
334  case FT_VIIRSL1B:
336  break;
337  case FT_VIIRSL1BNC:
339  break;
340  case FT_VIIRSL1A:
342  break;
343  case FT_HICOL1B:
345  break;
346  case FT_GOCIL1B:
348  break;
349  case FT_MERISCC:
351  break;
352  case FT_MERISL1BSAFE:
354  break;
355  case FT_OLIL1B:
357  break;
358  case FT_OCIA:
360  break;
361  case FT_OCIL1B:
363  break;
364  case FT_OCIS:
366  break;
367  case FT_AVIRIS: {
368  aviris_t* data = (aviris_t*)l1file->private_data;
369  if (data->isnetcdf)
371  else
373  } break;
374  case FT_PRISM:
376  break;
377  case FT_OLCI:
379  break;
380  case FT_SGLI:
382  break;
383  case FT_L5TML1B:
385  break;
386  case FT_L7ETML1B:
388  break;
389  case FT_MSIL1C:
391  break;
392  case FT_HAWKEYEL1A:
394  break;
395  case FT_MISR:
397  break;
398  case FT_SEABASSRRS:
400  break;
401  case FT_L1C:
403  break;
404  case FT_SPEXONE:
406  break;
407  case FT_L1CANC:
409  break;
410  default:
411  printf("openl1 - Unknown L1 input file format specifier: %d\n",
412  l1file->format);
413  break;
414  };
415 
416  } else {
417 
418  switch (l1file->format) {
419  case FT_L1HDF:
420  case FT_L1BNCDF:
422  break;
423  default:
424  printf("Unknown L1 output file format specifier: %d\n",
425  l1file->format);
426  break;
427  };
428  }
429 
430  return (status);
431 }
432 
433 
434 /* ---------------------------------------------------------------- */
435 /* Read a specific level 1 record from the file pointed to by the */
436 /* input file handle and load the data into the l1 record structure.*/
437 
438 /* ---------------------------------------------------------------- */
439 int readl1(filehandle *l1file, int32_t recnum, l1str *l1rec) {
440  int status=1;
441  int32_t ip;
442  aviris_t* data = (aviris_t*) l1file->private_data;
443 
444  /* Clear the L1 record */
445  init_l1(l1rec);
446  l1rec->tilt = 0.0;
447  l1rec->mside = 0;
448  l1rec->detnum = 0;
449  /* Altitude of sensor should be set in l1_sensor.c
450  * If not set it will be assumed sensor is above atmosphere
451  * and no rayleigh correction will be done.
452  */
453  l1rec->alt = BAD_FLT;
454 
455  for (ip = 0; ip < l1file->npix; ip++) {
456  l1rec->pixnum[ip] = ip;
457  l1rec->slot[ip] = 0;
458  l1rec->alpha[ip] = 0.0;
459  }
460 
461  l1rec->iscan = recnum;
462 
463  l1rec->l1file = l1file;
464 
465  switch (l1file->format) {
466  case FT_L1HDF:
468  break;
469  case FT_L1BNCDF:
471  break;
472  case FT_MOSL1B:
474  break;
475 #ifdef BUILD_HISTORICAL
476  case FT_SEAWIFSL1A:
478  break;
479  case FT_SEAWIFSL1ANC:
481  break;
482 #endif
483  case FT_OCTSL1A:
484  case FT_OCTSL1B:
486  break;
487  case FT_OCTSL1ANC:
489  break;
490 #ifdef BUILD_HISTORICAL
491  case FT_OSMIL1A:
493  break;
494 #endif
495  case FT_L1XCAL:
497  break;
498 #ifdef BUILD_HISTORICAL
499  case FT_CZCSL1A:
501  break;
502 #endif
503  case FT_MODISL1B:
505  break;
506 #ifdef BUILD_HISTORICAL
507  case FT_CLASSAVHRR:
509  break;
510 #endif
511  case FT_OCML1B:
513  break;
514  case FT_OCM2L1B:
516  break;
517  case FT_OCML1BDB:
519  break;
520  case FT_MERISL1B:
522  break;
523  case FT_MERISCC:
525  break;
526  case FT_MERISL1BSAFE:
528  break;
529  case FT_VIIRSL1B:
531  break;
532  case FT_VIIRSL1BNC:
534  break;
535  case FT_VIIRSL1A:
537  break;
538  case FT_HICOL1B:
540  break;
541  case FT_GOCIL1B:
543  break;
544  case FT_OLIL1B:
546  break;
547  case FT_OCIA:
549  break;
550  case FT_OCIL1B:
552  break;
553  case FT_OCIS:
555  break;
556  case FT_AVIRIS:
557  if (data->isnetcdf)
559  else
561  // status = 0;
562  break;
563  case FT_PRISM:
565  // status = 0;
566  break;
567  case FT_OLCI:
569  // status = 0;
570  break;
571  case FT_SGLI:
573  // status = 0;
574  break;
575  case FT_L5TML1B:
577  break;
578  case FT_L7ETML1B:
580  break;
581  case FT_MSIL1C:
583  break;
584  case FT_HAWKEYEL1A:
586  break;
587  case FT_MISR:
589  break;
590  case FT_SEABASSRRS:
592  break;
593  default:
594  printf("readl1 - Unknown L1 input file format specifier: %d\n",
595  l1file->format);
596  break;
597  };
598 
599 
600  if (status != 0) {
601  fprintf(stderr,
602  "-E- %s Line %d: Error reading L1B.\n",
603  __FILE__, __LINE__);
604  return (1);
605  }
606 
607  for (ip = 0; ip < l1file->npix; ip++) {
608  if (l1rec->lon[ip] <= -180.0 || l1rec->lon[ip] >= 180.0 || isnan(l1rec->lon[ip]) ||
609  l1rec->lat[ip] <= -90.0 || l1rec->lat[ip] >= 90.0 || isnan(l1rec->lat[ip])) {
610  l1rec->navfail[ip] = 1;
611  }
612  }
613 
614  /* Reduce to sub-sample scan if requested */
615  if (l1subpix(l1file, l1rec) != 0)
616  return (1);
617 
618  setflagbits_l1(0, l1rec, -1);
619 
620  /* update scene meta */
622 
623  return (0);
624 }
625 
626 
627 
628 
629 /* ---------------------------------------------------------------- */
630 /* Read lon and lat for a specific level 1 record from the file */
631 /* pointed to by the input file handle and load the data into the */
632 /* l1 record structure. */
633 /* */
634 /* Lonlat needs to read only the following variables */
635 /* Lon, */
636 /* Lat, */
637 /* Solar Zentih, */
638 /* Time */
639 /* ---------------------------------------------------------------- */
640 int readl1_lonlat(filehandle *l1file, int32_t recnum, l1str *l1rec) {
641  int status;
642  l1rec->iscan = recnum;
643 
644  for (int ip = 0; ip < l1file->npix; ip++) {
645  l1rec->navfail[ip] = 0;
646  l1rec->flags[ip] = 0;
647  }
648 
649  switch (l1file->format) {
650 #ifdef BUILD_HISTORICAL
651  case FT_SEAWIFSL1A:
653  break;
654  case FT_SEAWIFSL1ANC:
656  break;
657 #endif
658  case FT_MODISL1B:
660  break;
661  case FT_MERISL1B:
663  break;
664  case FT_VIIRSL1B:
666  break;
667  case FT_VIIRSL1BNC:
669  break;
670  case FT_HICOL1B:
672  break;
673  case FT_GOCIL1B:
675  break;
676  case FT_OLIL1B:
678  break;
679  case FT_L5TML1B:
681  break;
682  case FT_L7ETML1B:
684  break;
685  case FT_MSIL1C:
687  break;
688  case FT_OCIL1B:
690  break;
691  case FT_L1C:
693  break;
694  case FT_L1CANC:
696  break;
697  case FT_SPEXONE:
699  break;
700  default:
702  break;
703  };
704 
705  if (status != 0) {
706  fprintf(stderr,
707  "-E- %s Line %d: Error reading L1B.\n",
708  __FILE__, __LINE__);
709  return (1);
710  }
711 
712  for (int ip = 0; ip < l1file->npix; ip++) {
713  if (l1rec->lon[ip] <= -180.0 || l1rec->lon[ip] >= 180.0 || isnan(l1rec->lon[ip]) ||
714  l1rec->lat[ip] <= -90.0 || l1rec->lat[ip] >= 90.0 || isnan(l1rec->lat[ip])) {
715  l1rec->navfail[ip] = 1;
716  l1rec->flags[ip] |= NAVFAIL;
717  }
718  }
719 
720  return (0);
721 }
722 
int openl1_ocm2(filehandle *file)
Definition: l1_ocm2.c:104
int openl1_osmi(filehandle *file)
Definition: l1_osmi.c:70
int32 l1file(int32 sdfid, int32 *nsamp, int32 *nscans, int16 *dtynum)
Definition: l1stat_chk.c:586
int closel1_seawifs_netcdf(filehandle *file)
int openl1_meris_CC(filehandle *file)
Definition: l1_meris_CC.c:302
void bindex_set(int32_t wave[], int nwave, int dwave_vswir)
Definition: windex.c:15
@ FT_L1BNCDF
Definition: filetype.h:19
int closel1_safe(filehandle *file)
Definition: l1_safe.cpp:659
int openl1_xcal(filehandle *file)
Definition: l1_xcal.c:31
int readl1_lonlat_seawifs_netcdf(filehandle *file, int32_t recnum, l1str *l1rec)
int readl1_hdf_g(filehandle *file, int32_t recnum, l1str *l1rec)
@ FT_MISR
Definition: filetype.h:59
int closel1_xcal(filehandle *file)
Definition: l1_xcal.c:170
int readl1_l1c_anc(filehandle *file, int32_t line, l1str *l1rec)
Definition: l1_l1c_anc.c:132
MERIS reader.
int closel1_sgli(filehandle *file)
Definition: l1_sgli.c:1334
int status
Definition: l1_czcs_hdf.c:32
@ FT_OCML1B
Definition: filetype.h:34
@ FT_OCML1BDB
Definition: filetype.h:35
@ FT_OLCI
Definition: filetype.h:39
int closel1_ocmdb(filehandle *file)
Definition: l1_ocmdb.c:222
int closel1_hdf_g(filehandle *file)
int closel1_meris_CC(filehandle *file)
Definition: l1_meris_CC.c:537
int openl1_hawkeye(filehandle *file)
Definition: l1_hawkeye.c:161
int readl1_ocia(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_ocia.c:124
int openl1_oli(filehandle *file)
Definition: l1_oli.c:141
int closel1_ocm2(filehandle *file)
Definition: l1_ocm2.c:214
int closel1_prism(filehandle *file)
Definition: l1_prism.c:427
int readl1_spexone(filehandle *file, int32_t line, l1str *l1rec)
Definition: l1_spexone.c:176
int closel1_misr(filehandle *file)
Definition: l1_misr.c:901
#define NULL
Definition: decode_rs.h:63
@ FT_OCIA
Definition: filetype.h:42
int closel1_ocia(filehandle *file)
Definition: l1_ocia.c:318
int closel1_msi(filehandle *file)
Definition: l1_msi.cpp:1016
int readl1_sgli(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_sgli.c:793
int readl1_l1c(filehandle *file, int32_t line, l1str *l1rec)
Definition: l1_l1c.c:172
@ FT_L7ETML1B
Definition: filetype.h:56
#define READ
Definition: l1c.h:33
int closel1_viirs_l1b()
Definition: l1_viirs_l1b.c:894
int closel1_l5tm(filehandle *file)
Definition: l1_l5tm.c:575
read l1rec
int closel1_l1c_anc(filehandle *file)
Definition: l1_l1c_anc.c:187
int openl1_modis(filehandle *l1file)
Definition: l1_modis.c:614
int openl1_l1c_anc(filehandle *file)
Definition: l1_l1c_anc.c:36
int openl1_oci(filehandle *file)
Definition: l1_oci.c:99
int readl1_prism(filehandle *file, int recnum, l1str *l1rec, int lonlat)
Definition: l1_prism.c:310
@ FT_OCTSL1ANC
Definition: filetype.h:37
@ FT_SEAWIFSL1A
Definition: filetype.h:47
@ FT_VIIRSL1A
Definition: filetype.h:51
int readl1_oci(filehandle *file, int32_t line, l1str *l1rec, int lonlat)
Definition: l1_oci.c:434
int readl1_viirs_l1b(filehandle *l1file, const int32_t iline, l1str *l1rec, int lonlat)
Definition: l1_viirs_l1b.c:724
int open_seabass(filehandle *l1file)
Definition: l1_seabass.cpp:31
@ FT_PRISM
Definition: filetype.h:46
int openl1_msi(filehandle *file)
Definition: l1_msi.cpp:480
int closel1_goci(filehandle *file)
Definition: l1_goci.c:188
@ FT_OCTSL1A
Definition: filetype.h:36
void scene_meta_put(l1str *l1rec)
Definition: scene_meta.c:72
int readl1_aviris(filehandle *file, int32_t recnum, l1str *l1rec)
Definition: l1_aviris.c:676
int openl1_ocmdb(filehandle *file)
Definition: l1_ocmdb.c:23
@ FT_VIIRSL1B
Definition: filetype.h:52
@ FT_HICOL1B
Definition: filetype.h:18
int openl1_l7etm(filehandle *file)
Definition: l1_l7etm.c:126
@ FT_AVIRIS
Definition: filetype.h:14
@ FT_MERISL1BSAFE
Definition: filetype.h:29
int openl1(filehandle *l1file)
Definition: l1_io.c:230
int openl1_spexone(filehandle *file)
Definition: l1_spexone.c:45
character(len=1000) if
Definition: names.f90:13
int32_t readl1_octs_netcdf(filehandle *l1file, int32_t recnum, l1str *l1rec)
int closel1_ocm(filehandle *file)
Definition: l1_ocm.c:242
int openl1_viirs_l1b(filehandle *l1file)
Definition: l1_viirs_l1b.c:426
int openl1_sgli(filehandle *l1file)
Definition: l1_sgli.c:366
int readl1_seawifs(filehandle *file, int32_t recnum, l1str *l1rec)
Definition: l1_seawifs.c:444
int readl1_goci(filehandle *file, int recnum, l1str *l1rec, int lonlat)
Definition: l1_goci.c:84
int closel1_modis()
Definition: l1_modis.c:1637
@ FT_MERISCC
Definition: filetype.h:26
@ FT_OCTSL1B
Definition: filetype.h:38
int openl1_misr(filehandle *file)
Definition: l1_misr.c:39
int readl1_msi(filehandle *file, int recnum, l1str *l1rec, int lonlat)
Definition: l1_msi.cpp:637
@ FT_MERISL1B
Definition: filetype.h:27
int openl1_nc_generic(filehandle *file)
int closel1_oci(filehandle *file)
Definition: l1_oci.c:643
read recnum
int openl1_seawifs_netcdf(filehandle *file)
@ FT_VIIRSL1BNC
Definition: filetype.h:53
int closel1_mos(filehandle *l1file)
Definition: l1_mos.c:469
int l1subpix(filehandle *l1file, l1str *l1rec)
Definition: l1subpix.c:17
int readl1_l7etm(filehandle *file, int recnum, l1str *l1rec, int lonlat)
Definition: l1_l7etm.c:339
int readl1_czcs(filehandle *file, int32_t recnum, l1str *l1rec)
Definition: l1_czcs.c:471
int openl1_seawifs(filehandle *file)
Definition: l1_seawifs.c:310
@ FT_OCIS
Definition: filetype.h:44
void closel1(filehandle *l1file)
Definition: l1_io.c:73
int openl1_safe(filehandle *l1file)
Definition: l1_safe.cpp:40
int openl1_ocis(filehandle *file)
Definition: l1_ocis.c:85
l1_input_t * l1_input
Definition: l1_options.c:9
int readl1_xcal(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_xcal.c:72
int readl1_ocis(filehandle *file, int32_t line, l1str *l1rec)
Definition: l1_ocis.c:354
int closel1_l7etm(filehandle *file)
Definition: l1_l7etm.c:462
int readl1_safe(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_safe.cpp:196
int readl1_seawifs_netcdf(filehandle *file, int32_t recnum, l1str *l1rec)
int openl1_hico(filehandle *file)
Definition: l1_hico.c:61
int closel1_seawifs(filehandle *file)
Definition: l1_seawifs.c:622
int openl1_aviris(filehandle *file)
Definition: l1_aviris.c:172
int closel1_osmi(filehandle *file)
Definition: l1_osmi.c:233
int openl1_viirs_h5(filehandle *file)
Definition: l1_viirs_h5.c:622
int closel1_ocis(filehandle *file)
Definition: l1_ocis.c:531
int readl1_ocmdb(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_ocmdb.c:82
int readl1_lonlat(filehandle *l1file, int32_t recnum, l1str *l1rec)
Definition: l1_io.c:640
@ FT_HAWKEYEL1A
Definition: filetype.h:58
no change in intended resolving MODur00064 Corrected handling of bad ephemeris attitude data
Definition: HISTORY.txt:356
@ FT_SPEXONE
Definition: filetype.h:61
int openl1_octs(filehandle *l1file)
Definition: l1_octs.c:328
int closel1_viirs_l1a(filehandle *file)
Definition: l1_viirs_l1a.c:615
int openl1_prism(filehandle *file)
Definition: l1_prism.c:45
int openl1_read_mos(filehandle *l1file)
Definition: l1_mos.c:101
@ FT_L5TML1B
Definition: filetype.h:55
int readl1_oli(filehandle *file, int recnum, l1str *l1rec, int lonlat)
Definition: l1_oli.c:431
int closel1_aviris_nc(filehandle *l1file)
Definition: l1_aviris_nc.c:358
int openl1_ocm(filehandle *file)
Definition: l1_ocm.c:18
@ FT_L1C
Definition: filetype.h:65
int closel1_aci(filehandle *file)
Definition: l1_aci.c:1165
int closel1_octs(filehandle *l1file)
Definition: l1_octs.c:1147
int openl1_viirs_l1a(filehandle *file)
Definition: l1_viirs_l1a.c:62
void closel1_generic(filehandle *l1file)
int readl1_l5tm(filehandle *file, int recnum, l1str *l1rec, int lonlat)
Definition: l1_l5tm.c:430
int readl1_meris_CC(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_meris_CC.c:431
#define BAD_FLT
Definition: jplaeriallib.h:19
void init_l1(l1str *l1rec)
Definition: init_l1.c:11
int closel1_aviris(filehandle *file)
Definition: l1_aviris.c:921
int readl1_octs(filehandle *l1file, int32_t recnum, l1str *l1rec)
Definition: l1_octs.c:510
@ FT_SEABASSRRS
Definition: filetype.h:60
@ FT_OCM2L1B
Definition: filetype.h:33
int readl1_aviris_nc(filehandle *l1file, int32_t recnum, l1str *l1rec)
Definition: l1_aviris_nc.c:161
@ FT_GOCIL1B
Definition: filetype.h:17
int closel1_hawkeye(filehandle *file)
Definition: l1_hawkeye.c:715
int readl1(filehandle *l1file, int32_t recnum, l1str *l1rec)
Definition: l1_io.c:439
int readl1_aci(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_aci.c:136
int openl1_l1c(filehandle *file)
Definition: l1_l1c.c:44
@ FT_MOSL1B
Definition: filetype.h:32
int readl1_meris_N1(filehandle *file, int32_t scan, l1str *l1rec)
reads 1 scan line from MERIS file, loads l1rec
Definition: l1_meris_N1.c:275
int readl1_viirs_h5(filehandle *file, int32_t dline, l1str *l1rec, int lonlat)
Definition: l1_viirs_h5.c:1404
int32_t openl1_octs_netcdf(filehandle *l1file)
int readl1_lonlat_meris_N1(filehandle *file, int32_t scan, l1str *l1rec)
reads 1 scan line from MERIS file, loads l1rec
Definition: l1_meris_N1.c:679
int readl1_nc_generic(filehandle *file, int32_t scan, l1str *l1rec)
@ FT_L1HDF
Definition: filetype.h:20
int openl1_read_hdf_g(filehandle *file)
int close_seabass(filehandle *file)
Definition: l1_seabass.cpp:221
int closel1_meris_N1(filehandle *file)
closes MERIS file, loads l1rec
Definition: l1_meris_N1.c:751
int readl1_lonlat_seawifs(filehandle *file, int32_t recnum, l1str *l1rec)
Definition: l1_seawifs.c:578
@ FT_MSIL1C
Definition: filetype.h:57
@ FT_SGLI
Definition: filetype.h:54
@ FT_L1CANC
Definition: filetype.h:66
int openl1_czcs(filehandle *file)
Definition: l1_czcs.c:360
int openl1_write(filehandle *l1file)
int32_t rdsensorinfo(int32_t, int32_t, const char *, void **)
Definition: rdsensorinfo.c:69
void setflagbits_l1(int level, l1str *l1rec, int32_t ipix)
Definition: setflags_l1.c:131
#define BANDW
Definition: l1.h:53
int closel1_viirs_h5(filehandle *file)
Definition: l1_viirs_h5.c:1754
int closel1_oli(filehandle *file)
Definition: l1_oli.c:670
int readl1_misr(filehandle *l1file, l1str *l1rec)
Definition: l1_misr.c:339
int read_seabass(filehandle *file, l1str *l1rec)
Definition: l1_seabass.cpp:143
int openl1_aci(filehandle *file)
Definition: l1_aci.c:57
@ FT_MODISL1B
Definition: filetype.h:31
int readl1_hawkeye(filehandle *file, int32_t oline, l1str *l1rec)
Definition: l1_hawkeye.c:499
@ FT_OCIL1B
Definition: filetype.h:43
int readl1_viirs_l1a(filehandle *file, int32_t line, l1str *l1rec)
Definition: l1_viirs_l1a.c:254
int i
Definition: decode_rs.h:71
int readl1_mos(filehandle *l1file, int32_t recnum, l1str *l1rec)
Definition: l1_mos.c:388
void get_f0_thuillier_ext(int32_t wl, int32_t width, float *f0)
Definition: get_f0.c:137
int32_t closel1_octs_netcdf(filehandle *l1file)
@ FT_OLIL1B
Definition: filetype.h:41
@ FT_CLASSAVHRR
Definition: filetype.h:15
int readl1_ocm(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_ocm.c:57
@ FT_L1XCAL
Definition: filetype.h:21
int closel1_l1c(filehandle *file)
Definition: l1_l1c.c:232
int openl1_aviris_nc(filehandle *l1file)
Definition: l1_aviris_nc.c:21
int openl1_l5tm(filehandle *file)
Definition: l1_l5tm.c:223
int openl1_ocia(filehandle *file)
Definition: l1_ocia.c:20
int readl1_modis(filehandle *l1file, const int32_t line, l1str *l1rec, int lonlat)
Definition: l1_modis.c:1448
int readl1_osmi(filehandle *file, int32_t recnum, l1str *l1rec)
Definition: l1_osmi.c:154
@ FT_OSMIL1A
Definition: filetype.h:45
int closel1_hico(filehandle *file)
Definition: l1_hico.c:443
@ FT_SEAWIFSL1ANC
Definition: filetype.h:48
int closel1_spexone(filehandle *file)
Definition: l1_spexone.c:231
@ FT_CZCSL1A
Definition: filetype.h:16
int openl1_goci(filehandle *file)
Definition: l1_goci.c:19
int readl1_hico(filehandle *file, int32_t scan, l1str *l1rec, int lonlat)
Definition: l1_hico.c:348
#define NAVFAIL
Definition: l2_flags.h:36
int openl1_meris_N1(filehandle *file)
opens a MERIS file for reading to load into L1 record
Definition: l1_meris_N1.c:112
int readl1_ocm2(filehandle *file, int32_t scan, l1str *l1rec)
Definition: l1_ocm2.c:136
int closel1_czcs(filehandle *file)
Definition: l1_czcs.c:668