L2GEN Science Processing Algorithm (L2GEN - SPA) User's Guide: February 2017
L2GEN Science Processing Algorithm (L2GEN - SPA) User's Guide: February 2017
L2GEN Science Processing Algorithm (L2GEN - SPA) User's Guide: February 2017
Processing Algorithm
(L2GEN_SPA)
User's Guide
Version 8.10.3
February 2017
Users must agree to all terms and conditions in the Software Usage Agreement on the DRL
Web Portal before downloading this software.
Software and documentation published on the DRL Web Portal may occasionally be updated
or modified. The most current versions of DRL software are available at the DRL Web Portal:
http://directreadout.sci.gsfc.nasa.gov/?id=software
Questions relating to the contents or status of this software and its documentation should be
addressed to the DRL via the Contact DRL mechanism at the DRL Web Portal:
http://directreadout.sci.gsfc.nasa.gov/?id=dspContent&cid=66
A Science Processing Algorithm (SPA) is defined as a wrapper and its contained algorithm.
SPAs will function in a standalone, cross-platform environment to serve the needs of the broad
Direct Readout community. Detailed information about SPAs and other DRL technologies is
available at the DRL Web Portal.
Software Description
This software package contains the L2GEN_SPA. The L2GEN algorithm was extracted from
the Ocean Biology Processing Group's (OBPG) SeaWiFS Data Analysis System (SeaDAS).
This SPA produces Moderate Resolution Imaging Spectroradiometer (MODIS) Level 2 Ocean
Color (daytime product, includes Chlorophyll-a [CHLOR_A] concentration) and Sea Surface
Temperature (SST) products from inputs of MODIS Level 1B 1km (MOD021KM/MYD021KM)
products, MODIS Geolocation (MOD03/MYD03) products, and other optional ancillary files.
This SPA also produces Visible Infrared Imaging Radiometer Suite (VIIRS) Ocean Color
(daytime product, includes Chlorophyll-a [CHLOR_A] concentration) and Sea Surface
Temperature (SST) products from inputs of VIIRS Sensor Data Record (SDR) products, the
VIIRS Moderate Resolution Terrain Corrected Geolocation product and optional ancillaries.
http://seadas.gsfc.nasa.gov/
Software Version
Version 1.5 of the DRL algorithm wrapper was used to package the SPA described in this
document. The SPA uses the L2GEN (Version 8.10.3) processing code embedded within the
SeaDAS (Version 7.3) to generate MODIS and VIIRS Ocean products. This SPA represents
MODIS Collections 5 and 6.
Copyright 1999-2007, United States Government as represented by the Administrator for the
National Aeronautics and Space Administration. All Rights Reserved.
Credits
SeaDAS and its component L2GEN algorithm were provided to the DRL by the OBPG at the
NASA Goddard Space Flight Center.
Prerequisites
To run this package, you must have the Java Development Kit (JDK) or Java Runtime
Engine (JRE) (Java 1.6.0_25 or higher) installed on your computer, and have the Java
installation bin/ subdirectory in your PATH environment variable.
This SPA’s VIIRS processing component uses the VIIRS moderate resolution SDR products
(Bands M1-M16), the VIIRS Moderate Resolution Terrain Corrected Geolocation product,
along with ancillary leapsec, meteorology, ozone, sea ice and SST files as inputs. Outputs
are the VIIRS Level 2 Sea Surface Temperature and Ocean Color products.
Installing into an IPOPP Framework: This SPA can also be installed dynamically into an
IPOPP framework to automate production of MODIS/VIIRS Sea Surface Temperature and
Ocean Color Level 2 data products. The SPA installation process will install its SPA service(s)
into IPOPP. An SPA service is an IPOPP agent that provides the mechanism necessary for
running an SPA automatically within the IPOPP framework. Once this SPA is installed, users
must enable the SPA service(s) corresponding to this SPA along with any other prerequisite
SPA service(s). Instructions for installing an SPA and enabling its services are contained in
the IPOPP User’s Guide (available on the DRL Web Portal). The SPA services associated
with this SPA are listed in Appendix A.
$ ./run-chlor_a.sh
$ ./run-sst.sh
$ ./run-l2gen_viirs-oc.sh
$ ./run-l2gen_viirs-sst.sh
A successful execution usually requires 21 minutes or more for all four scripts, depending on
the speed of your computer. If everything is working properly, the scripts will terminate with
messages such as:
You can cd to the output directory to verify that the science products exist. Test output
product(s) are available for comparison in the testdata/output directory. These test output
product(s) were generated on a 64-bit PC architecture computer running CentOS 7. The
output products serve as an indicator of expected program output. Use a comparison utility
(such as hdiff) to compare your output product(s) to those provided in the testdata/output
directory. Locally generated files may differ slightly from the provided output files because of
differences in machine architecture or operating systems.
If there is a problem and the code terminates abnormally, the problem can be identified using
the log files. Log files are automatically generated within the directory used for execution.
They start with stdfile* and errfile*. Other log and intermediate files may be generated
automatically within the directory used for execution. They are useful for traceability and
debugging purposes. However it is strongly recommended that users clean up log files and
intermediate files left behind in the run directory before initiating a fresh execution of the SPA.
Intermediate files from a previous run may affect a successive run and produce ambiguous
results. Please report any errors that cannot be fixed to the DRL.
Specify input parameters using <label value> pairs: To execute the 'run' scripts, you must
supply the required input and output parameters. Input and output parameters are usually file
paths or other values (e.g., a scan time parameter). Each parameter is specified on the
command line by a <label value> pair. Labels are simply predefined names for parameters.
Each label must be followed by its actual value. Each process has its own set of <label value>
pairs that must be specified in order for it to execute. Some of these pairs are optional,
meaning the process would still be able to execute even if that parameter is not supplied. The
three types of <label value> pairs that the L2GEN_SPA uses are:
a) Input file label/values. These are input file paths. Values are absolute or relative paths
to the corresponding input file.
b) Output file label/values. These are output files that are produced by the SPA. Values
are absolute or relative paths of the files you want to generate.
c) Parameter label/values. These are parameters that need to be passed onto the SPA.
The following tables contain labels, and their descriptions, required by the L2GEN_SPA.
ncep_met_1 Directory path and filename of the For recent meteorological ancillary files:
Near-Real Time (NRT) National ftp://is.sci.gsfc.nasa.gov/ancillary/temporal/gl
(optional) Centers for Environmental obal/oceansmet/SyyyyDDDhh_NCEP.MET
Prediction (NCEP)
meteorological ancillary data For archived meteorology ancillary files:
product available for the nearest ftp://is.sci.gsfc.nasa.gov/ArchivedAncillary/te
time preceding the time of the mporal/global/oceansmet/SyyyyDDDhh_NCE
input swath’s first scan line. P.MET
ncep_met_2 Directory path and filename of the where yyyy, DDD, hh represents the year, day
NRT NCEP meteorological of year, and hour for the ancillary file.
(optional) ancillary data product available
following the time of the input
swath’s first scan line.
ncep_met_3 Directory path and filename of the
NRT NCEP meteorological
(optional) ancillary data product for the
nearest time following the time of
the input swath’s last scan line.
obpg.noaa_toast_1 Directory path and filename of the For recent ozone ancillary files:
climatological product or the NRT ftp://is.sci.gsfc.nasa.gov/ancillary/temporal/gl
(optional) ozone ancillary data product obal/oceanstoast/SyyyyDDD00DDDhh_TOA
available for the nearest time ST.OZONE
preceding the time of the input
swath’s first scan line. Ancillary For archived ozone ancillary files:
ozone data can come from the ftp://is.sci.gsfc.nasa.gov/ArchivedAncillary/te
Earth Probe Total Ozone mporal/global/oceanstoast/SyyyyDDD00DDD
Mapping Spectrometer hh_TOAST.OZONE
(EPTOMS) or Total Ozone
where yyyy, DDD, hh represents the year, day
Analysis using SBUV/2 and
of year, and hour for the ancillary file.
TOVS (TOAST).
opbg.noaa_toast_2 Directory path and filename of the
NRT ozone ancillary data product
(optional) (EPTOMS or TOAST) available
for the nearest time following the
time of the input swath’s first scan
line.
obpg.noaa_toast_3 Directory path and filename of the
NRT ozone ancillary data product
(optional) (EPTOMS or TOAST) for the
nearest time following the time of
the input swath’s last scan line.
platform
Value can be either ‘aqua’ or ‘terra’. Indicates the spacecraft of the MODIS L1B
and Geolocation files used as input.
noaa_oisst Directory path and filename of the For recent OISST ancillary files:
weekly NOAA Optimum ftp://is.sci.gsfc.nasa.gov/ancillary/temporal/gl
(optional) Interpolated SST (OISST) obal/sst/oisst.yyyymmdd
ancillary input for the nearest time
prior to the time period For archived OISST ancillary files:
corresponding to the input swath. ftp://is.sci.gsfc.nasa.gov/ArchivedAncillary/te
mporal/global/sst/oisst.yyyymmdd
ftp://is.sci.gsfc.nasa.gov/ArchivedAncillary/te
mporal/global/oceansice/NyyyyDDD00_SEAI
CE_NSIDC_24h.hdf
modis.chlor_a MODIS Ocean Color output HDF file path Please refer to
(Daytime only) oceancolor.gsfc.nasa.gov/DOCS/
(only required for
MODIS Ocean Color
processing)
modis.sst MODIS Sea Surface Temperature output
HDF file path
(only required for
MODIS Sea Surface
Temperature
processing)
Output File Labels Description Output Format Description
(VIIRS-exclusive)
viirs.oc.hdf VIIRS Ocean Color output HDF file path Please refer to
(Daytime only) oceancolor.gsfc.nasa.gov/DOCS/
(only required for
VIIRS Ocean Color
processing)
viirs.sst.hdf VIIRS Sea Surface Temperature output
HDF file path
(only required for
VIIRS Sea Surface
Temperature
processing)
Execute the 'run': The following are examples of command lines to run the MODIS Ocean
Color, MODIS Sea Surface Temperature, VIIRS Ocean Color, and VIIRS Sea Surface
Temperature algorithms respectively from the testscripts directory:
$ ../wrapper/chlor_a/run \
modis.mxd021km ../testdata/input/MOD021KM.A2015266.1530.005.2015267021159.hdf \
modis.mxd03 ../testdata/input/MOD03.A2015266.1530.005.2015266202157.hdf \
modis.chlor_a ../testdata/output/CHLOR_A.hdf \
platform terra \
ncep_met_1 ../testdata/input/S201526612_NCEP.MET \
obpg.noaa_toast_1 ../testdata/input/S20152660026623_TOAST.OZONE \
noaa_oisst ../testdata/input/oisst.20150916 \
obpg_seaice ../testdata/input/N201526600_SEAICE_NSIDC_24h.hdf
$ ../wrapper/sst/run \
modis.mxd021km ../testdata/input/MOD021KM.A2015266.1530.005.2015267021159.hdf \
modis.mxd03 ../testdata/input/MOD03.A2015266.1530.005.2015266202157.hdf \
modis.sst ../testdata/output/SST.hdf \
platform terra \
$../wrapper/l2gen_viirs-oc/run \
viirs.svm01 ../testdata/input/SVM01_npp_d20150923_t1817209_e1818451_b20237_c20150924134117287877_noaa_ops.h5 \
viirs.svm02 ../testdata/input/SVM02_npp_d20150923_t1817209_e1818451_b20237_c20150924134142485983_noaa_ops.h5 \
viirs.svm03 ../testdata/input/SVM03_npp_d20150923_t1817209_e1818451_b20237_c20150924134137140566_noaa_ops.h5 \
viirs.svm04 ../testdata/input/SVM04_npp_d20150923_t1817209_e1818451_b20237_c20150924134126384603_noaa_ops.h5 \
viirs.svm05 ../testdata/input/SVM05_npp_d20150923_t1817209_e1818451_b20237_c20150924134126505688_noaa_ops.h5 \
viirs.svm06 ../testdata/input/SVM06_npp_d20150923_t1817209_e1818451_b20237_c20150924134146148511_noaa_ops.h5 \
viirs.svm07 ../testdata/input/SVM07_npp_d20150923_t1817209_e1818451_b20237_c20150924134150937632_noaa_ops.h5 \
viirs.svm08 ../testdata/input/SVM08_npp_d20150923_t1817209_e1818451_b20237_c20150924134139285441_noaa_ops.h5 \
viirs.svm09 ../testdata/input/SVM09_npp_d20150923_t1817209_e1818451_b20237_c20150924134150357866_noaa_ops.h5 \
viirs.svm10 ../testdata/input/SVM10_npp_d20150923_t1817209_e1818451_b20237_c20150924134129911091_noaa_ops.h5 \
viirs.svm11 ../testdata/input/SVM11_npp_d20150923_t1817209_e1818451_b20237_c20150924134153108115_noaa_ops.h5 \
viirs.svm12 ../testdata/input/SVM12_npp_d20150923_t1817209_e1818451_b20237_c20150924134152861784_noaa_ops.h5 \
viirs.svm13 ../testdata/input/SVM13_npp_d20150923_t1817209_e1818451_b20237_c20150924134154333635_noaa_ops.h5 \
viirs.svm14 ../testdata/input/SVM14_npp_d20150923_t1817209_e1818451_b20237_c20150924134140005813_noaa_ops.h5 \
viirs.svm15 ../testdata/input/SVM15_npp_d20150923_t1817209_e1818451_b20237_c20150924134140682093_noaa_ops.h5 \
viirs.svm16 ../testdata/input/SVM16_npp_d20150923_t1817209_e1818451_b20237_c20150924134141946964_noaa_ops.h5 \
viirs.gmtco ../testdata/input/GMTCO_npp_d20150923_t1817209_e1818451_b20237_c20150924134152153831_noaa_ops.h5 \
viirs.oc.hdf ../testdata/output/VIIRS-OC.hdf \
ncep_met1 ../testdata/input/S201526618_NCEP.MET \
obpg.noaa_toast1 ../testdata/input/S20152660026623_TOAST.OZONE \
noaa_oisst ../testdata/input/oisst.20150916 \
leapsec ../testdata/input/leapsec.2017012700.dat \
obpg_seaice ../testdata/input/N201526600_SEAICE_NSIDC_24h.hdf
$../wrapper/l2gen_viirs-sst/run \
viirs.svm01 ../testdata/input/SVM01_npp_d20150923_t1817209_e1818451_b20237_c20150924134117287877_noaa_ops.h5 \
viirs.svm02 ../testdata/input/SVM02_npp_d20150923_t1817209_e1818451_b20237_c20150924134142485983_noaa_ops.h5 \
viirs.svm03 ../testdata/input/SVM03_npp_d20150923_t1817209_e1818451_b20237_c20150924134137140566_noaa_ops.h5 \
viirs.svm04 ../testdata/input/SVM04_npp_d20150923_t1817209_e1818451_b20237_c20150924134126384603_noaa_ops.h5 \
viirs.svm05 ../testdata/input/SVM05_npp_d20150923_t1817209_e1818451_b20237_c20150924134126505688_noaa_ops.h5 \
viirs.svm06 ../testdata/input/SVM06_npp_d20150923_t1817209_e1818451_b20237_c20150924134146148511_noaa_ops.h5 \
viirs.svm07 ../testdata/input/SVM07_npp_d20150923_t1817209_e1818451_b20237_c20150924134150937632_noaa_ops.h5 \
viirs.svm08 ../testdata/input/SVM08_npp_d20150923_t1817209_e1818451_b20237_c20150924134139285441_noaa_ops.h5 \
viirs.svm09 ../testdata/input/SVM09_npp_d20150923_t1817209_e1818451_b20237_c20150924134150357866_noaa_ops.h5 \
viirs.svm10 ../testdata/input/SVM10_npp_d20150923_t1817209_e1818451_b20237_c20150924134129911091_noaa_ops.h5 \
viirs.svm11 ../testdata/input/SVM11_npp_d20150923_t1817209_e1818451_b20237_c20150924134153108115_noaa_ops.h5 \
viirs.svm12 ../testdata/input/SVM12_npp_d20150923_t1817209_e1818451_b20237_c20150924134152861784_noaa_ops.h5 \
viirs.svm13 ../testdata/input/SVM13_npp_d20150923_t1817209_e1818451_b20237_c20150924134154333635_noaa_ops.h5 \
viirs.svm14 ../testdata/input/SVM14_npp_d20150923_t1817209_e1818451_b20237_c20150924134140005813_noaa_ops.h5 \
viirs.svm15 ../testdata/input/SVM15_npp_d20150923_t1817209_e1818451_b20237_c20150924134140682093_noaa_ops.h5 \
viirs.svm16 ../testdata/input/SVM16_npp_d20150923_t1817209_e1818451_b20237_c20150924134141946964_noaa_ops.h5 \
viirs.gmtco ../testdata/input/GMTCO_npp_d20150923_t1817209_e1818451_b20237_c20150924134152153831_noaa_ops.h5 \
viirs.sst.hdf ../testdata/output/VIIRS-SST.hdf \
ncep_met1 ../testdata/input/S201526618_NCEP.MET \
obpg.noaa_toast1 ../testdata/input/S20152660026623_TOAST.OZONE \
noaa_oisst ../testdata/input/oisst.20150916 \
leapsec ../testdata/input/leapsec.2017012700.dat \
obpg_seaice ../testdata/input/N201526600_SEAICE_NSIDC_24h.hdf
A successful execution usually requires 21 minutes or more for all four scripts, depending on
the speed of your computer. If execution fails, you will see an error message indicating the
cause of failure (e.g., a file cannot be found, or a label cannot be recognized). Correct it and
run again. If the problem has some other cause, it can be identified using the log files. Log
files are automatically generated within the directory used for execution. They start with
stdfile* and errfile* and can be deleted after execution. Other log and intermediate files may
NOTES:
1. Meteorology: During near-real time Direct Broadcast (DB) processing, you may either
use ncep_met_1 (ncep_met1 for VIIRS) only to specify a single meteorology input, or
specify no meteorology ancillary inputs at all. In case none of the three optional
meteorology inputs is specified, a default climatological meteorology product (included
with this package) will be used automatically. However during non-real time
processing, the user may use all three meteorological ancillary inputs.
2. Ozone: During NRT DB processing, you may either use obpg.noaa_toast_1
(obpg.noaa_toast1 for VIIRS) only to specify a single ozone input, or specify no ozone
ancillary inputs at all. In case none of the three optional ozone inputs is specified, a
default ozone product (included with this package) will be used automatically. However
during non-real time processing, the user may use all three ozone ancillary inputs.
3. SST and SEAICE: If the noaa_oisst or the obpg_seaice inputs are not specified, a
default climatological SST and SEAICE ancillaries (included with this package) will be
used automatically.
4. Leapsec ancillary files are cumulative. Use the latest leapsec file available regardless
of the input file date. The leapsec files provided by the DRL are time-stamped as
follows: leapsec.yyyymmddhh.dat. If not specified, a default leapsec file (included with
this package) will be used automatically.
5. The data products generated by this SPA may be visualized with the DRL's H2G_SPA
(Hierarchical Data Format [HDF] to Georeferenced Tagged Image File Format
[GeoTIFF] Converter Science Processing Algorithm). H2G is designed specifically for
Direct Readout applications to create geolocated GeoTIFF images, jpeg browse
images, and png browse images for parameter datasets in SNPP products and EOS
products. H2G_SPA and its User Guide are available for download from the DRL Web
Portal. Please refer to Appendix A for information on enabling image production for this
SPA in IPOPP.