OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
modis_GEO.py
Go to the documentation of this file.
1 #! /usr/bin/env python3
2 """
3 Wrapper program to produce MODIS GEO files.
4 """
5 import argparse
6 from shlex import quote
7 import sys
8 import seadasutils.anc_utils as anc_utils
9 from modis.modis_utils import buildpcf, modis_env
10 import modis.modis_GEO_utils as modisGEO
11 from seadasutils.setupenv import env
12 
13 
14 def main():
15  """
16  Driver function for the program.
17  """
18  version = "1.1"
19 
20  # Read commandline options...
21  parser = argparse.ArgumentParser(prog="modis_GEO")
22  parser.add_argument('--version', action='version', version='%(prog)s ' + version)
23  parser.add_argument("filename", nargs='?',
24  help="Input L1A file", metavar="L1AFILE")
25  parser.add_argument("-p", "--parfile",
26  help="Parameter file containing program inputs", metavar="PARFILE")
27  parser.add_argument("-o", "--output",
28  help="Output GEO filename - defaults to '(A|T)YYYYDDDHHMMSS.GEO'", metavar="GEOFILE")
29  parser.add_argument("--att1",
30  help="Input attitude filename 1 (chronological)", metavar="ATT1")
31  parser.add_argument("--att2",
32  help="Input attitude filename 2 (chronological)", metavar="ATT2")
33  parser.add_argument("--att3",
34  help="Input attitude filename 3 (chronological)", metavar="ATT3")
35  parser.add_argument("--eph1",
36  help="Input ephemeris filename 1 (chronological)", metavar="EPH1")
37  parser.add_argument("--eph2",
38  help="Input ephemeris filename 2 (chronological)", metavar="EPH2")
39  parser.add_argument("--eph3",
40  help="Input ephemeris filename 3 (chronological)", metavar="EPH3")
41  ancdb_help_text = "Use a custom filename for ancillary database. If " \
42  "full path not given, ANCDB is assumed to exist "\
43  "(or will be created) under " + \
44  anc_utils.DEFAULT_ANC_DIR_TEXT + "/log/. If " + \
45  anc_utils.DEFAULT_ANC_DIR_TEXT + "/log/ does not " \
46  "exist, ANCDB is assumed (or will be created) " \
47  "under the current working directory"
48  parser.add_argument("--ancdb",
49  help=ancdb_help_text, metavar="ANCDB",default='ancillary_data.db')
50  parser.add_argument("--ancdir",
51  help="Use a custom directory tree for ancillary files", metavar="ANCDIR")
52  parser.add_argument("-c", "--curdir", action="store_true",
53  default=False, help="Download ancillary files directly into current working directory")
54  parser.add_argument("-r", "--refreshDB", action="store_true", default=False,
55  help="Remove existing database records and re-query for ancillary files")
56  parser.add_argument("-f", "--force-download", action="store_true", dest='force', default=False,
57  help="Force download of ancillary files, even if found on hard disk")
58  parser.add_argument("--disable-download", action="store_false", default=True,
59  help="Disable download of ancillary files not found on hard disk")
60  parser.add_argument("--timeout", type=float, default=10.0, metavar="TIMEOUT",
61  help="set the network timeout in seconds")
62  parser.add_argument("--threshold", type=float, default=95.0,
63  help="percentage of geo-populated pixels required to pass geocheck validation test",
64  metavar="THRESHOLD")
65  parser.add_argument("-d", "--enable-dem", action="store_true", default=False,
66  help="Enable MODIS terrain elevation correction")
67  parser.add_argument("-v", "--verbose", action="count",
68  default=0, help="print status messages")
69  parser.add_argument("--log", action="store_true",
70  default=False, help="Save processing log file(s)")
71 
72 
73  args = parser.parse_args()
74 
75  if args.parfile is None and args.filename is None:
76  parser.print_help()
77  sys.exit(1)
78 
79  parfile = None
80  if args.parfile:
81  parfile = quote(args.parfile)
82 
83  outputfile = None
84  if args.output:
85  outputfile = quote(args.output)
86 
87 
88  m = modisGEO.modis_geo(filename=quote(args.filename),
89  parfile=parfile,
90  geofile=outputfile,
91  a1=args.att1,
92  a2=args.att2,
93  a3=args.att3,
94  e1=args.eph1,
95  e2=args.eph2,
96  e3=args.eph3,
97  terrain=args.enable_dem,
98  geothresh=args.threshold,
99  ancdir=args.ancdir,
100  curdir=args.curdir,
101  ancdb=args.ancdb,
102  refreshDB=args.refreshDB,
103  forcedl=args.force,
104  download=args.disable_download,
105  log=args.log,
106  verbose=args.verbose,
107  timeout=args.timeout)
108 
109  env(m)
110  modis_env(m)
111  m.chk()
112  m.utcleap()
113  try:
114  m.atteph()
115  except SystemExit:
116  print ("Failed to identify/retrieve attitude/ephemeris required to geolocate %s; exiting." % args.filename)
117  raise
118  buildpcf(m)
119  m.run()
120  return 0
121 
122 if __name__ == "__main__":
123  sys.exit(main())
def main()
Definition: modis_GEO.py:14
def modis_env(self)
Definition: modis_utils.py:227
def buildpcf(self)
Definition: modis_utils.py:17
def env(self)
Definition: setupenv.py:7