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.IonosphereKlobucharMessage;
21 import org.orekit.files.rinex.navigation.RegionCode;
22 import org.orekit.files.rinex.navigation.RinexNavigation;
23 import org.orekit.files.rinex.navigation.parsers.ParseInfo;
24 import org.orekit.files.rinex.navigation.parsers.RecordLineParser;
25
26
27
28
29
30 public class KlobucharParser extends RecordLineParser {
31
32
33 private final ParseInfo parseInfo;
34
35
36 private final IonosphereKlobucharMessage message;
37
38
39
40
41
42 public KlobucharParser(final ParseInfo parseInfo, final IonosphereKlobucharMessage message) {
43 this.parseInfo = parseInfo;
44 this.message = message;
45 }
46
47
48 @Override
49 public void parseLine00() {
50 message.setTransmitTime(parseInfo.parseDate(message.getSystem()));
51 message.setAlphaI(0, parseInfo.parseDouble2(IonosphereBaseMessage.S_PER_SC_N0));
52 message.setAlphaI(1, parseInfo.parseDouble3(IonosphereBaseMessage.S_PER_SC_N1));
53 message.setAlphaI(2, parseInfo.parseDouble4(IonosphereBaseMessage.S_PER_SC_N2));
54 }
55
56
57 @Override
58 public void parseLine01() {
59 message.setAlphaI(3, parseInfo.parseDouble1(IonosphereBaseMessage.S_PER_SC_N3));
60 message.setBetaI(0, parseInfo.parseDouble2(IonosphereBaseMessage.S_PER_SC_N0));
61 message.setBetaI(1, parseInfo.parseDouble3(IonosphereBaseMessage.S_PER_SC_N1));
62 message.setBetaI(2, parseInfo.parseDouble4(IonosphereBaseMessage.S_PER_SC_N2));
63 }
64
65
66 @Override
67 public void parseLine02() {
68 message.setBetaI(3, parseInfo.parseDouble1(IonosphereBaseMessage.S_PER_SC_N3));
69 final RegionCode regionCode;
70 if (parseInfo.getHeader().getFormatVersion() <= 4.01) {
71
72 regionCode = RegionCode.parseRegionCode(parseInfo.parseInt2());
73 } else {
74
75 regionCode = RegionCode.parseRegionCode(message.getNavigationMessageSubType());
76 }
77 message.setRegionCode(regionCode);
78 parseInfo.closePendingRecord();
79 }
80
81
82 @Override
83 public void closeRecord(final RinexNavigation file) {
84 file.addKlobucharMessage(message);
85 }
86
87 }