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