1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.odm.ocm;
19
20 import java.io.IOException;
21
22 import org.orekit.files.ccsds.definitions.TimeConverter;
23 import org.orekit.files.ccsds.definitions.Units;
24 import org.orekit.files.ccsds.section.AbstractWriter;
25 import org.orekit.files.ccsds.utils.generation.Generator;
26 import org.orekit.utils.units.Unit;
27
28
29
30
31
32 class OrbitDeterminationWriter extends AbstractWriter {
33
34
35 private final OrbitDetermination od;
36
37
38 private final TimeConverter timeConverter;
39
40
41
42
43
44 OrbitDeterminationWriter(final OrbitDetermination orbitDetermination,
45 final TimeConverter timeConverter) {
46 super(OcmDataSubStructureKey.od.name(), OcmDataSubStructureKey.OD.name());
47 this.od = orbitDetermination;
48 this.timeConverter = timeConverter;
49 }
50
51
52 @Override
53 protected void writeContent(final Generator generator) throws IOException {
54
55
56 generator.writeComments(od.getComments());
57
58
59 generator.writeEntry(OrbitDeterminationKey.OD_ID.name(), od.getId(), null, false);
60 generator.writeEntry(OrbitDeterminationKey.OD_PREV_ID.name(), od.getPrevId(), null, false);
61 if (od.getMethod() != null) {
62 final StringBuilder builder = new StringBuilder();
63 builder.append(od.getMethod().getName());
64 if (od.getMethod().getTool() != null) {
65 builder.append(':');
66 builder.append(od.getMethod().getTool());
67 }
68 generator.writeEntry(OrbitDeterminationKey.OD_METHOD.name(), builder.toString(), null, false);
69 }
70
71
72 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH.name(), timeConverter, od.getEpoch(), false, false);
73 generator.writeEntry(OrbitDeterminationKey.DAYS_SINCE_FIRST_OBS.name(), od.getTimeSinceFirstObservation(), Unit.DAY, false);
74 generator.writeEntry(OrbitDeterminationKey.DAYS_SINCE_LAST_OBS.name(), od.getTimeSinceLastObservation(), Unit.DAY, false);
75 generator.writeEntry(OrbitDeterminationKey.RECOMMENDED_OD_SPAN.name(), od.getRecommendedOdSpan(), Unit.DAY, false);
76 generator.writeEntry(OrbitDeterminationKey.ACTUAL_OD_SPAN.name(), od.getActualOdSpan(), Unit.DAY, false);
77
78
79 generator.writeEntry(OrbitDeterminationKey.OBS_AVAILABLE.name(), od.getObsAvailable(), false);
80 generator.writeEntry(OrbitDeterminationKey.OBS_USED.name(), od.getObsUsed(), false);
81 generator.writeEntry(OrbitDeterminationKey.TRACKS_AVAILABLE.name(), od.getTracksAvailable(), false);
82 generator.writeEntry(OrbitDeterminationKey.TRACKS_USED.name(), od.getTracksUsed(), false);
83 generator.writeEntry(OrbitDeterminationKey.MAXIMUM_OBS_GAP.name(), od.getMaximumObsGap(), Unit.DAY, false);
84
85
86 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH_EIGMAJ.name(), od.getEpochEigenMaj(), Unit.METRE, false);
87 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH_EIGINT.name(), od.getEpochEigenInt(), Unit.METRE, false);
88 generator.writeEntry(OrbitDeterminationKey.OD_EPOCH_EIGMIN.name(), od.getEpochEigenMin(), Unit.METRE, false);
89 generator.writeEntry(OrbitDeterminationKey.OD_MAX_PRED_EIGMAJ.name(), od.getMaxPredictedEigenMaj(), Unit.METRE, false);
90 generator.writeEntry(OrbitDeterminationKey.OD_MIN_PRED_EIGMIN.name(), od.getMinPredictedEigenMin(), Unit.METRE, false);
91 generator.writeEntry(OrbitDeterminationKey.OD_CONFIDENCE.name(), od.getConfidence(), Unit.PERCENT, false);
92 generator.writeEntry(OrbitDeterminationKey.GDOP.name(), od.getGdop(), Unit.ONE, false);
93
94
95 generator.writeEntry(OrbitDeterminationKey.SOLVE_N.name(), od.getSolveN(), false);
96 generator.writeEntry(OrbitDeterminationKey.SOLVE_STATES.name(), od.getSolveStates(), false);
97 generator.writeEntry(OrbitDeterminationKey.CONSIDER_N.name(), od.getConsiderN(), false);
98 generator.writeEntry(OrbitDeterminationKey.CONSIDER_PARAMS.name(), od.getConsiderParameters(), false);
99 generator.writeEntry(OrbitDeterminationKey.SEDR.name(), od.getSedr(), Units.W_PER_KG, false);
100 generator.writeEntry(OrbitDeterminationKey.SENSORS_N.name(), od.getSensorsN(), false);
101 generator.writeEntry(OrbitDeterminationKey.SENSORS.name(), od.getSensors(), false);
102
103
104 generator.writeEntry(OrbitDeterminationKey.WEIGHTED_RMS.name(), od.getWeightedRms(), Unit.ONE, false);
105 generator.writeEntry(OrbitDeterminationKey.DATA_TYPES.name(), od.getDataTypes(), false);
106
107 }
108
109 }