1 package nom.tam.fits.header.extra;
2
3 /*-
4 * #%L
5 * nom.tam.fits
6 * %%
7 * Copyright (C) 1996 - 2024 nom-tam-fits
8 * %%
9 * This is free and unencumbered software released into the public domain.
10 *
11 * Anyone is free to copy, modify, publish, use, compile, sell, or
12 * distribute this software, either in source code form or as a compiled
13 * binary, for any purpose, commercial or non-commercial, and by any
14 * means.
15 *
16 * In jurisdictions that recognize copyright laws, the author or authors
17 * of this software dedicate any and all copyright interest in the
18 * software to the public domain. We make this dedication for the benefit
19 * of the public at large and to the detriment of our heirs and
20 * successors. We intend this dedication to be an overt act of
21 * relinquishment in perpetuity of all present and future rights to this
22 * software under copyright law.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
28 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
29 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
30 * OTHER DEALINGS IN THE SOFTWARE.
31 * #L%
32 */
33
34 import nom.tam.fits.header.FitsKey;
35 import nom.tam.fits.header.IFitsHeader;
36
37 /**
38 * <p>
39 * A Set of commonly used keywords in the amateur astronomy community.
40 * </p>
41 *
42 * @author John Murphy and Attila Kovacs
43 *
44 * @since 1.20.1
45 */
46 public enum CommonExt implements IFitsHeader {
47
48 /** Ambient air temperature in degrees Celsius */
49 AMBTEMP(VALUE.REAL, "[C] ambient air temperature"),
50
51 /** Synonym of {@link #OBJCTROT}. */
52 ANGLE(VALUE.REAL, HDU.IMAGE, "[deg] image rotation angle"),
53
54 /** X axis binning factor. Synonym for {@link SBFitsExt#XBINNING} */
55 CCDXBIN(VALUE.INTEGER, "X axis binning factor"),
56
57 /** Y axis binning factor. Synonym for {@link SBFitsExt#YBINNING} */
58 CCDYBIN(VALUE.INTEGER, "Y axis binning factor"),
59
60 /** Cloud cover as percentage */
61 CLOUDCVR(VALUE.REAL, "[%] cloud cover"),
62
63 /** Local time of observation (ISO timestamp), e.g. "2017-01-03T02:41:24" or "2024-02-24T22:23:33.054" */
64 DATE_LOC("DATE-LOC", VALUE.STRING, "Local time of observation"),
65
66 /** Dew point in degrees Celsius. */
67 DEWPOINT(VALUE.REAL, "[C] dew point"),
68
69 /** Whether or not the image is flipped */
70 FLIPPED(VALUE.LOGICAL, HDU.IMAGE, "is image flipped"),
71
72 /** Name of focuser. Synonym of {@link #FOCUSER} */
73 FOCNAME(VALUE.STRING, "focuser name"),
74
75 /** Focuser position in steps. Usually an integer, but not always. Synonymous to {@link MaxImDLExt#FOCUSPOS} */
76 FOCPOS(VALUE.REAL, "[ct] focuser position in steps"),
77
78 /** Focal ratio */
79 FOCRATIO(VALUE.REAL, "focal ratio"),
80
81 /** Name of focuser */
82 FOCUSER(VALUE.STRING, "focuser name"),
83
84 /** Focus temperature in degrees Celsius. Synonymous to {@link MaxImDLExt#FOCUSTEM}. */
85 FOCTEMP(VALUE.REAL, "[C] focuser temperature readout"),
86
87 /** Filter wheel name */
88 FWHEEL(VALUE.STRING, "filter wheel name"),
89
90 /**
91 * Camera gain / amplification. Often used the same as {@link #GAINRAW}. There may be many different conventions on
92 * using this keyword. For example it may represent a multiplicative gain factor or gain defined as decibels, or
93 * strings such as 'HI'/'LO', or even as a boolean T/F. Therefore, this definition does not restrict the type of
94 * value this keyword can be used with. It is up to the user to ensure they follow the convention that makes most
95 * sense to their application, and for the tools they intend to use.
96 */
97 GAIN(VALUE.ANY, "camera gain"),
98
99 /** Synonym of {@link MaxImDLExt#EGAIN} */
100 GAINADU(VALUE.REAL, "[ct/adu] amplifier gain electrons / ADU"),
101
102 /** Amplifier gain. Synonym of {@link MaxImDLExt#ISOSPEED} */
103 GAINRAW(VALUE.REAL, "gain factor"),
104
105 /** Relative humidity as percentage */
106 HUMIDITY(VALUE.REAL, "[%] relative humidity"),
107
108 /** Image rotation angle in degrees. **/
109 OBJCTROT(VALUE.REAL, HDU.IMAGE, "[deg] image rotation angle"),
110
111 /** Camera offset setting. Very common since CMOS cameras became popular */
112 OFFSET(VALUE.INTEGER, "camera offset setting"),
113
114 /**
115 * Image scale in arcsec/pixel. Redundant with {@link nom.tam.fits.header.Standard#CDELTn}.
116 */
117 PIXSCALE(VALUE.REAL, HDU.IMAGE, "[arcsec/pixel] image scale"),
118
119 /** Air pressure in hPa. */
120 PRESSURE(VALUE.REAL, "[hPa] air pressure"),
121
122 /**
123 * Image scale in arcsec / pixel. Synonym of {@link #PIXSCALE}, and redundant with
124 * {@link nom.tam.fits.header.Standard#CDELTn}.
125 */
126 SCALE(VALUE.REAL, HDU.IMAGE, "[arcsec/pixel] image scale"),
127
128 /** Elevation of observing site above sea level in meters */
129 SITEELEV(VALUE.REAL, "[m] elevation at observing site"),
130
131 /** Observatory site, e.g. "Maunakea" */
132 SITENAME(VALUE.STRING, "observatory site"),
133
134 /** Wind direction clockwise from North [0:360] */
135 WINDDIR(VALUE.REAL, "[deg] wind direction: 0=N, 90=E, 180=S, 270=W"),
136
137 /** Average wind speed in km/h */
138 WINDSPD(VALUE.REAL, "[km/h] wind speed");
139
140 private final FitsKey key;
141
142 CommonExt(VALUE valueType, String comment) {
143 this(null, valueType, comment);
144 }
145
146 CommonExt(VALUE valueType, HDU hduType, String comment) {
147 this(null, valueType, hduType, comment);
148 }
149
150 CommonExt(String key, VALUE valueType, String comment) {
151 this(key, valueType, HDU.ANY, comment);
152 }
153
154 CommonExt(String key, VALUE valueType, HDU hduType, String comment) {
155 this.key = new FitsKey(key == null ? name() : key, SOURCE.UNKNOWN, hduType, valueType, comment);
156 }
157
158 @Override
159 public final FitsKey impl() {
160 return key;
161 }
162
163 }