001 /*
002 * This file is part of McIDAS-V
003 *
004 * Copyright 2007-2013
005 * Space Science and Engineering Center (SSEC)
006 * University of Wisconsin - Madison
007 * 1225 W. Dayton Street, Madison, WI 53706, USA
008 * https://www.ssec.wisc.edu/mcidas
009 *
010 * All Rights Reserved
011 *
012 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
013 * some McIDAS-V source code is based on IDV and VisAD source code.
014 *
015 * McIDAS-V is free software; you can redistribute it and/or modify
016 * it under the terms of the GNU Lesser Public License as published by
017 * the Free Software Foundation; either version 3 of the License, or
018 * (at your option) any later version.
019 *
020 * McIDAS-V is distributed in the hope that it will be useful,
021 * but WITHOUT ANY WARRANTY; without even the implied warranty of
022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023 * GNU Lesser Public License for more details.
024 *
025 * You should have received a copy of the GNU Lesser Public License
026 * along with this program. If not, see http://www.gnu.org/licenses.
027 */
028
029 package edu.wisc.ssec.mcidasv.data.hydra;
030
031 /**
032 * Utility class to support Joint Polar Satellite System (JPSS) functionality.
033 * Documentation referenced is from Suomi NPP Common Data Format Control Book.
034 * See:
035 * http://jointmission.gsfc.nasa.gov/science/documents.html
036 *
037 * @author tommyj
038 *
039 */
040
041 public abstract class JPSSUtilities {
042
043 public static final String JPSS_FIELD_SEPARATOR = "_";
044
045 // This regular expression matches a Suomi NPP Data Product as defined by the
046 // spec in CDFCB-X Volume 1, Page 21
047 public static final String SUOMI_NPP_REGEX =
048 // Product Id, Multiple (ex: VSSTO-GATMO-VSLTO)
049 "(\\w\\w\\w\\w\\w-)*" +
050 // Product Id, Single (ex: VSSTO)
051 "\\w\\w\\w\\w\\w" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
052 // Spacecraft Id (ex: npp)
053 "\\w\\w\\w" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
054 // Data Start Date (ex: dYYYYMMDD)
055 "d20[0-3]\\d[0-1]\\d[0-3]\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
056 // Data Start Time (ex: tHHMMSSS)
057 "t[0-2]\\d[0-5]\\d[0-6]\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
058 // Data Stop Time (ex: eHHMMSSS)
059 "e[0-2]\\d[0-5]\\d[0-6]\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
060 // Orbit Number (ex: b00015)
061 "b\\d\\d\\d\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
062 // Creation Date (ex: cYYYYMMDDHHMMSSSSSSSS)
063 "c20[0-3]\\d[0-1]\\d[0-3]\\d[0-2]\\d[0-5]\\d[0-6]\\d\\d\\d\\d\\d\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
064 // Origin (ex: navo)
065 "\\w\\w\\w\\w" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
066 // Domain (ex: ops)
067 "\\w\\w\\w" +
068 // HDF5 suffix
069 ".h5";
070
071 public static float[] ATMSChannelCenterFrequencies = {
072 23.8f,
073 31.4f,
074 50.3f,
075 51.76f,
076 52.8f,
077 53.596f,
078 54.40f,
079 54.94f,
080 55.50f,
081 57.29032f,
082 57.29033f,
083 57.29034f,
084 57.29035f,
085 57.29036f,
086 57.29037f,
087 88.20f,
088 165.5f,
089 183.3101f,
090 183.3102f,
091 183.3103f,
092 183.3104f,
093 183.3105f
094 };
095
096 // the list of valid geolocation product ids
097 public static String[] geoProductIDs = {
098 "GATMO",
099 "GCRSO",
100 "GAERO",
101 "GCLDO",
102 "GDNBO",
103 "GNCCO",
104 "GIGTO",
105 "GIMGO",
106 "GITCO",
107 "GMGTO",
108 "GMODO",
109 "GMTCO",
110 "GNHFO",
111 "GOTCO",
112 "GOSCO",
113 "GONPO",
114 "GONCO",
115 "GCRIO",
116 "GATRO",
117 "IVMIM",
118 "VMUGE"
119 };
120
121 // This regular expression matches a Suomi NPP geolocation granule, see
122 // spec in CDFCB-X Volume 1, Page 21
123 public static final String SUOMI_GEO_REGEX =
124 // Geo Id, Single (ex: GMODO)
125 // NOTE: This MUST match the list of product ids in static array above!
126 "(GATMO|GCRSO|GAERO|GCLDO|GDNBO|GNCCO|GIGTO|GIMGO|GITCO|" +
127 "GMGTO|GMODO|GMTCO|GNHFO|GOTCO|GOSCO|GONPO|GONCO|GCRIO|GATRO|IVMIM|VMUGE)" +
128 JPSSUtilities.JPSS_FIELD_SEPARATOR +
129 // Spacecraft Id (ex: npp)
130 "\\w\\w\\w" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
131 // Data Start Date (ex: dYYYYMMDD)
132 "d20[0-3]\\d[0-1]\\d[0-3]\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
133 // Data Start Time (ex: tHHMMSSS)
134 "t[0-2]\\d[0-5]\\d[0-6]\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
135 // Data Stop Time (ex: eHHMMSSS)
136 "e[0-2]\\d[0-5]\\d[0-6]\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
137 // Orbit Number (ex: b00015)
138 "b\\d\\d\\d\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
139 // Creation Date (ex: cYYYYMMDDHHMMSSSSSSSS)
140 "c20[0-3]\\d[0-1]\\d[0-3]\\d[0-2]\\d[0-5]\\d[0-6]\\d\\d\\d\\d\\d\\d\\d" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
141 // Origin (ex: navo)
142 "\\w\\w\\w\\w" + JPSSUtilities.JPSS_FIELD_SEPARATOR +
143 // Domain (ex: ops)
144 "\\w\\w\\w" +
145 // HDF5 suffix
146 ".h5";
147
148 }