001: package it.geosolutions.imageio.plugins.jhdf.aps;
002:
003: import it.geosolutions.imageio.plugins.jhdf.HDFProducts;
004:
005: public abstract class APSProperties {
006:
007: public static class APSProducts extends HDFProducts {
008: public APSProducts() {
009: super (3);
010: HDFProduct sst = new HDFProduct("sst", 1);
011: setHDFProduct(0, sst);
012:
013: HDFProduct chl_oc3 = new HDFProduct("chl_oc3", 1);
014: setHDFProduct(1, chl_oc3);
015:
016: HDFProduct k_490 = new HDFProduct("K_490", 1);
017: setHDFProduct(2, k_490);
018:
019: //TODO: Add more APS supported products
020: }
021: }
022:
023: public final static APSProperties.APSProducts apsProducts = new APSProperties.APSProducts();
024:
025: /**
026: * -------------------------
027: * Standard: File Attributes
028: * -------------------------
029: */
030:
031: /** The name of the product */
032: final static String STD_FA_FILE = "file";
033:
034: /** Always set to UNCLASSIFIED */
035: final static String STD_FA_FILECLASSIFICATION = "fileClassification";
036:
037: /** Either EXPERIMENTAL or OPERATIONAL */
038: final static String STD_FA_FILESTATUS = "fileStatus";
039:
040: /** One of NRL Level-3 / NRL Level-3 Mosaic / NRL Level-4 */
041: final static String STD_FA_FILETITLE = "fileTitle";
042:
043: /** The version of APS Data format */
044: final static String STD_FA_FILEVERSION = "fileVersion";
045:
046: /** The agency which created the file */
047: final static String STD_FA_CREATEAGENCY = "createAgency";
048:
049: /** The version of the software which created the file */
050: final static String STD_FA_CREATESOFTWARE = "createSoftware";
051:
052: /** The hardware/software platform the file was created on */
053: final static String STD_FA_CREATEPLATFORM = "createPlatform";
054:
055: /** The date and time when the file was created */
056: final static String STD_FA_CREATETIME = "createTime";
057:
058: /** The name of the user that created this file */
059: final static String STD_FA_CREATEUSER = "createUser";
060:
061: final static String[] STD_FA_ATTRIB = new String[] { STD_FA_FILE,
062: STD_FA_FILECLASSIFICATION, STD_FA_FILESTATUS,
063: STD_FA_FILETITLE, STD_FA_FILEVERSION, STD_FA_CREATEAGENCY,
064: STD_FA_CREATESOFTWARE, STD_FA_CREATEPLATFORM,
065: STD_FA_CREATETIME, STD_FA_CREATEUSER };
066:
067: /**
068: * -------------------------
069: * Standard: Time Attributes
070: * -------------------------
071: */
072:
073: /** UTC start time as an ASCII string */
074: final static String STD_TA_TIMESTART = "timeStart";
075:
076: /** UTC year of data start, e.g. 2007 */
077: final static String STD_TA_TIMESTARTYEAR = "timeStartYear";
078:
079: /** UTC day-of-year of data start (1-366) */
080: final static String STD_TA_TIMESTARTDAY = "timeStartDay";
081:
082: /** UTC milliseconds-of-day of data start (1-86400000) */
083: final static String STD_TA_TIMESTARTTIME = "timeStartTime";
084:
085: /** UTC end time as an ASCII string */
086: final static String STD_TA_TIMEEND = "timeEnd";
087:
088: /** UTC year of data end, e.g. 2007 */
089: final static String STD_TA_TIMEENDYEAR = "timeEndYear";
090:
091: /** UTC day-of-year of data end (1-366) */
092: final static String STD_TA_TIMEENDDAY = "timeEndDay";
093:
094: /** UTC milliseconds-of-day of data end (1-86400000) */
095: final static String STD_TA_TIMEENDTIME = "timeEndTime";
096:
097: /**
098: * Flag indicating if data collected during day or night. May be one of Day,
099: * Night, Day/Night
100: */
101: final static String STD_TA_TIMEDAYNIGHT = "timeDayNight";
102:
103: final static String[] STD_TA_ATTRIB = new String[] {
104: STD_TA_TIMESTART, STD_TA_TIMESTARTYEAR,
105: STD_TA_TIMESTARTDAY, STD_TA_TIMESTARTTIME, STD_TA_TIMEEND,
106: STD_TA_TIMEENDYEAR, STD_TA_TIMEENDDAY, STD_TA_TIMEENDTIME,
107: STD_TA_TIMEDAYNIGHT };
108:
109: /**
110: * ---------------------------
111: * Standard: Sensor Attributes
112: * ---------------------------
113: */
114:
115: /** AVHRR/3, SeaWiFS, MODIS */
116: final static String STD_SA_SENSOR = "sensor";
117:
118: /** Platform carrying sensor, like Orbview-2, NOAA-12, MODIS-AQUA */
119: final static String STD_SA_SENSORPLATFORM = "sensorPlatform";
120:
121: /** Agency/Owner of Sensor */
122: final static String STD_SA_SENSORAGENCY = "sensorAgency";
123:
124: /** Type of sensor: scanner, pushbroom, whiskbroom */
125: final static String STD_SA_SENSORTYPE = "sensorType";
126:
127: /** Description of spectrum: visible, near-IR, thermal */
128: final static String STD_SA_SENSORSPECTRUM = "sensorSpectrum";
129:
130: /** Number of Bands */
131: final static String STD_SA_SENSORNUMBEROFBANDS = "sensorNumberOfBands";
132:
133: /** Units of wavelengths, like nm */
134: final static String STD_SA_SENSORBANDUNITS = "sensorBandUnits";
135:
136: /** Center wavelengths */
137: final static String STD_SA_SENSORBANDS = "sensorBands";
138:
139: /** Nominal width of bands */
140: final static String STD_SA_SENSORBANDWIDTHS = "sensorBandWidths";
141:
142: /** Nominal Altitude of sensor */
143: final static String STD_SA_SENSORNOMINALALTITUDEINKM = "sensorNominalAltitudeInKM";
144:
145: /** Distance on earth of Field of View in kilometers */
146: final static String STD_SA_SENSORSCANWIDTHINKM = "sensorScanWidthInKM";
147:
148: /** Distance on earth of a single pixel in kilometers */
149: final static String STD_SA_SENSORRESOLUTIONINKM = "sensorResolutionInKM";
150:
151: /** Type of platform */
152: final static String STD_SA_SENSORPLATFORMTYPE = "sensorPlatformType";
153:
154: final static String[] STD_SA_ATTRIB = new String[] { STD_SA_SENSOR,
155: STD_SA_SENSORPLATFORM, STD_SA_SENSORAGENCY,
156: STD_SA_SENSORTYPE, STD_SA_SENSORSPECTRUM,
157: STD_SA_SENSORNUMBEROFBANDS, STD_SA_SENSORBANDUNITS,
158: STD_SA_SENSORBANDS, STD_SA_SENSORBANDWIDTHS,
159: STD_SA_SENSORNOMINALALTITUDEINKM,
160: STD_SA_SENSORSCANWIDTHINKM, STD_SA_SENSORRESOLUTIONINKM,
161: STD_SA_SENSORPLATFORMTYPE };
162:
163: /**
164: * -----------------------------------------
165: * Product file: Input Parameters Attributes
166: * -----------------------------------------
167: */
168:
169: /** Name of the calibration file used. SeaWiFS/MOS specific. */
170: final static String PFA_IPA_INPUTCALIBRATIONFILE = "inputCalibrationFile";
171:
172: /** A string indicating the options used during the processing of the file */
173: final static String PFA_IPA_INPUTPARAMETER = "inputParameter";
174:
175: /** The mask defined as an integer */
176: final static String PFA_IPA_INPUTMASKSINT = "inputMasksInt";
177:
178: /**
179: * A comma seperated list of flags that were used as masks during
180: * processing.
181: */
182: final static String PFA_IPA_INPUTMASKS = "inputMasks";
183:
184: /** A comma seperated list of products stored in this file. */
185: final static String PFA_IPA_PRODLIST = "prodList";
186:
187: /** Version of processing */
188: final static String PFA_IPA_PROCESSINGVERSION = "processingVersion";
189:
190: final static String[] PFA_IPA_ATTRIB = new String[] {
191: PFA_IPA_INPUTCALIBRATIONFILE, PFA_IPA_INPUTPARAMETER,
192: PFA_IPA_INPUTMASKSINT, PFA_IPA_INPUTMASKS,
193: PFA_IPA_PRODLIST, PFA_IPA_PROCESSINGVERSION };
194:
195: /**
196: * -----------------------------------
197: * Product file: Navigation Attributes
198: * -----------------------------------
199: */
200:
201: /** Navigation type of data. Always set to 'mapped' */
202: final static String PFA_NA_NAVTYPE = "navType";
203:
204: /** Map projection system used. Always set to NRL(USGS) */
205: final static String PFA_NA_MAPPROJECTIONSYSTEM = "mapProjectionSystem";
206:
207: /**
208: * Name of the SDS included in the file that contains the map projection
209: * parameter values.
210: */
211: final static String PFA_NA_MAPPROJECTION = "mapProjection";
212:
213: /** Latitude and longitude of upper left (1,1) point of each product. */
214: final static String PFA_NA_MAPPEDUPERLEFT = "mappedUpperLeft";
215:
216: /** Latitude and longitude of upper right (1,n) point of each product. */
217: final static String PFA_NA_MAPPEDUPPERRIGHT = "mappedUpperRight";
218:
219: /** Latitude and longitude of lower left (m,1) point of each product. */
220: final static String PFA_NA_MAPPEDLOWERLEFT = "mappedLowerLeft";
221:
222: /** Latitude and longitude of lower right (m,n) point of each product. */
223: final static String PFA_NA_MAPPEDLOWERRIGHT = "mappedLowerRight";
224:
225: final static String[] PFA_NA_ATTRIB = new String[] {
226: PFA_NA_NAVTYPE, PFA_NA_MAPPROJECTIONSYSTEM,
227: PFA_NA_MAPPROJECTION, PFA_NA_MAPPEDUPERLEFT,
228: PFA_NA_MAPPEDUPPERRIGHT, PFA_NA_MAPPEDLOWERLEFT,
229: PFA_NA_MAPPEDLOWERRIGHT };
230:
231: /**
232: * ----------------------------------------------------
233: * Product file: Input Geographical Coverage Attributes
234: * ----------------------------------------------------
235: */
236:
237: /**
238: * latitude and longitude of upper left (1,1) point of original input data.
239: */
240: final static String PFA_IGCA_LOCALEUPPERLEFT = "localeUpperLeft";
241:
242: /**
243: * latitude and longitude of upper right (1,n) point of original input data.
244: */
245: final static String PFA_IGCA_LOCALEUPPERRIGHT = "localeUpperRight";
246:
247: /**
248: * latitude and longitude of lower left (m,1) point of original input data.
249: */
250: final static String PFA_IGCA_LOCALELOWERLEFT = "localeLowerLeft";
251:
252: /**
253: * latitude and longitude of lower right (m,n) point of original input data.
254: */
255: final static String PFA_IGCA_LOCALELOWERRIGHT = "localeLowerRight";
256:
257: /** latitude and longitude of NorthWestern point of original input data. */
258: final static String PFA_IGCA_LOCALENWCORNER = "localeNWCorner";
259:
260: /** latitude and longitude of NorthEastern point of original input data. */
261: final static String PFA_IGCA_LOCALENECORNER = "localeNECorner";
262:
263: /** latitude and longitude of SouthWestern point of original input data. */
264: final static String PFA_IGCA_LOCALESWCORNER = "localeSWCorner";
265:
266: /** latitude and longitude of SouthEastern point of original input data. */
267: final static String PFA_IGCA_LOCALESECORNER = "localeSECorner";
268:
269: /** */
270: final static String[] PFA_IGCA_ATTRIB = new String[] {
271: PFA_IGCA_LOCALEUPPERLEFT, PFA_IGCA_LOCALEUPPERRIGHT,
272: PFA_IGCA_LOCALELOWERLEFT, PFA_IGCA_LOCALELOWERRIGHT,
273: PFA_IGCA_LOCALENWCORNER, PFA_IGCA_LOCALENECORNER,
274: PFA_IGCA_LOCALESWCORNER, PFA_IGCA_LOCALESECORNER };
275:
276: /**
277: * --------------------------
278: * Product Dataset Attributes
279: * --------------------------
280: */
281:
282: /**
283: * This string contains the version of the software which created the
284: * product.
285: */
286: final static String PDSA_CREATESOFTWARE = "createSoftware";
287:
288: /** This string contains the date and time when the product was created */
289: final static String PDSA_CREATETIME = "createTime";
290:
291: /**
292: * This string contains a triple describing the cpu-machine-os which created
293: * the scientific data set
294: */
295: final static String PDSA_CREATEPLATFORM = "createPlatform";
296:
297: /** This is a description of the product. */
298: final static String PDSA_PRODUCTNAME = "productName";
299:
300: /** This is a notation about the algorithm, usually a paper reference. */
301: final static String PDSA_PRODUCTALGORITHM = "productAlgorithm";
302:
303: /** This is a description of the units of the product. */
304: final static String PDSA_PRODUCTUNITS = "productUnits";
305:
306: /**
307: * This is a version number of the product used to indicate changes in the
308: * algorithm.
309: */
310: final static String PDSA_PRODUCTVERSION = "productVersion";
311:
312: /**
313: * This is a type of product. For example, 'chl_oc4v4' and 'chl_oc3m' would
314: * both set this to 'chl'.
315: */
316: final static String PDSA_PRODUCTTYPE = "productType";
317:
318: /**
319: * This is a space delimetered string of additional units available for this
320: * product. For example, an sst product may set this string to "Kelvin
321: * Fahrenheit"
322: */
323: // final static String PDSA_ADDITIONALUNITS = "additionalUnits";
324: // The test file in the test-data folder has "otherUnits" as attribute
325: // instead of "additionalUnits"
326: final static String PDSA_ADDITIONALUNITS = "otherUnits";
327:
328: /**
329: * This new SDS attribute will give an indication of the status this
330: * product.
331: */
332: final static String PDSA_PRODUCTSTATUS = "productStatus";
333:
334: /** This is a suggested range of valid data. */
335: final static String PDSA_VALIDRANGE = "validRange";
336:
337: /**
338: * This is the geophysical value which will represent invalid data for the
339: * given product.
340: */
341: final static String PDSA_INVALID = "invalid";
342:
343: /** The type of scaling of the product. Currently, always Linear */
344: final static String PDSA_PRODUCTSCALING = "productScaling";
345:
346: /** The slope for product scaling. */
347: final static String PDSA_SCALINGSLOPE = "scalingSlope";
348:
349: /** The intercept for product scaling. */
350: final static String PDSA_SCALINGINTERCEPT = "scalingIntercept";
351:
352: /**
353: * This is a suggested function to apply to convert the data in the SDS into
354: * an image. A value of 1 indicates linear scaling; a value of 2 indicates
355: * log10 scaling.
356: */
357: final static String PDSA_BROWSEFUNC = "browseFunc";
358:
359: /**
360: * This is a suggested display range when converting the data in the SDS
361: * into an image. This may or may not be the same as validRange because in
362: * some cases (e.g. rrs_412), the data has been known to fall outside the
363: * range, but we wish to display the invalid data. This attribute is used by
364: * the APS program imgBrowse when creating quick-look browse images of
365: * different products.
366: */
367: final static String PDSA_BROWSERANGES = "browseRange";
368:
369: /** */
370: final static String[] PDSA_ATTRIB = new String[] {
371: PDSA_CREATESOFTWARE, PDSA_CREATETIME, PDSA_CREATEPLATFORM,
372: PDSA_PRODUCTNAME, PDSA_PRODUCTALGORITHM, PDSA_PRODUCTUNITS,
373: PDSA_PRODUCTVERSION, PDSA_PRODUCTTYPE,
374: PDSA_ADDITIONALUNITS, PDSA_PRODUCTSTATUS, PDSA_VALIDRANGE,
375: PDSA_INVALID, PDSA_PRODUCTSCALING, PDSA_SCALINGSLOPE,
376: PDSA_SCALINGINTERCEPT, PDSA_BROWSEFUNC, PDSA_BROWSERANGES };
377:
378: }
|