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