1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.rinex.navigation;
18
19 import java.util.ArrayList;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24
25 import org.orekit.files.rinex.RinexFile;
26 import org.orekit.gnss.SatelliteSystem;
27 import org.orekit.models.earth.ionosphere.KlobucharIonoModel;
28 import org.orekit.models.earth.ionosphere.NeQuickModel;
29 import org.orekit.propagation.analytical.gnss.data.BeidouCivilianNavigationMessage;
30 import org.orekit.propagation.analytical.gnss.data.BeidouLegacyNavigationMessage;
31 import org.orekit.propagation.analytical.gnss.data.GLONASSNavigationMessage;
32 import org.orekit.propagation.analytical.gnss.data.GPSCivilianNavigationMessage;
33 import org.orekit.propagation.analytical.gnss.data.GPSLegacyNavigationMessage;
34 import org.orekit.propagation.analytical.gnss.data.GalileoNavigationMessage;
35 import org.orekit.propagation.analytical.gnss.data.IRNSSNavigationMessage;
36 import org.orekit.propagation.analytical.gnss.data.QZSSCivilianNavigationMessage;
37 import org.orekit.propagation.analytical.gnss.data.QZSSLegacyNavigationMessage;
38 import org.orekit.propagation.analytical.gnss.data.SBASNavigationMessage;
39
40
41
42
43
44
45
46 public class RinexNavigation extends RinexFile<RinexNavigationHeader> {
47
48
49 private double[] klobucharAlpha;
50
51
52 private double[] klobucharBeta;
53
54
55 private double[] neQuickAlpha;
56
57
58 private final Map<String, List<GPSLegacyNavigationMessage>> gpsLegacyData;
59
60
61 private final Map<String, List<GPSCivilianNavigationMessage>> gpsCivilianData;
62
63
64 private final Map<String, List<GalileoNavigationMessage>> galileoData;
65
66
67 private final Map<String, List<BeidouLegacyNavigationMessage>> beidouLegacyData;
68
69
70 private final Map<String, List<BeidouCivilianNavigationMessage>> beidouCivilianData;
71
72
73 private final Map<String, List<QZSSLegacyNavigationMessage>> qzssLegacyData;
74
75
76 private final Map<String, List<QZSSCivilianNavigationMessage>> qzssCivilianData;
77
78
79 private final Map<String, List<IRNSSNavigationMessage>> irnssData;
80
81
82 private final Map<String, List<GLONASSNavigationMessage>> glonassData;
83
84
85 private final Map<String, List<SBASNavigationMessage>> sbasData;
86
87
88
89
90 private final List<SystemTimeOffsetMessage> systemTimeOffsets;
91
92
93
94
95 private final List<EarthOrientationParameterMessage> eops;
96
97
98
99
100 private final List<IonosphereKlobucharMessage> klobucharMessages;
101
102
103
104
105 private final List<IonosphereNequickGMessage> nequickGMessages;
106
107
108
109
110 private final List<IonosphereBDGIMMessage> bdgimMessages;
111
112
113 public RinexNavigation() {
114 super(new RinexNavigationHeader());
115 this.gpsLegacyData = new HashMap<>();
116 this.gpsCivilianData = new HashMap<>();
117 this.galileoData = new HashMap<>();
118 this.beidouLegacyData = new HashMap<>();
119 this.beidouCivilianData = new HashMap<>();
120 this.qzssLegacyData = new HashMap<>();
121 this.qzssCivilianData = new HashMap<>();
122 this.irnssData = new HashMap<>();
123 this.glonassData = new HashMap<>();
124 this.sbasData = new HashMap<>();
125 this.systemTimeOffsets = new ArrayList<>();
126 this.eops = new ArrayList<>();
127 this.klobucharMessages = new ArrayList<>();
128 this.nequickGMessages = new ArrayList<>();
129 this.bdgimMessages = new ArrayList<>();
130 }
131
132
133
134
135
136
137
138
139 public double[] getKlobucharAlpha() {
140 return klobucharAlpha.clone();
141 }
142
143
144
145
146
147 public void setKlobucharAlpha(final double[] klobucharAlpha) {
148 this.klobucharAlpha = klobucharAlpha.clone();
149 }
150
151
152
153
154
155
156
157
158 public double[] getKlobucharBeta() {
159 return klobucharBeta.clone();
160 }
161
162
163
164
165
166 public void setKlobucharBeta(final double[] klobucharBeta) {
167 this.klobucharBeta = klobucharBeta.clone();
168 }
169
170
171
172
173
174
175
176
177 public double[] getNeQuickAlpha() {
178 return neQuickAlpha.clone();
179 }
180
181
182
183
184
185 public void setNeQuickAlpha(final double[] neQuickAlpha) {
186 this.neQuickAlpha = neQuickAlpha.clone();
187 }
188
189
190
191
192
193
194 public Map<String, List<GPSLegacyNavigationMessage>> getGPSLegacyNavigationMessages() {
195 return Collections.unmodifiableMap(gpsLegacyData);
196 }
197
198
199
200
201
202
203
204 public List<GPSLegacyNavigationMessage> getGPSLegacyNavigationMessages(final String satId) {
205 return Collections.unmodifiableList(gpsLegacyData.get(satId));
206 }
207
208
209
210
211
212
213 public void addGPSLegacyNavigationMessage(final GPSLegacyNavigationMessage message) {
214 final int gpsPRN = message.getPRN();
215 final String prnString = gpsPRN < 10 ? "0" + String.valueOf(gpsPRN) : String.valueOf(gpsPRN);
216 final String satId = SatelliteSystem.GPS.getKey() + prnString;
217 gpsLegacyData.putIfAbsent(satId, new ArrayList<>());
218 gpsLegacyData.get(satId).add(message);
219 }
220
221
222
223
224
225
226 public Map<String, List<GPSCivilianNavigationMessage>> getGPSCivilianNavigationMessages() {
227 return Collections.unmodifiableMap(gpsCivilianData);
228 }
229
230
231
232
233
234
235
236 public List<GPSCivilianNavigationMessage> getGPSCivilianNavigationMessages(final String satId) {
237 return Collections.unmodifiableList(gpsCivilianData.get(satId));
238 }
239
240
241
242
243
244
245 public void addGPSLegacyNavigationMessage(final GPSCivilianNavigationMessage message) {
246 final int gpsPRN = message.getPRN();
247 final String prnString = gpsPRN < 10 ? "0" + String.valueOf(gpsPRN) : String.valueOf(gpsPRN);
248 final String satId = SatelliteSystem.GPS.getKey() + prnString;
249 gpsCivilianData.putIfAbsent(satId, new ArrayList<>());
250 gpsCivilianData.get(satId).add(message);
251 }
252
253
254
255
256
257 public Map<String, List<GalileoNavigationMessage>> getGalileoNavigationMessages() {
258 return Collections.unmodifiableMap(galileoData);
259 }
260
261
262
263
264
265
266 public List<GalileoNavigationMessage> getGalileoNavigationMessages(final String satId) {
267 return Collections.unmodifiableList(galileoData.get(satId));
268 }
269
270
271
272
273
274 public void addGalileoNavigationMessage(final GalileoNavigationMessage message) {
275 final int galPRN = message.getPRN();
276 final String prnString = galPRN < 10 ? "0" + String.valueOf(galPRN) : String.valueOf(galPRN);
277 final String satId = SatelliteSystem.GALILEO.getKey() + prnString;
278 galileoData.putIfAbsent(satId, new ArrayList<>());
279 galileoData.get(satId).add(message);
280 }
281
282
283
284
285
286
287 public Map<String, List<BeidouLegacyNavigationMessage>> getBeidouLegacyNavigationMessages() {
288 return Collections.unmodifiableMap(beidouLegacyData);
289 }
290
291
292
293
294
295
296
297 public List<BeidouLegacyNavigationMessage> getBeidouLegacyNavigationMessages(final String satId) {
298 return Collections.unmodifiableList(beidouLegacyData.get(satId));
299 }
300
301
302
303
304
305
306 public void addBeidouLegacyNavigationMessage(final BeidouLegacyNavigationMessage message) {
307 final int bdtPRN = message.getPRN();
308 final String prnString = bdtPRN < 10 ? "0" + String.valueOf(bdtPRN) : String.valueOf(bdtPRN);
309 final String satId = SatelliteSystem.BEIDOU.getKey() + prnString;
310 beidouLegacyData.putIfAbsent(satId, new ArrayList<>());
311 beidouLegacyData.get(satId).add(message);
312 }
313
314
315
316
317
318
319 public Map<String, List<BeidouCivilianNavigationMessage>> getBeidouCivilianNavigationMessages() {
320 return Collections.unmodifiableMap(beidouCivilianData);
321 }
322
323
324
325
326
327
328
329 public List<BeidouCivilianNavigationMessage> getBeidouCivilianNavigationMessages(final String satId) {
330 return Collections.unmodifiableList(beidouCivilianData.get(satId));
331 }
332
333
334
335
336
337
338 public void addBeidouCivilianNavigationMessage(final BeidouCivilianNavigationMessage message) {
339 final int bdtPRN = message.getPRN();
340 final String prnString = bdtPRN < 10 ? "0" + String.valueOf(bdtPRN) : String.valueOf(bdtPRN);
341 final String satId = SatelliteSystem.BEIDOU.getKey() + prnString;
342 beidouCivilianData.putIfAbsent(satId, new ArrayList<>());
343 beidouCivilianData.get(satId).add(message);
344 }
345
346
347
348
349
350
351 public Map<String, List<QZSSLegacyNavigationMessage>> getQZSSLegacyNavigationMessages() {
352 return Collections.unmodifiableMap(qzssLegacyData);
353 }
354
355
356
357
358
359
360
361 public List<QZSSLegacyNavigationMessage> getQZSSLegacyNavigationMessages(final String satId) {
362 return Collections.unmodifiableList(qzssLegacyData.get(satId));
363 }
364
365
366
367
368
369
370 public void addQZSSLegacyNavigationMessage(final QZSSLegacyNavigationMessage message) {
371 final int qzsPRN = message.getPRN();
372 final String prnString = qzsPRN < 10 ? "0" + String.valueOf(qzsPRN) : String.valueOf(qzsPRN);
373 final String satId = SatelliteSystem.QZSS.getKey() + prnString;
374 qzssLegacyData.putIfAbsent(satId, new ArrayList<>());
375 qzssLegacyData.get(satId).add(message);
376 }
377
378
379
380
381
382
383 public Map<String, List<QZSSCivilianNavigationMessage>> getQZSSCivilianNavigationMessages() {
384 return Collections.unmodifiableMap(qzssCivilianData);
385 }
386
387
388
389
390
391
392
393 public List<QZSSCivilianNavigationMessage> getQZSSCivilianNavigationMessages(final String satId) {
394 return Collections.unmodifiableList(qzssCivilianData.get(satId));
395 }
396
397
398
399
400
401
402 public void addQZSSCivilianNavigationMessage(final QZSSCivilianNavigationMessage message) {
403 final int qzsPRN = message.getPRN();
404 final String prnString = qzsPRN < 10 ? "0" + String.valueOf(qzsPRN) : String.valueOf(qzsPRN);
405 final String satId = SatelliteSystem.QZSS.getKey() + prnString;
406 qzssCivilianData.putIfAbsent(satId, new ArrayList<>());
407 qzssCivilianData.get(satId).add(message);
408 }
409
410
411
412
413
414 public Map<String, List<IRNSSNavigationMessage>> getIRNSSNavigationMessages() {
415 return Collections.unmodifiableMap(irnssData);
416 }
417
418
419
420
421
422
423 public List<IRNSSNavigationMessage> getIRNSSNavigationMessages(final String satId) {
424 return Collections.unmodifiableList(irnssData.get(satId));
425 }
426
427
428
429
430
431 public void addIRNSSNavigationMessage(final IRNSSNavigationMessage message) {
432 final int irsPRN = message.getPRN();
433 final String prnString = irsPRN < 10 ? "0" + String.valueOf(irsPRN) : String.valueOf(irsPRN);
434 final String satId = SatelliteSystem.IRNSS.getKey() + prnString;
435 irnssData.putIfAbsent(satId, new ArrayList<>());
436 irnssData.get(satId).add(message);
437 }
438
439
440
441
442
443 public Map<String, List<GLONASSNavigationMessage>> getGlonassNavigationMessages() {
444 return Collections.unmodifiableMap(glonassData);
445 }
446
447
448
449
450
451
452 public List<GLONASSNavigationMessage> getGlonassNavigationMessages(final String satId) {
453 return Collections.unmodifiableList(glonassData.get(satId));
454 }
455
456
457
458
459
460 public void addGlonassNavigationMessage(final GLONASSNavigationMessage message) {
461 final int gloPRN = message.getPRN();
462 final String prnString = gloPRN < 10 ? "0" + String.valueOf(gloPRN) : String.valueOf(gloPRN);
463 final String satId = SatelliteSystem.GLONASS.getKey() + prnString;
464 glonassData.putIfAbsent(satId, new ArrayList<>());
465 glonassData.get(satId).add(message);
466 }
467
468
469
470
471
472 public Map<String, List<SBASNavigationMessage>> getSBASNavigationMessages() {
473 return Collections.unmodifiableMap(sbasData);
474 }
475
476
477
478
479
480
481 public List<SBASNavigationMessage> getSBASNavigationMessages(final String satId) {
482 return Collections.unmodifiableList(sbasData.get(satId));
483 }
484
485
486
487
488
489 public void addSBASNavigationMessage(final SBASNavigationMessage message) {
490 final int sbsPRN = message.getPRN();
491 final String prnString = sbsPRN < 10 ? "0" + String.valueOf(sbsPRN) : String.valueOf(sbsPRN);
492 final String satId = SatelliteSystem.SBAS.getKey() + prnString;
493 sbasData.putIfAbsent(satId, new ArrayList<>());
494 sbasData.get(satId).add(message);
495 }
496
497
498
499
500
501
502 public List<SystemTimeOffsetMessage> getSystemTimeOffsets() {
503 return Collections.unmodifiableList(systemTimeOffsets);
504 }
505
506
507
508
509
510
511 public void addSystemTimeOffset(final SystemTimeOffsetMessage systemTimeOffset) {
512 systemTimeOffsets.add(systemTimeOffset);
513 }
514
515
516
517
518
519
520 public List<EarthOrientationParameterMessage> getEarthOrientationParameters() {
521 return Collections.unmodifiableList(eops);
522 }
523
524
525
526
527
528
529 public void addEarthOrientationParameter(final EarthOrientationParameterMessage eop) {
530 eops.add(eop);
531 }
532
533
534
535
536
537
538 public List<IonosphereKlobucharMessage> getKlobucharMessages() {
539 return Collections.unmodifiableList(klobucharMessages);
540 }
541
542
543
544
545
546
547 public void addKlobucharMessage(final IonosphereKlobucharMessage klobuchar) {
548 klobucharMessages.add(klobuchar);
549 }
550
551
552
553
554
555
556 public List<IonosphereNequickGMessage> getNequickGMessages() {
557 return Collections.unmodifiableList(nequickGMessages);
558 }
559
560
561
562
563
564
565 public void addNequickGMessage(final IonosphereNequickGMessage nequickG) {
566 nequickGMessages.add(nequickG);
567 }
568
569
570
571
572
573
574 public List<IonosphereBDGIMMessage> getBDGIMMessages() {
575 return Collections.unmodifiableList(bdgimMessages);
576 }
577
578
579
580
581
582
583 public void addBDGIMMessage(final IonosphereBDGIMMessage bdgim) {
584 bdgimMessages.add(bdgim);
585 }
586
587 }