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