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 }