1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.rinex.navigation.parsers.ionosphere;
18
19 import org.orekit.files.rinex.navigation.IonosphereBaseMessage;
20 import org.orekit.files.rinex.navigation.IonosphereNavICKlobucharMessage;
21 import org.orekit.files.rinex.navigation.RinexNavigation;
22 import org.orekit.files.rinex.navigation.parsers.ParseInfo;
23 import org.orekit.files.rinex.navigation.parsers.RecordLineParser;
24 import org.orekit.utils.units.Unit;
25
26
27
28
29
30 public class NavICKlobucharParser
31 extends RecordLineParser {
32
33
34 private final ParseInfo parseInfo;
35
36
37 private final IonosphereNavICKlobucharMessage message;
38
39
40
41
42
43 public NavICKlobucharParser(final ParseInfo parseInfo, final IonosphereNavICKlobucharMessage message) {
44 this.parseInfo = parseInfo;
45 this.message = message;
46 }
47
48
49 @Override
50 public void parseLine00() {
51 message.setTransmitTime(parseInfo.parseDate(message.getSystem()));
52 message.setIOD(parseInfo.parseDouble2(Unit.ONE));
53 }
54
55
56 @Override
57 public void parseLine01() {
58 message.setAlphaI(0, parseInfo.parseDouble1(IonosphereBaseMessage.S_PER_SC_N0));
59 message.setAlphaI(1, parseInfo.parseDouble2(IonosphereBaseMessage.S_PER_SC_N1));
60 message.setAlphaI(2, parseInfo.parseDouble3(IonosphereBaseMessage.S_PER_SC_N2));
61 message.setAlphaI(3, parseInfo.parseDouble4(IonosphereBaseMessage.S_PER_SC_N3));
62 }
63
64
65 @Override
66 public void parseLine02() {
67 message.setBetaI(0, parseInfo.parseDouble1(IonosphereBaseMessage.S_PER_SC_N0));
68 message.setBetaI(1, parseInfo.parseDouble2(IonosphereBaseMessage.S_PER_SC_N1));
69 message.setBetaI(2, parseInfo.parseDouble3(IonosphereBaseMessage.S_PER_SC_N2));
70 message.setBetaI(3, parseInfo.parseDouble4(IonosphereBaseMessage.S_PER_SC_N3));
71 }
72
73
74 @Override
75 public void parseLine03() {
76 message.setLonMin(parseInfo.parseDouble1(Unit.DEGREE));
77 message.setLonMax(parseInfo.parseDouble2(Unit.DEGREE));
78 message.setModipMin(parseInfo.parseDouble3(Unit.DEGREE));
79 message.setModipMax(parseInfo.parseDouble4(Unit.DEGREE));
80 parseInfo.closePendingRecord();
81 }
82
83
84 @Override
85 public void closeRecord(final RinexNavigation file) {
86 file.addNavICKlobucharMessage(message);
87 }
88
89 }