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.omm;
19
20 import java.util.List;
21
22 import org.orekit.data.DataContext;
23 import org.orekit.files.ccsds.ndm.NdmConstituent;
24 import org.orekit.files.ccsds.ndm.odm.OdmCommonMetadata;
25 import org.orekit.files.ccsds.ndm.odm.KeplerianElements;
26 import org.orekit.files.ccsds.ndm.odm.OdmHeader;
27 import org.orekit.files.ccsds.section.Segment;
28 import org.orekit.orbits.CartesianOrbit;
29 import org.orekit.orbits.KeplerianOrbit;
30 import org.orekit.propagation.SpacecraftState;
31 import org.orekit.propagation.analytical.tle.TLE;
32 import org.orekit.time.AbsoluteDate;
33 import org.orekit.time.TimeStamped;
34 import org.orekit.utils.IERSConventions;
35
36
37
38
39
40
41 public class Omm extends NdmConstituent<OdmHeader, Segment<OmmMetadata, OmmData>> implements TimeStamped {
42
43
44 public static final String ROOT = "omm";
45
46
47 public static final String FORMAT_VERSION_KEY = "CCSDS_OMM_VERS";
48
49
50
51
52
53
54
55 public Omm(final OdmHeader header, final List<Segment<OmmMetadata, OmmData>> segments,
56 final IERSConventions conventions, final DataContext dataContext) {
57 super(header, segments, conventions, dataContext);
58 }
59
60
61
62
63 public OmmMetadata getMetadata() {
64 return getSegments().get(0).getMetadata();
65 }
66
67
68
69
70 public OmmData getData() {
71 return getSegments().get(0).getData();
72 }
73
74
75 @Override
76 public AbsoluteDate getDate() {
77 return getData().getKeplerianElementsBlock().getEpoch();
78 }
79
80
81
82
83 public KeplerianOrbit generateKeplerianOrbit() {
84 return getData().getKeplerianElementsBlock().generateKeplerianOrbit(getMetadata().getFrame());
85 }
86
87
88
89
90
91 public SpacecraftState generateSpacecraftState() {
92 return new SpacecraftState(generateKeplerianOrbit()).withMass(getData().getMass());
93 }
94
95
96
97
98
99 public TLE generateTLE() {
100 final OdmCommonMetadata metadata = getMetadata();
101 final KeplerianElements kep = getData().getKeplerianElementsBlock();
102 final OmmTle tle = getData().getTLEBlock();
103 return new TLE(tle.getNoradID(), tle.getClassificationType(),
104 metadata.getLaunchYear(), metadata.getLaunchNumber(), metadata.getLaunchPiece(),
105 tle.getEphemerisType(), tle.getElementSetNumber(), kep.getEpoch(),
106 kep.getMeanMotion(), tle.getMeanMotionDot() / 2, tle.getMeanMotionDotDot() / 6,
107 kep.getE(), kep.getI(), kep.getPa(), kep.getRaan(),
108 kep.getAnomaly(), tle.getRevAtEpoch(),
109 tle.getBStar(), getDataContext().getTimeScales().getUTC());
110 }
111
112 }