1 /* Copyright 2022-2025 Thales Alenia Space
2 * Licensed to CS GROUP (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * CS licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.orekit.files.rinex.section;
18
19 /** Labels for Rinex files.
20 * @author Luc Maisonobe
21 * @since 12.0
22 */
23 public enum RinexLabels {
24
25 /** Version, file type and satellite system. */
26 VERSION("RINEX VERSION / TYPE"),
27
28 /** Generating program and emiting agency. */
29 PROGRAM("PGM / RUN BY / DATE"),
30
31 /** Comments. */
32 COMMENT("COMMENT"),
33
34 /** Marker name. */
35 MARKER_NAME("MARKER NAME"),
36
37 /** Marker number. */
38 MARKER_NUMBER("MARKER NUMBER"),
39
40 /** Marker type. */
41 MARKER_TYPE("MARKER TYPE"),
42
43 /** Observer agency. */
44 OBSERVER_AGENCY("OBSERVER / AGENCY"),
45
46 /** Receiver number, type and version. */
47 REC_NB_TYPE_VERS("REC # / TYPE / VERS"),
48
49 /** Antenna number and type. */
50 ANT_NB_TYPE("ANT # / TYPE"),
51
52 /** Approximative position. */
53 APPROX_POSITION_XYZ("APPROX POSITION XYZ"),
54
55 /** Antenna reference point. */
56 ANTENNA_DELTA_H_E_N("ANTENNA: DELTA H/E/N"),
57
58 /** Antenna reference point. */
59 ANTENNA_DELTA_X_Y_Z("ANTENNA: DELTA X/Y/Z"),
60
61 /** Antenna phase center. */
62 ANTENNA_PHASE_CENTER("ANTENNA: PHASECENTER"),
63
64 /** Antenna bore sight. */
65 ANTENNA_B_SIGHT_XYZ("ANTENNA: B.SIGHT XYZ"),
66
67 /** Antenna zero direction. */
68 ANTENNA_ZERODIR_AZI("ANTENNA: ZERODIR AZI"),
69
70 /** Antenna zero direction. */
71 ANTENNA_ZERODIR_XYZ("ANTENNA: ZERODIR XYZ"),
72
73 /** Wavelength factors. */
74 WAVELENGTH_FACT_L1_2("WAVELENGTH FACT L1/2"),
75
76 /** Observations scale factor. */
77 OBS_SCALE_FACTOR("OBS SCALE FACTOR"),
78
79 /** Center of mass. */
80 CENTER_OF_MASS_XYZ("CENTER OF MASS: XYZ"),
81
82 /** DOI. */
83 DOI("DOI"),
84
85 /** Llicense. */
86 LICENSE("LICENSE OF USE"),
87
88 /** Station information.*/
89 STATION_INFORMATION("STATION INFORMATION"),
90
91 /** Number and types of observations. */
92 NB_TYPES_OF_OBSERV("# / TYPES OF OBSERV"),
93
94 /** Number and types of observations. */
95 SYS_NB_TYPES_OF_OBSERV("SYS / # / OBS TYPES"),
96
97 /** Unit of signal strength. */
98 SIGNAL_STRENGTH_UNIT("SIGNAL STRENGTH UNIT"),
99
100 /** Observation interval. */
101 INTERVAL("INTERVAL"),
102
103 /** Time of first observation. */
104 TIME_OF_FIRST_OBS("TIME OF FIRST OBS"),
105
106 /** Time of last observation. */
107 TIME_OF_LAST_OBS("TIME OF LAST OBS"),
108
109 /** Indicator of receiver clock offset application. */
110 RCV_CLOCK_OFFS_APPL("RCV CLOCK OFFS APPL"),
111
112 /** Differential code bias corrections. */
113 SYS_DCBS_APPLIED("SYS / DCBS APPLIED"),
114
115 /** Phase center variations corrections. */
116 SYS_PCVS_APPLIED("SYS / PCVS APPLIED"),
117
118 /** Scale factor. */
119 SYS_SCALE_FACTOR("SYS / SCALE FACTOR"),
120
121 /** Phase shift. */
122 SYS_PHASE_SHIFT("SYS / PHASE SHIFT", "SYS / PHASE SHIFTS"),
123
124 /** GLONASS slot and frequency number. */
125 GLONASS_SLOT_FRQ_NB("GLONASS SLOT / FRQ #"),
126
127 /** GLONASS phase bias corrections. */
128 GLONASS_COD_PHS_BIS("GLONASS COD/PHS/BIS"),
129
130 /** Leap seconds. */
131 LEAP_SECONDS("LEAP SECONDS"),
132
133 /** Number of satellites. */
134 NB_OF_SATELLITES("# OF SATELLITES"),
135
136 /** PRN and number of observations . */
137 PRN_NB_OF_OBS("PRN / # OF OBS"),
138
139 /** End of header. */
140 END("END OF HEADER");
141
142 /** Labels. */
143 private final String[] labels;
144
145 /** Simple constructor.
146 * <p>
147 * There may be several labels allowed, as some receiver generate files with typos…
148 * Only the first label is considered official
149 * </p>
150 * @param labels labels
151 */
152 RinexLabels(final String... labels) {
153 this.labels = labels.clone();
154 }
155
156 /** Check if label matches.
157 * @param label label to check
158 * @return true if label matches one of the allowed label
159 */
160 public boolean matches(final String label) {
161 for (String allowed : labels) {
162 if (allowed.equals(label)) {
163 return true;
164 }
165 }
166 return false;
167 }
168
169 /** Get the first label.
170 * @return first label
171 */
172 public String getLabel() {
173 return labels[0];
174 }
175
176 }