1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.cdm;
18
19 import java.net.URISyntaxException;
20 import java.util.ArrayList;
21 import java.util.function.Function;
22
23 import org.hamcrest.MatcherAssert;
24 import org.hamcrest.Matchers;
25 import org.hipparchus.util.FastMath;
26 import org.junit.jupiter.api.Assertions;
27 import org.junit.jupiter.api.BeforeEach;
28 import org.junit.jupiter.api.Test;
29 import org.orekit.Utils;
30 import org.orekit.bodies.CelestialBodyFactory;
31 import org.orekit.data.DataContext;
32 import org.orekit.data.DataSource;
33 import org.orekit.errors.OrekitException;
34 import org.orekit.errors.OrekitMessages;
35 import org.orekit.files.ccsds.definitions.BodyFacade;
36 import org.orekit.files.ccsds.definitions.CcsdsFrameMapper;
37 import org.orekit.files.ccsds.definitions.CelestialBodyFrame;
38 import org.orekit.files.ccsds.definitions.FrameFacade;
39 import org.orekit.files.ccsds.definitions.OrekitCcsdsFrameMapper;
40 import org.orekit.files.ccsds.definitions.PocMethodType;
41 import org.orekit.files.ccsds.definitions.YesNoUnknown;
42 import org.orekit.files.ccsds.ndm.ParserBuilder;
43 import org.orekit.files.ccsds.ndm.odm.ocm.ObjectType;
44 import org.orekit.frames.Frame;
45 import org.orekit.frames.FramesFactory;
46 import org.orekit.frames.Transform;
47 import org.orekit.time.AbsoluteDate;
48 import org.orekit.time.TimeOffset;
49 import org.orekit.time.TimeScalesFactory;
50 import org.orekit.utils.IERSConventions;
51
52 public class CdmParserTest {
53
54 private static final double DISTANCE_PRECISION = 1e-8;
55 private static final double DOUBLE_PRECISION = 1e-8;
56 private static final double DERIVATION_PRECISION = 1e-12;
57 private static final double COVARIANCE_DIAG_PRECISION = 1e-10;
58 private static final double COVARIANCE_PRECISION = 1e-8;
59
60 @BeforeEach
61 public void setUp() {
62 Utils.setDataRoot("regular-data");
63 }
64
65 @Test
66 public void testParseCDM1() {
67
68
69 final String ex = "/ccsds/cdm/CDMExample1.txt";
70
71
72 final CdmParser parser = new ParserBuilder().buildCdmParser();
73
74 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
75
76
77 final Cdm file = parser.parseMessage(source);
78
79
80 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
81 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
82
83
84 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 1.0e-10);
85 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
86 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
87 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
88 Assertions.assertEquals("201113719185", file.getHeader().getMessageId());
89
90
91
92 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
93 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
94 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
95
96
97 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
98 Assertions.assertEquals("12345", file.getMetadataObject1().getObjectDesignator());
99 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
100 Assertions.assertEquals("SATELLITE A", file.getMetadataObject1().getObjectName());
101 Assertions.assertEquals("1997−030E", file.getMetadataObject1().getInternationalDes());
102 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
103 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
104 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
105 Assertions.assertEquals(CelestialBodyFrame.EME2000,
106 file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
107 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
108
109
110
111 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(),
112 DISTANCE_PRECISION);
113 Assertions.assertEquals(2244.654904e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getY(),
114 DISTANCE_PRECISION);
115 Assertions.assertEquals(6281.497978e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(),
116 DISTANCE_PRECISION);
117 Assertions.assertEquals(4.418769571e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(),
118 DERIVATION_PRECISION);
119 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(),
120 DERIVATION_PRECISION);
121 Assertions.assertEquals(-3.526774282e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(),
122 DERIVATION_PRECISION);
123
124 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
125 COVARIANCE_DIAG_PRECISION);
126 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
127 COVARIANCE_DIAG_PRECISION);
128 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
129 COVARIANCE_DIAG_PRECISION);
130 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
131 COVARIANCE_DIAG_PRECISION);
132 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
133 COVARIANCE_DIAG_PRECISION);
134 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
135 COVARIANCE_DIAG_PRECISION);
136
137 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(),
138 COVARIANCE_PRECISION);
139 Assertions.assertEquals(-5.476, file.getDataObject1().getRTNCovarianceBlock().getCrdott(),
140 COVARIANCE_PRECISION);
141 Assertions.assertEquals(8.626e-4, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(),
142 COVARIANCE_PRECISION);
143 Assertions.assertEquals(5.744e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(),
144 COVARIANCE_PRECISION);
145
146 Assertions.assertEquals(-1.006e-2, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(),
147 COVARIANCE_PRECISION);
148 Assertions.assertEquals(4.041e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdott(),
149 COVARIANCE_PRECISION);
150 Assertions.assertEquals(-1.359e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(),
151 COVARIANCE_PRECISION);
152 Assertions.assertEquals(-1.502e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(),
153 COVARIANCE_PRECISION);
154 Assertions.assertEquals(1.049e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(),
155 COVARIANCE_PRECISION);
156
157 Assertions.assertEquals(1.053e-3, file.getDataObject1().getRTNCovarianceBlock().getCndotr(),
158 COVARIANCE_PRECISION);
159 Assertions.assertEquals(-3.412e-3, file.getDataObject1().getRTNCovarianceBlock().getCndott(),
160 COVARIANCE_PRECISION);
161 Assertions.assertEquals(1.213e-2, file.getDataObject1().getRTNCovarianceBlock().getCndotn(),
162 COVARIANCE_PRECISION);
163 Assertions.assertEquals(-3.004e-6, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(),
164 COVARIANCE_PRECISION);
165 Assertions.assertEquals(-1.091e-6, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(),
166 COVARIANCE_PRECISION);
167 Assertions.assertEquals(5.529e-5, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(),
168 COVARIANCE_PRECISION);
169
170 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().
171 getRTNCovarianceMatrix().getEntry(3, 0), COVARIANCE_PRECISION);
172 Assertions.assertEquals(Double.NaN, file.getDataObject1().getRTNCovarianceBlock().
173 getRTNCovarianceMatrix().getEntry(7, 6), COVARIANCE_PRECISION);
174
175
176
177
178
179 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getTca(),
180 file.getRelativeMetadata().getTca());
181 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getMissDistance(),
182 file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
183
184
185 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
186 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
187 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
188 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
189 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
190 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
191 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
192 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
193 Assertions.assertEquals(CelestialBodyFrame.EME2000,
194 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
195 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
196
197
198 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
199 DISTANCE_PRECISION);
200 Assertions.assertEquals(2245.093614e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getY(),
201 DISTANCE_PRECISION);
202 Assertions.assertEquals(6281.599946e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getZ(),
203 DISTANCE_PRECISION);
204 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
205 DERIVATION_PRECISION);
206 Assertions.assertEquals(-6.007247516e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getY(),
207 DERIVATION_PRECISION);
208 Assertions.assertEquals(3.328770172e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getZ(),
209 DERIVATION_PRECISION);
210
211 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
212 COVARIANCE_DIAG_PRECISION);
213 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(),
214 COVARIANCE_DIAG_PRECISION);
215 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(),
216 COVARIANCE_DIAG_PRECISION);
217 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(),
218 COVARIANCE_DIAG_PRECISION);
219 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
220 COVARIANCE_DIAG_PRECISION);
221 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(),
222 COVARIANCE_DIAG_PRECISION);
223
224 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
225 COVARIANCE_PRECISION);
226 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getCrdott(),
227 COVARIANCE_PRECISION);
228 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getCrdotn(),
229 COVARIANCE_PRECISION);
230 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
231 COVARIANCE_PRECISION);
232
233 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getCtdotr(),
234 COVARIANCE_PRECISION);
235 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
236 COVARIANCE_PRECISION);
237 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getCtdotn(),
238 COVARIANCE_PRECISION);
239 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getCtdotrdot(),
240 COVARIANCE_PRECISION);
241 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
242 COVARIANCE_PRECISION);
243
244 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getCndotr(),
245 COVARIANCE_PRECISION);
246 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getCndott(),
247 COVARIANCE_PRECISION);
248 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
249 COVARIANCE_PRECISION);
250 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
251 COVARIANCE_PRECISION);
252 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getCndottdot(),
253 COVARIANCE_PRECISION);
254 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotndot(),
255 COVARIANCE_PRECISION);
256
257 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
258 COVARIANCE_DIAG_PRECISION);
259 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(),
260 COVARIANCE_DIAG_PRECISION);
261 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(),
262 COVARIANCE_DIAG_PRECISION);
263 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(),
264 COVARIANCE_DIAG_PRECISION);
265 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
266 COVARIANCE_DIAG_PRECISION);
267 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(),
268 COVARIANCE_DIAG_PRECISION);
269
270 Assertions.assertEquals(2.591e-3,
271 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 0),
272 COVARIANCE_PRECISION);
273 Assertions.assertEquals(-4.152e-2,
274 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 1),
275 COVARIANCE_PRECISION);
276 Assertions.assertEquals(-1.784e-6,
277 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 2),
278 COVARIANCE_PRECISION);
279 Assertions.assertEquals(6.886e-5,
280 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 3),
281 COVARIANCE_PRECISION);
282
283 Assertions.assertEquals(-1.016e-2,
284 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 0),
285 COVARIANCE_PRECISION);
286 Assertions.assertEquals(-1.506e-4,
287 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 1),
288 COVARIANCE_PRECISION);
289 Assertions.assertEquals(1.637e-3,
290 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 2),
291 COVARIANCE_PRECISION);
292 Assertions.assertEquals(-2.987e-6,
293 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 3),
294 COVARIANCE_PRECISION);
295 Assertions.assertEquals(1.059e-5,
296 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 4),
297 COVARIANCE_PRECISION);
298
299 Assertions.assertEquals(4.400e-3,
300 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 0),
301 COVARIANCE_PRECISION);
302 Assertions.assertEquals(8.482e-3,
303 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 1),
304 COVARIANCE_PRECISION);
305 Assertions.assertEquals(8.633e-5,
306 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 2),
307 COVARIANCE_PRECISION);
308 Assertions.assertEquals(-1.903e-6,
309 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 3),
310 COVARIANCE_PRECISION);
311 Assertions.assertEquals(-4.594e-6,
312 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 4),
313 COVARIANCE_PRECISION);
314 Assertions.assertEquals(5.178e-5,
315 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 5),
316 COVARIANCE_PRECISION);
317
318 }
319
320 @Test
321 public void testParseCDM2() {
322
323
324 final String ex = "/ccsds/cdm/CDMExample2.txt";
325
326
327 final CdmParser parser = new ParserBuilder().buildCdmParser();
328
329 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
330
331
332 final Cdm file = parser.parseMessage(source);
333
334 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
335 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
336
337
338 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 1.0e-10);
339 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
340 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
341 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
342 Assertions.assertEquals("201113719185", file.getHeader().getMessageId());
343
344
345
346 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
347 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
348 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
349 Assertions.assertEquals(14762.0, file.getRelativeMetadata().getRelativeSpeed(), DERIVATION_PRECISION);
350 Assertions.assertEquals(27.4, file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
351 Assertions.assertEquals(-70.2, file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
352 Assertions.assertEquals(711.8, file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
353 Assertions.assertEquals(-7.2, file.getRelativeMetadata().getRelativeVelocity().getX(), DERIVATION_PRECISION);
354 Assertions.assertEquals(-14692.0, file.getRelativeMetadata().getRelativeVelocity().getY(),
355 DERIVATION_PRECISION);
356 Assertions.assertEquals(-1437.2, file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
357 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
358 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
359 Assertions.assertEquals(new AbsoluteDate(2010, 3, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
360 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
361 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
362 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
363 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0);
364 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0);
365 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0);
366 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
367 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
368 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 824, TimeOffset.MILLISECOND),
369 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
370 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
371 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName());
372 Assertions.assertEquals(PocMethodType.FOSTER_1992,
373 file.getRelativeMetadata().getCollisionProbaMethod().getType());
374
375
376 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
377 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject1().getObjectType());
378 Assertions.assertEquals("OSA", file.getMetadataObject1().getOperatorContactPosition());
379 Assertions.assertEquals("EUMETSAT", file.getMetadataObject1().getOperatorOrganization());
380 Assertions.assertEquals("+49615130312", file.getMetadataObject1().getOperatorPhone());
381 Assertions.assertEquals("JOHN.DOE@SOMEWHERE.NET", file.getMetadataObject1().getOperatorEmail());
382 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
383 Assertions.assertEquals(FramesFactory.getEME2000(), file.getMetadataObject1().getFrame());
384 Assertions.assertEquals("JACCHIA 70 DCA", file.getMetadataObject1().getAtmosphericModel());
385 Assertions.assertEquals("EGM-96", file.getMetadataObject1().getGravityModel());
386 Assertions.assertEquals(36, file.getMetadataObject1().getGravityDegree(), 0);
387 Assertions.assertEquals(36, file.getMetadataObject1().getGravityOrder(), 0);
388 Assertions.assertEquals("MOON", file.getMetadataObject1().getNBodyPerturbations().get(0).getName());
389 Assertions.assertEquals("SUN", file.getMetadataObject1().getNBodyPerturbations().get(1).getName());
390 Assertions.assertEquals("NO", file.getMetadataObject1().getSolarRadiationPressure().name());
391 Assertions.assertEquals("NO", file.getMetadataObject1().getEarthTides().name());
392 Assertions.assertEquals("NO", file.getMetadataObject1().getIntrackThrust().name());
393 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
394
395
396
397 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 2, 14,
398 new TimeOffset(12, TimeOffset.SECOND, 746, TimeOffset.MILLISECOND),
399 TimeScalesFactory.getUTC()),
400 file.getDataObject1().getODParametersBlock().getTimeLastObsStart());
401 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 2, 14,
402 new TimeOffset(12, TimeOffset.SECOND, 746, TimeOffset.MILLISECOND),
403 TimeScalesFactory.getUTC()),
404 file.getDataObject1().getODParametersBlock().getTimeLastObsEnd());
405 Assertions.assertEquals(7.88*3600.0*24.0, file.getDataObject1().getODParametersBlock().getRecommendedOdSpan(),
406 DOUBLE_PRECISION);
407 Assertions.assertEquals(5.50*3600.0*24.0, file.getDataObject1().getODParametersBlock().getActualOdSpan(),
408 DOUBLE_PRECISION);
409 Assertions.assertEquals(592, file.getDataObject1().getODParametersBlock().getObsAvailable(), DOUBLE_PRECISION);
410 Assertions.assertEquals(579, file.getDataObject1().getODParametersBlock().getObsUsed(), DOUBLE_PRECISION);
411 Assertions.assertEquals(123, file.getDataObject1().getODParametersBlock().getTracksAvailable(),
412 DOUBLE_PRECISION);
413 Assertions.assertEquals(119, file.getDataObject1().getODParametersBlock().getTracksUsed(), DOUBLE_PRECISION);
414 Assertions.assertEquals(97.8/100.0, file.getDataObject1().getODParametersBlock().getResidualsAccepted(),
415 DOUBLE_PRECISION);
416 Assertions.assertEquals(0.864, file.getDataObject1().getODParametersBlock().getWeightedRMS(), DOUBLE_PRECISION);
417
418 Assertions.assertEquals(5.2, file.getDataObject1().getAdditionalParametersBlock().getAreaPC(),
419 DOUBLE_PRECISION);
420 Assertions.assertEquals(251.6, file.getDataObject1().getAdditionalParametersBlock().getMass(),
421 DOUBLE_PRECISION);
422 Assertions.assertEquals(0.045663, file.getDataObject1().getAdditionalParametersBlock().getCDAreaOverMass(),
423 DOUBLE_PRECISION);
424 Assertions.assertEquals(0.000000, file.getDataObject1().getAdditionalParametersBlock().getCRAreaOverMass(),
425 DOUBLE_PRECISION);
426 Assertions.assertEquals(0.0, file.getDataObject1().getAdditionalParametersBlock().getThrustAcceleration(),
427 DOUBLE_PRECISION);
428 Assertions.assertEquals(4.54570E-05, file.getDataObject1().getAdditionalParametersBlock().getSedr(),
429 DOUBLE_PRECISION);
430
431 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(),
432 DISTANCE_PRECISION);
433 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(),
434 DERIVATION_PRECISION);
435
436 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
437 COVARIANCE_DIAG_PRECISION);
438 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
439 COVARIANCE_DIAG_PRECISION);
440 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
441 COVARIANCE_DIAG_PRECISION);
442 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
443 COVARIANCE_DIAG_PRECISION);
444 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
445 COVARIANCE_DIAG_PRECISION);
446 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
447 COVARIANCE_DIAG_PRECISION);
448
449 Assertions.assertEquals(-1.862E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgr(),
450 COVARIANCE_DIAG_PRECISION);
451 Assertions.assertEquals(3.530E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgt(),
452 COVARIANCE_DIAG_PRECISION);
453 Assertions.assertEquals(-3.100E-01, file.getDataObject1().getRTNCovarianceBlock().getCdrgn(),
454 COVARIANCE_DIAG_PRECISION);
455 Assertions.assertEquals(-1.214E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgrdot(),
456 COVARIANCE_DIAG_PRECISION);
457 Assertions.assertEquals(2.580E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgtdot(),
458 COVARIANCE_DIAG_PRECISION);
459 Assertions.assertEquals(-6.467E-05, file.getDataObject1().getRTNCovarianceBlock().getCdrgndot(),
460 COVARIANCE_DIAG_PRECISION);
461 Assertions.assertEquals(3.483E-06, file.getDataObject1().getRTNCovarianceBlock().getCdrgdrg(),
462 COVARIANCE_DIAG_PRECISION);
463
464 Assertions.assertEquals(-1.492E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpr(),
465 COVARIANCE_DIAG_PRECISION);
466 Assertions.assertEquals(2.044E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpt(),
467 COVARIANCE_DIAG_PRECISION);
468 Assertions.assertEquals(-2.331E+01, file.getDataObject1().getRTNCovarianceBlock().getCsrpn(),
469 COVARIANCE_DIAG_PRECISION);
470 Assertions.assertEquals(-1.254E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrprdot(),
471 COVARIANCE_DIAG_PRECISION);
472 Assertions.assertEquals(2.013E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrptdot(),
473 COVARIANCE_DIAG_PRECISION);
474 Assertions.assertEquals(-4.700E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrpndot(),
475 COVARIANCE_DIAG_PRECISION);
476 Assertions.assertEquals(2.210E-04, file.getDataObject1().getRTNCovarianceBlock().getCsrpdrg(),
477 COVARIANCE_DIAG_PRECISION);
478 Assertions.assertEquals(1.593E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrpsrp(),
479 COVARIANCE_DIAG_PRECISION);
480
481
482
483
484 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
485 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
486 Assertions.assertEquals(
487 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getY(),
488 file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
489 Assertions.assertEquals(
490 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
491 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
492 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
493 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
494 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
495 file.getRelativeMetadata().getCollisionProbaMethod());
496
497
498 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
499 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
500 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
501 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
502 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
503 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
504 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
505 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
506 Assertions.assertEquals(CelestialBodyFrame.EME2000,
507 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
508 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
509
510
511 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
512 DISTANCE_PRECISION);
513 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
514 DERIVATION_PRECISION);
515
516 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
517 COVARIANCE_DIAG_PRECISION);
518 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
519 COVARIANCE_DIAG_PRECISION);
520
521 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
522 COVARIANCE_PRECISION);
523 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
524 COVARIANCE_PRECISION);
525
526 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
527 COVARIANCE_PRECISION);
528 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
529 COVARIANCE_PRECISION);
530
531 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
532 COVARIANCE_PRECISION);
533 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
534 COVARIANCE_PRECISION);
535
536 Assertions.assertEquals(-5.117E-01, file.getDataObject2().getRTNCovarianceBlock().getCdrgr(),
537 COVARIANCE_PRECISION);
538 Assertions.assertEquals(1.319E+00, file.getDataObject2().getRTNCovarianceBlock().getCdrgt(),
539 COVARIANCE_PRECISION);
540 Assertions.assertEquals(-1.903E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgndot(),
541 COVARIANCE_PRECISION);
542 Assertions.assertEquals(7.402E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgtdot(),
543 COVARIANCE_PRECISION);
544 Assertions.assertEquals(-3.297E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpr(),
545 COVARIANCE_PRECISION);
546 Assertions.assertEquals(8.164E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpt(),
547 COVARIANCE_PRECISION);
548
549
550 Assertions.assertEquals("[Relative Metadata/Data]", file.getRelativeMetadata().getComment().toString());
551 Assertions.assertEquals("[Object1 Metadata]", file.getMetadataObject1().getComments().toString());
552 Assertions.assertEquals("[Object2 Metadata]", file.getMetadataObject2().getComments().toString());
553 Assertions.assertEquals("[Object1 Data]", file.getDataObject1().getComments().toString());
554 Assertions.assertEquals("[Object1 OD Parameters]",
555 file.getDataObject1().getODParametersBlock().getComments().toString());
556 Assertions.assertEquals("[Object2 OD Parameters]",
557 file.getDataObject2().getODParametersBlock().getComments().toString());
558 Assertions.assertEquals(
559 "[Object1 Additional Parameters, Apogee Altitude=779 km, Perigee Altitude=765 km, Inclination=86.4 deg]",
560 file.getDataObject1().getAdditionalParametersBlock().getComments().toString());
561 Assertions.assertEquals(
562 "[Object2 Additional Parameters, Apogee Altitude=786 km, Perigee Altitude=414 km, Inclination=98.9 deg]",
563 file.getDataObject2().getAdditionalParametersBlock().getComments().toString());
564
565 }
566
567 @Test
568 public void testParseCDM3() {
569
570
571 final String ex = "/ccsds/cdm/CDMExample3.txt";
572
573
574 final CdmParser parser = new ParserBuilder().buildCdmParser();
575
576 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
577
578
579 final Cdm file = parser.parseMessage(source);
580
581
582 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
583 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
584
585
586 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 0.0);
587 Assertions.assertEquals(new AbsoluteDate(2012, 9, 12, 22, 31, 12,
588 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
589 Assertions.assertEquals("SDC", file.getHeader().getOriginator());
590 Assertions.assertEquals("GALAXY 15", file.getHeader().getMessageFor());
591 Assertions.assertEquals("20120912223112", file.getHeader().getMessageId());
592
593
594
595 Assertions.assertEquals(new AbsoluteDate(2012, 9, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
596 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
597 Assertions.assertEquals(104.92, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
598 Assertions.assertEquals(12093.52, file.getRelativeMetadata().getRelativeSpeed(), DERIVATION_PRECISION);
599 Assertions.assertEquals(30.6, file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
600 Assertions.assertEquals(100.2, file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
601 Assertions.assertEquals(5.7, file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
602 Assertions.assertEquals(-20.3, file.getRelativeMetadata().getRelativeVelocity().getX(), DERIVATION_PRECISION);
603 Assertions.assertEquals(-12000.0, file.getRelativeMetadata().getRelativeVelocity().getY(),
604 DERIVATION_PRECISION);
605 Assertions.assertEquals(-1500.9, file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
606 Assertions.assertEquals(new AbsoluteDate(2012, 9, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
607 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
608 Assertions.assertEquals(new AbsoluteDate(2012, 9, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
609 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
610 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
611 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
612 Assertions.assertEquals(500, file.getRelativeMetadata().getScreenVolumeX(), 0);
613 Assertions.assertEquals(500, file.getRelativeMetadata().getScreenVolumeY(), 0);
614 Assertions.assertEquals(500, file.getRelativeMetadata().getScreenVolumeZ(), 0);
615 Assertions.assertEquals(new AbsoluteDate(2012, 9, 13, 20, 25, new TimeOffset(43, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
616 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
617 Assertions.assertEquals(new AbsoluteDate(2012, 9, 13, 23, 44, new TimeOffset(29, TimeOffset.SECOND, 324, TimeOffset.MILLISECOND),
618 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
619 Assertions.assertEquals(2.355e-03, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
620 Assertions.assertEquals("ALFANO-2005", file.getRelativeMetadata().getCollisionProbaMethod().getName());
621 Assertions.assertEquals(PocMethodType.ALFANO_2005,
622 file.getRelativeMetadata().getCollisionProbaMethod().getType());
623
624
625 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
626 Assertions.assertEquals("28884", file.getMetadataObject1().getObjectDesignator());
627 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
628 Assertions.assertEquals("GALAXY 15", file.getMetadataObject1().getObjectName());
629 Assertions.assertEquals("2005-041A", file.getMetadataObject1().getInternationalDes());
630 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject1().getObjectType());
631 Assertions.assertNull(file.getMetadataObject1().getOperatorContactPosition());
632 Assertions.assertEquals("INTELSAT", file.getMetadataObject1().getOperatorOrganization());
633 Assertions.assertEquals("GALAXY-15A-2012JAN-WMANEUVER23A", file.getMetadataObject1().getEphemName());
634 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
635 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
636 Assertions.assertEquals(CelestialBodyFrame.EME2000,
637 file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
638 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
639
640
641
642 Assertions.assertEquals(new AbsoluteDate(2012, 9, 6, 20, 25, new TimeOffset(43, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
643 TimeScalesFactory.getUTC()),
644 file.getDataObject1().getODParametersBlock().getTimeLastObsStart());
645 Assertions.assertEquals(new AbsoluteDate(2012, 9, 6, 20, 25, new TimeOffset(43, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
646 TimeScalesFactory.getUTC()),
647 file.getDataObject1().getODParametersBlock().getTimeLastObsEnd());
648
649 Assertions.assertEquals(-41600.46272465e3,
650 file.getDataObject1().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
651 Assertions.assertEquals(3626.912120064e3,
652 file.getDataObject1().getStateVectorBlock().getPositionVector().getY(), DISTANCE_PRECISION);
653 Assertions.assertEquals(6039.06350924e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(),
654 DISTANCE_PRECISION);
655 Assertions.assertEquals(-0.306132852503e3,
656 file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
657 Assertions.assertEquals(-3.044998353334e3,
658 file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(), DERIVATION_PRECISION);
659 Assertions.assertEquals(-0.287674310725e3,
660 file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(), DERIVATION_PRECISION);
661
662 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
663 COVARIANCE_DIAG_PRECISION);
664 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
665 COVARIANCE_DIAG_PRECISION);
666 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
667 COVARIANCE_DIAG_PRECISION);
668 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
669 COVARIANCE_DIAG_PRECISION);
670 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
671 COVARIANCE_DIAG_PRECISION);
672 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
673 COVARIANCE_DIAG_PRECISION);
674
675 Assertions.assertEquals(2.520E-03, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(),
676 COVARIANCE_PRECISION);
677 Assertions.assertEquals(-5.476E+00, file.getDataObject1().getRTNCovarianceBlock().getCrdott(),
678 COVARIANCE_PRECISION);
679 Assertions.assertEquals(8.626E-04, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(),
680 COVARIANCE_PRECISION);
681 Assertions.assertEquals(5.744E-03, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(),
682 COVARIANCE_PRECISION);
683
684 Assertions.assertEquals(-1.006E-02, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(),
685 COVARIANCE_PRECISION);
686 Assertions.assertEquals(4.041E-03, file.getDataObject1().getRTNCovarianceBlock().getCtdott(),
687 COVARIANCE_PRECISION);
688 Assertions.assertEquals(-1.359E-03, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(),
689 COVARIANCE_PRECISION);
690 Assertions.assertEquals(-1.502E-05, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(),
691 COVARIANCE_PRECISION);
692 Assertions.assertEquals(1.049E-05, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(),
693 COVARIANCE_PRECISION);
694
695 Assertions.assertEquals(1.053E-03, file.getDataObject1().getRTNCovarianceBlock().getCndotr(),
696 COVARIANCE_PRECISION);
697 Assertions.assertEquals(-3.412E-03, file.getDataObject1().getRTNCovarianceBlock().getCndott(),
698 COVARIANCE_PRECISION);
699 Assertions.assertEquals(1.213E-02, file.getDataObject1().getRTNCovarianceBlock().getCndotn(),
700 COVARIANCE_PRECISION);
701 Assertions.assertEquals(-3.004E-06, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(),
702 COVARIANCE_PRECISION);
703 Assertions.assertEquals(-1.091E-06, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(),
704 COVARIANCE_PRECISION);
705 Assertions.assertEquals(5.529E-05, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(),
706 COVARIANCE_PRECISION);
707
708
709
710 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
711 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
712 Assertions.assertEquals(
713 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getX(),
714 file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
715 Assertions.assertEquals(
716 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
717 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
718 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
719 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
720 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
721 file.getRelativeMetadata().getCollisionProbaMethod());
722
723
724 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
725 Assertions.assertEquals("21139", file.getMetadataObject2().getObjectDesignator());
726 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
727 Assertions.assertEquals("ASTRA 1B", file.getMetadataObject2().getObjectName());
728 Assertions.assertEquals("1991-051A", file.getMetadataObject2().getInternationalDes());
729 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject2().getObjectType());
730 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
731 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
732 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject2().getManeuverable());
733 Assertions.assertEquals(CelestialBodyFrame.EME2000,
734 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
735 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
736
737
738 Assertions.assertEquals(-2956.02034826e3,
739 file.getDataObject2().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
740 Assertions.assertEquals(-3.047096589536e3,
741 file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
742
743 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
744 COVARIANCE_DIAG_PRECISION);
745 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
746 COVARIANCE_DIAG_PRECISION);
747
748 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
749 COVARIANCE_PRECISION);
750 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
751 COVARIANCE_PRECISION);
752
753 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
754 COVARIANCE_PRECISION);
755 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
756 COVARIANCE_PRECISION);
757
758 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
759 COVARIANCE_PRECISION);
760 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
761 COVARIANCE_PRECISION);
762
763
764 Assertions.assertEquals("[Relative Metadata/Data]",
765 file.getMetadataObject1().getRelativeMetadata().getComment().toString());
766 Assertions.assertEquals("[Object1 Metadata]", file.getMetadataObject1().getComments().toString());
767 Assertions.assertEquals("[Object2 Metadata]", file.getMetadataObject2().getComments().toString());
768 Assertions.assertEquals("[Object1 OD Parameters]",
769 file.getDataObject1().getODParametersBlock().getComments().toString());
770 Assertions.assertEquals("[Object1 Data]", file.getDataObject1().getComments().toString());
771 Assertions.assertEquals("[Object2 Data]", file.getDataObject2().getComments().toString());
772 Assertions.assertEquals("[Object2 OD Parameters]",
773 file.getDataObject2().getODParametersBlock().getComments().toString());
774 Assertions.assertEquals("[]", file.getDataObject1().getStateVectorBlock().getComments().toString());
775 Assertions.assertEquals("[Object1 Covariance in the RTN Coordinate Frame]",
776 file.getDataObject1().getRTNCovarianceBlock().getComments().toString());
777
778 }
779
780 @Test
781 public void testParseCDM4() {
782
783
784 final String ex = "/ccsds/cdm/CDMExample4.txt";
785
786
787 final CdmParser parser = new ParserBuilder().buildCdmParser();
788
789 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
790
791
792 final Cdm file = parser.parseMessage(source);
793
794 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
795 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
796
797
798 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 1.0e-10);
799 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
800 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
801 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
802 Assertions.assertEquals("201113719185", file.getHeader().getMessageId());
803
804
805
806 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
807 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
808 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
809
810 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
811 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
812 Assertions.assertEquals(new AbsoluteDate(2010, 3, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
813 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
814 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
815 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
816 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0);
817 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0);
818 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0);
819 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
820 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
821 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 824, TimeOffset.MILLISECOND),
822 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
823 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
824 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName());
825 Assertions.assertEquals(PocMethodType.FOSTER_1992,
826 file.getRelativeMetadata().getCollisionProbaMethod().getType());
827
828
829 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
830 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject1().getObjectType());
831 Assertions.assertEquals("OSA", file.getMetadataObject1().getOperatorContactPosition());
832 Assertions.assertEquals("EUMETSAT", file.getMetadataObject1().getOperatorOrganization());
833
834
835 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
836 COVARIANCE_DIAG_PRECISION);
837 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
838 COVARIANCE_DIAG_PRECISION);
839 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
840 COVARIANCE_DIAG_PRECISION);
841 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
842 COVARIANCE_DIAG_PRECISION);
843 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
844 COVARIANCE_DIAG_PRECISION);
845 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
846 COVARIANCE_DIAG_PRECISION);
847
848 Assertions.assertEquals(-1.862E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgr(),
849 COVARIANCE_DIAG_PRECISION);
850 Assertions.assertEquals(3.530E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgt(),
851 COVARIANCE_DIAG_PRECISION);
852 Assertions.assertEquals(-3.100E-01, file.getDataObject1().getRTNCovarianceBlock().getCdrgn(),
853 COVARIANCE_DIAG_PRECISION);
854 Assertions.assertEquals(-1.214E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgrdot(),
855 COVARIANCE_DIAG_PRECISION);
856 Assertions.assertEquals(2.580E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgtdot(),
857 COVARIANCE_DIAG_PRECISION);
858 Assertions.assertEquals(-6.467E-05, file.getDataObject1().getRTNCovarianceBlock().getCdrgndot(),
859 COVARIANCE_DIAG_PRECISION);
860 Assertions.assertEquals(3.483E-06, file.getDataObject1().getRTNCovarianceBlock().getCdrgdrg(),
861 COVARIANCE_DIAG_PRECISION);
862
863 Assertions.assertEquals(-1.492E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpr(),
864 COVARIANCE_DIAG_PRECISION);
865 Assertions.assertEquals(2.044E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpt(),
866 COVARIANCE_DIAG_PRECISION);
867 Assertions.assertEquals(-2.331E+01, file.getDataObject1().getRTNCovarianceBlock().getCsrpn(),
868 COVARIANCE_DIAG_PRECISION);
869 Assertions.assertEquals(-1.254E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrprdot(),
870 COVARIANCE_DIAG_PRECISION);
871 Assertions.assertEquals(2.013E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrptdot(),
872 COVARIANCE_DIAG_PRECISION);
873 Assertions.assertEquals(-4.700E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrpndot(),
874 COVARIANCE_DIAG_PRECISION);
875 Assertions.assertEquals(2.210E-04, file.getDataObject1().getRTNCovarianceBlock().getCsrpdrg(),
876 COVARIANCE_DIAG_PRECISION);
877 Assertions.assertEquals(1.593E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrpsrp(),
878 COVARIANCE_DIAG_PRECISION);
879
880 Assertions.assertEquals(-1.803E-06, file.getDataObject1().getRTNCovarianceBlock().getCthrr(),
881 COVARIANCE_PRECISION);
882 Assertions.assertEquals(3.803E-03, file.getDataObject1().getRTNCovarianceBlock().getCthrt(),
883 COVARIANCE_PRECISION);
884 Assertions.assertEquals(3.303E02, file.getDataObject1().getRTNCovarianceBlock().getCthrn(),
885 COVARIANCE_PRECISION);
886 Assertions.assertEquals(7.203E01, file.getDataObject1().getRTNCovarianceBlock().getCthrrdot(),
887 COVARIANCE_PRECISION);
888 Assertions.assertEquals(-1.654E01, file.getDataObject1().getRTNCovarianceBlock().getCthrtdot(),
889 COVARIANCE_PRECISION);
890 Assertions.assertEquals(9.203E-01, file.getDataObject1().getRTNCovarianceBlock().getCthrndot(),
891 COVARIANCE_PRECISION);
892 Assertions.assertEquals(-3.876, file.getDataObject1().getRTNCovarianceBlock().getCthrdrg(),
893 COVARIANCE_PRECISION);
894 Assertions.assertEquals(6.876E03, file.getDataObject1().getRTNCovarianceBlock().getCthrsrp(),
895 COVARIANCE_PRECISION);
896 Assertions.assertEquals(-2.986E-02, file.getDataObject1().getRTNCovarianceBlock().getCthrthr(),
897 COVARIANCE_PRECISION);
898
899
900
901 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
902 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
903 Assertions.assertEquals(
904 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getY(),
905 file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
906 Assertions.assertEquals(
907 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
908 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
909 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
910 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
911 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
912 file.getRelativeMetadata().getCollisionProbaMethod());
913
914
915 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
916 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
917 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
918 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
919 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
920 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
921 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
922 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
923 Assertions.assertEquals(CelestialBodyFrame.EME2000,
924 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
925 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
926
927
928 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
929 DISTANCE_PRECISION);
930 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
931 DERIVATION_PRECISION);
932
933 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
934 COVARIANCE_DIAG_PRECISION);
935 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
936 COVARIANCE_DIAG_PRECISION);
937
938 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
939 COVARIANCE_PRECISION);
940 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
941 COVARIANCE_PRECISION);
942
943 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
944 COVARIANCE_PRECISION);
945 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
946 COVARIANCE_PRECISION);
947
948 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
949 COVARIANCE_PRECISION);
950 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
951 COVARIANCE_PRECISION);
952
953 Assertions.assertEquals(-5.117E-01, file.getDataObject2().getRTNCovarianceBlock().getCdrgr(),
954 COVARIANCE_PRECISION);
955 Assertions.assertEquals(1.319E+00, file.getDataObject2().getRTNCovarianceBlock().getCdrgt(),
956 COVARIANCE_PRECISION);
957 Assertions.assertEquals(-1.903E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgndot(),
958 COVARIANCE_PRECISION);
959 Assertions.assertEquals(7.402E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgtdot(),
960 COVARIANCE_PRECISION);
961 Assertions.assertEquals(-3.297E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpr(),
962 COVARIANCE_PRECISION);
963 Assertions.assertEquals(8.164E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpt(),
964 COVARIANCE_PRECISION);
965
966
967 Assertions.assertEquals("[Relative Metadata/Data]", file.getRelativeMetadata().getComment().toString());
968 Assertions.assertEquals("[Object1 Metadata]", file.getMetadataObject1().getComments().toString());
969 Assertions.assertEquals("[Object2 Metadata]", file.getMetadataObject2().getComments().toString());
970 Assertions.assertEquals("[Object1 Data]", file.getDataObject1().getComments().toString());
971 Assertions.assertEquals("[Object1 OD Parameters]",
972 file.getDataObject1().getODParametersBlock().getComments().toString());
973 Assertions.assertEquals("[Object2 OD Parameters]",
974 file.getDataObject2().getODParametersBlock().getComments().toString());
975 Assertions.assertEquals(
976 "[Object1 Additional Parameters, Apogee Altitude=779 km, Perigee Altitude=765 km, Inclination=86.4 deg]",
977 file.getDataObject1().getAdditionalParametersBlock().getComments().toString());
978 Assertions.assertEquals(
979 "[Object2 Additional Parameters, Apogee Altitude=786 km, Perigee Altitude=414 km, Inclination=98.9 deg]",
980 file.getDataObject2().getAdditionalParametersBlock().getComments().toString());
981
982 }
983
984
985 @Test
986 public void testParseXML_CDM1() {
987
988
989 final String ex = "/ccsds/cdm/CDMExample1.xml";
990
991
992 final CdmParser parser = new ParserBuilder().buildCdmParser();
993
994 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
995
996
997 final Cdm file = parser.parseMessage(source);
998
999 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
1000 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
1001
1002
1003 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 0.0);
1004 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12.000,
1005 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
1006 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
1007 Assertions.assertEquals("SATELLITE A", file.getHeader().getMessageFor());
1008 Assertions.assertEquals("20111371985", file.getHeader().getMessageId());
1009
1010
1011
1012 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND,
1013 618, TimeOffset.MILLISECOND),
1014 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
1015 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
1016 Assertions.assertEquals(14762.0, file.getRelativeMetadata().getRelativeSpeed(), DERIVATION_PRECISION);
1017 Assertions.assertEquals(27.4, file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
1018 Assertions.assertEquals(-70.2, file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
1019 Assertions.assertEquals(711.8, file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
1020 Assertions.assertEquals(-7.2, file.getRelativeMetadata().getRelativeVelocity().getX(), DERIVATION_PRECISION);
1021 Assertions.assertEquals(-14692.0, file.getRelativeMetadata().getRelativeVelocity().getY(),
1022 DERIVATION_PRECISION);
1023 Assertions.assertEquals(-1437.2, file.getRelativeMetadata().getRelativeVelocity().getZ(),
1024 DERIVATION_PRECISION);
1025 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND,
1026 212, TimeOffset.MILLISECOND),
1027 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
1028 Assertions.assertEquals(new AbsoluteDate(2010, 3, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND,
1029 212, TimeOffset.MILLISECOND),
1030 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
1031 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
1032 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
1033 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0);
1034 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0);
1035 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0);
1036 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 20, 25, new TimeOffset(43, TimeOffset.SECOND,
1037 222, TimeOffset.MILLISECOND),
1038 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
1039 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 23, 44, new TimeOffset(29, TimeOffset.SECOND,
1040 324, TimeOffset.MILLISECOND),
1041 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
1042 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
1043 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName());
1044 Assertions.assertEquals(PocMethodType.FOSTER_1992,
1045 file.getRelativeMetadata().getCollisionProbaMethod().getType());
1046
1047
1048 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
1049 Assertions.assertEquals("12345", file.getMetadataObject1().getObjectDesignator());
1050 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
1051 Assertions.assertEquals("SATELLITE A", file.getMetadataObject1().getObjectName());
1052 Assertions.assertEquals("1997-030E", file.getMetadataObject1().getInternationalDes());
1053 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
1054 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
1055 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
1056 Assertions.assertEquals(CelestialBodyFrame.EME2000,
1057 file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
1058 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
1059
1060
1061
1062
1063 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(),
1064 DISTANCE_PRECISION);
1065 Assertions.assertEquals(2244.654904e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getY(),
1066 DISTANCE_PRECISION);
1067 Assertions.assertEquals(6281.497978e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(),
1068 DISTANCE_PRECISION);
1069 Assertions.assertEquals(4.418769571e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(),
1070 DERIVATION_PRECISION);
1071 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(),
1072 DERIVATION_PRECISION);
1073 Assertions.assertEquals(-3.526774282e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(),
1074 DERIVATION_PRECISION);
1075
1076 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
1077 COVARIANCE_DIAG_PRECISION);
1078 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
1079 COVARIANCE_DIAG_PRECISION);
1080 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
1081 COVARIANCE_DIAG_PRECISION);
1082 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
1083 COVARIANCE_DIAG_PRECISION);
1084 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
1085 COVARIANCE_DIAG_PRECISION);
1086 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
1087 COVARIANCE_DIAG_PRECISION);
1088
1089 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(),
1090 COVARIANCE_PRECISION);
1091 Assertions.assertEquals(-5.476, file.getDataObject1().getRTNCovarianceBlock().getCrdott(),
1092 COVARIANCE_PRECISION);
1093 Assertions.assertEquals(8.626e-4, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(),
1094 COVARIANCE_PRECISION);
1095 Assertions.assertEquals(5.744e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(),
1096 COVARIANCE_PRECISION);
1097
1098 Assertions.assertEquals(-1.006e-2, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(),
1099 COVARIANCE_PRECISION);
1100 Assertions.assertEquals(4.041e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdott(),
1101 COVARIANCE_PRECISION);
1102 Assertions.assertEquals(-1.359e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(),
1103 COVARIANCE_PRECISION);
1104 Assertions.assertEquals(-1.502e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(),
1105 COVARIANCE_PRECISION);
1106 Assertions.assertEquals(1.049e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(),
1107 COVARIANCE_PRECISION);
1108
1109 Assertions.assertEquals(1.053e-3, file.getDataObject1().getRTNCovarianceBlock().getCndotr(),
1110 COVARIANCE_PRECISION);
1111 Assertions.assertEquals(-3.412e-3, file.getDataObject1().getRTNCovarianceBlock().getCndott(),
1112 COVARIANCE_PRECISION);
1113 Assertions.assertEquals(1.213e-2, file.getDataObject1().getRTNCovarianceBlock().getCndotn(),
1114 COVARIANCE_PRECISION);
1115 Assertions.assertEquals(-3.004e-6, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(),
1116 COVARIANCE_PRECISION);
1117 Assertions.assertEquals(-1.091e-6, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(),
1118 COVARIANCE_PRECISION);
1119 Assertions.assertEquals(5.529e-5, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(),
1120 COVARIANCE_PRECISION);
1121
1122
1123
1124 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
1125 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
1126 Assertions.assertEquals(
1127 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getZ(),
1128 file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
1129 Assertions.assertEquals(
1130 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
1131 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
1132 Assertions.assertEquals(
1133 file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
1134 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
1135 Assertions.assertEquals(
1136 file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
1137 file.getRelativeMetadata().getCollisionProbaMethod());
1138
1139
1140 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
1141 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
1142 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
1143 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
1144 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
1145 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
1146 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
1147 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1148 Assertions.assertEquals(CelestialBodyFrame.EME2000,
1149 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
1150 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
1151
1152
1153 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
1154 DISTANCE_PRECISION);
1155 Assertions.assertEquals(2245.093614e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getY(),
1156 DISTANCE_PRECISION);
1157 Assertions.assertEquals(6281.599946e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getZ(),
1158 DISTANCE_PRECISION);
1159 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
1160 DERIVATION_PRECISION);
1161 Assertions.assertEquals(-6.007247516e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getY(),
1162 DERIVATION_PRECISION);
1163 Assertions.assertEquals(3.328770172e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getZ(),
1164 DERIVATION_PRECISION);
1165
1166 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
1167 COVARIANCE_DIAG_PRECISION);
1168 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(),
1169 COVARIANCE_DIAG_PRECISION);
1170 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(),
1171 COVARIANCE_DIAG_PRECISION);
1172 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(),
1173 COVARIANCE_DIAG_PRECISION);
1174 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
1175 COVARIANCE_DIAG_PRECISION);
1176 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(),
1177 COVARIANCE_DIAG_PRECISION);
1178
1179 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
1180 COVARIANCE_PRECISION);
1181 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getCrdott(),
1182 COVARIANCE_PRECISION);
1183 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getCrdotn(),
1184 COVARIANCE_PRECISION);
1185 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
1186 COVARIANCE_PRECISION);
1187
1188 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getCtdotr(),
1189 COVARIANCE_PRECISION);
1190 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
1191 COVARIANCE_PRECISION);
1192 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getCtdotn(),
1193 COVARIANCE_PRECISION);
1194 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getCtdotrdot(),
1195 COVARIANCE_PRECISION);
1196 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
1197 COVARIANCE_PRECISION);
1198
1199 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getCndotr(),
1200 COVARIANCE_PRECISION);
1201 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getCndott(),
1202 COVARIANCE_PRECISION);
1203 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
1204 COVARIANCE_PRECISION);
1205 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
1206 COVARIANCE_PRECISION);
1207 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getCndottdot(),
1208 COVARIANCE_PRECISION);
1209 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotndot(),
1210 COVARIANCE_PRECISION);
1211
1212
1213 ArrayList<String> relativeMetadataComment = new ArrayList<>();
1214 relativeMetadataComment.add("Relative Metadata/Data");
1215 Assertions.assertEquals(relativeMetadataComment, file.getRelativeMetadata().getComment());
1216
1217
1218 ArrayList<String> MetadataComment = new ArrayList<>();
1219 MetadataComment.add("Object1 Metadata");
1220 Assertions.assertEquals(MetadataComment, file.getMetadataObject1().getComments());
1221
1222
1223 ArrayList<String> generalComment = new ArrayList<>();
1224 generalComment.add("Object1 Data");
1225 Assertions.assertEquals(generalComment, file.getDataObject1().getComments());
1226
1227
1228 ArrayList<String> addParametersComment = new ArrayList<>();
1229 addParametersComment.add("Object 1 Additional Parameters");
1230 Assertions.assertEquals(addParametersComment,
1231 file.getDataObject1().getAdditionalParametersBlock().getComments());
1232
1233
1234 ArrayList<String> stateVectorComment = new ArrayList<>();
1235 stateVectorComment.add("Object1 State Vector");
1236 Assertions.assertEquals(stateVectorComment, file.getDataObject1().getStateVectorBlock().getComments());
1237
1238
1239 ArrayList<String> RTNComment = new ArrayList<>();
1240 RTNComment.add("Object1 Covariance in the RTN Coordinate Frame");
1241 Assertions.assertEquals(RTNComment, file.getDataObject1().getRTNCovarianceBlock().getComments());
1242
1243
1244
1245 ArrayList<String> generalCommentObj2AddParam = new ArrayList<>();
1246 generalCommentObj2AddParam.add("Object2 Additional Parameters");
1247 generalCommentObj2AddParam.add("Apogee Altitude=768 km, Perigee Altitude=414 km, Inclination=98.8 deg");
1248 Assertions.assertEquals(generalCommentObj2AddParam.toString(),
1249 file.getDataObject2().getAdditionalParametersBlock().getComments().toString());
1250
1251 }
1252
1253 @Test
1254 public void testNonExistentFile() throws URISyntaxException {
1255 final String realName = getClass().getResource("/ccsds/cdm/CDMExample1.txt").toURI().getPath();
1256 final String wrongName = realName + "xxxxx";
1257 try {
1258 final DataSource source = new DataSource(wrongName, () -> getClass().getResourceAsStream(wrongName));
1259 new ParserBuilder().
1260 buildCdmParser().
1261 parseMessage(source);
1262 Assertions.fail("an exception should have been thrown");
1263 } catch (OrekitException oe) {
1264 Assertions.assertEquals(OrekitMessages.UNABLE_TO_FIND_FILE, oe.getSpecifier());
1265 Assertions.assertEquals(wrongName, oe.getParts()[0]);
1266 }
1267 }
1268
1269 @Test
1270 public void testMissingTCA() {
1271 final String name = "/ccsds/cdm/CDM-missing-TCA.txt";
1272 try {
1273 final DataSource source = new DataSource(name, () -> getClass().getResourceAsStream(name));
1274 new ParserBuilder().
1275 buildCdmParser().
1276 parseMessage(source);
1277 Assertions.fail("an exception should have been thrown");
1278 } catch (OrekitException oe) {
1279 Assertions.assertEquals(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY, oe.getSpecifier());
1280 Assertions.assertEquals("TCA", oe.getParts()[0]);
1281 }
1282 }
1283
1284 @Test
1285 public void testMissingObj2StateVectorX() {
1286 final String name = "/ccsds/cdm/CDM-missing-object2-state-vector.txt";
1287 try {
1288 final DataSource source = new DataSource(name, () -> getClass().getResourceAsStream(name));
1289 new ParserBuilder().
1290 buildCdmParser().
1291 parseMessage(source);
1292 Assertions.fail("an exception should have been thrown");
1293 } catch (OrekitException oe) {
1294 Assertions.assertEquals(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY, oe.getSpecifier());
1295 Assertions.assertEquals("X", oe.getParts()[0]);
1296 }
1297 }
1298
1299 @Test
1300 public void testMissingObj1CovarianceCNDOT_NDOT() {
1301 final String name = "/ccsds/cdm/CDM-missing-object1-covariance-block.xml";
1302 try {
1303 final DataSource source = new DataSource(name, () -> getClass().getResourceAsStream(name));
1304 new ParserBuilder().
1305 buildCdmParser().
1306 parseMessage(source);
1307 Assertions.fail("an exception should have been thrown");
1308 } catch (OrekitException oe) {
1309 Assertions.assertEquals(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY, oe.getSpecifier());
1310 Assertions.assertEquals("CR_R", oe.getParts()[0]);
1311 }
1312 }
1313
1314
1315 @Test
1316 public void testMissingObj1OrbitCenterGetFrame() {
1317
1318
1319 final String ex = "/ccsds/cdm/CDM-no-orbit-center-defined-obj1.txt";
1320
1321
1322 final CdmParser parser = new ParserBuilder().buildCdmParser();
1323
1324 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1325
1326
1327
1328 final Cdm file = parser.parseMessage(source);
1329
1330
1331 final BodyFacade obj1OrbitCenter = file.getMetadataObject1().getOrbitCenter();
1332 final BodyFacade expectedOrbitCenter = new BodyFacade(CelestialBodyFactory.EARTH.toUpperCase(),
1333 CelestialBodyFactory.getEarth());
1334
1335 Assertions.assertEquals(expectedOrbitCenter.getName(), obj1OrbitCenter.getName());
1336 Assertions.assertEquals(expectedOrbitCenter.getBody(), obj1OrbitCenter.getBody());
1337
1338 }
1339
1340 @Test
1341 public void testCovarianceNumberFormatErrorType() {
1342 final String ex = "/ccsds/cdm/CDM-covariance-wrong-entry-format.txt";
1343 try {
1344 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1345 new ParserBuilder().
1346 buildCdmParser().
1347 parseMessage(source);
1348 } catch (OrekitException oe) {
1349 Assertions.assertEquals(OrekitMessages.UNABLE_TO_PARSE_ELEMENT_IN_FILE, oe.getSpecifier());
1350 Assertions.assertEquals("CRDOT_T", oe.getParts()[0]);
1351 Assertions.assertEquals(65, oe.getParts()[1]);
1352 }
1353 }
1354
1355 @Test
1356 public void test_issue_940() {
1357
1358
1359 final String cdm_kvn = "/ccsds/cdm/CDMExample_issue_940.txt";
1360 final String cdm_xml = "/ccsds/cdm/CDMExample_issue_940.xml";
1361
1362
1363 test_issue_940_data(cdm_kvn);
1364 test_issue_940_data(cdm_xml);
1365
1366 }
1367
1368 public void test_issue_940_data(String ex) {
1369
1370
1371 final CdmParser parser = new ParserBuilder().buildCdmParser();
1372
1373 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1374
1375
1376 final Cdm file = parser.parseMessage(source);
1377
1378
1379
1380
1381
1382
1383
1384
1385 Assertions.assertEquals("\"Free text - for examples see CDM pink book (CCSDS 508.0-P-1.0.2)\"",
1386 file.getHeader().getClassification(),"CLASSIFICATION");
1387
1388
1389
1390
1391
1392
1393
1394
1395 Assertions.assertEquals("20220708T10hz SATELLITEA SATELLITEB", file.getRelativeMetadata().getConjunctionId(), "CONJUNCTION ID");
1396
1397
1398 Assertions.assertEquals(180.0, FastMath.toDegrees(file.getRelativeMetadata().getApproachAngle()), 0.0);
1399
1400
1401 Assertions.assertEquals(ScreenType.SHAPE, file.getRelativeMetadata().getScreenType(), "SCREEN_TYPE");
1402
1403
1404 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape(),"SCREEN_VOLUME_SHAPE");
1405
1406
1407 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0.0);
1408
1409
1410 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0.0);
1411
1412
1413 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0.0);
1414
1415
1416 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 20, 25, new TimeOffset(43, TimeOffset.SECOND,
1417 222, TimeOffset.MILLISECOND),
1418 TimeScalesFactory.getUTC()),
1419 file.getRelativeMetadata().getScreenEntryTime(), "SCREEN_ENTRY_TIME");
1420
1421
1422 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 23, 44, new TimeOffset(29, TimeOffset.SECOND,
1423 324, TimeOffset.MILLISECOND),
1424 TimeScalesFactory.getUTC()),
1425 file.getRelativeMetadata().getScreenExitTime(), "SCREEN_EXIT_TIME");
1426
1427
1428 Assertions.assertEquals(1.000E-03, file.getRelativeMetadata().getScreenPcThreshold(), 0.0);
1429
1430
1431 int[] collisionPercentile = {50, 51, 52};
1432 Assertions.assertArrayEquals(collisionPercentile, file.getRelativeMetadata().getCollisionPercentile());
1433
1434
1435 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 0.0);
1436
1437
1438 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName(), "COLLISION_PROBABILITY_METHOD");
1439
1440
1441 Assertions.assertEquals(1.234E-05, file.getRelativeMetadata().getMaxCollisionProbability(), 0.0);
1442
1443
1444 Assertions.assertEquals("SCALE_COMBINED_COVAR", file.getRelativeMetadata().getMaxCollisionProbabilityMethod().getName(), "COLLISION_MAX_PC_METHOD");
1445
1446
1447 Assertions.assertEquals(1.234E-05, file.getRelativeMetadata().getSefiCollisionProbability(), 0.0);
1448
1449
1450 Assertions.assertEquals("SEFI_PC_METHOD", file.getRelativeMetadata().getSefiCollisionProbabilityMethod().getName(),"SEFI_COLLISION_PROBABILITY_METHOD");
1451
1452
1453 Assertions.assertEquals("NASA STD BREAKUP MODEL", file.getRelativeMetadata().getSefiFragmentationModel(), "SEFI_FRAGMENTATION_MODEL");
1454
1455
1456 Assertions.assertEquals("201113719185-0", file.getRelativeMetadata().getPreviousMessageId(), "PREVIOUS_MESSAGE_ID");
1457
1458
1459 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 10, 31, 12, TimeScalesFactory.getUTC()),
1460 file.getRelativeMetadata().getPreviousMessageEpoch(), "PREVIOUS_MESSAGE_EPOCH");
1461
1462
1463 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 10, 31, 12, TimeScalesFactory.getUTC()),
1464 file.getRelativeMetadata().getNextMessageEpoch(), "NEXT_MESSAGE_EPOCH");
1465
1466
1467
1468
1469
1470
1471
1472
1473 Assertions.assertEquals("ODM_MSG_35132.txt", file.getMetadataObject1().getOdmMsgLink(), "ODM_MSG_LINK");
1474
1475
1476 Assertions.assertEquals("ATT_MSG_35132.txt", file.getMetadataObject1().getAdmMsgLink(),"ADM_MSG_LINK");
1477
1478
1479 Assertions.assertEquals(YesNoUnknown.YES, file.getMetadataObject1().getObsBeforeNextMessage(), "OBS_BEFORE_NEXT_MESSAGE");
1480
1481
1482 Assertions.assertEquals("HAC Covariance", file.getMetadataObject1().getCovarianceSource(), "COVARIANCE_SOURCE");
1483
1484
1485 Assertions.assertEquals(AltCovarianceType.XYZ, file.getMetadataObject1().getAltCovType(), "ALT_COV_TYPE");
1486
1487
1488 Assertions.assertEquals("EME2000", file.getMetadataObject1().getAltCovRefFrame().getName(), "ALT_COV_REF_FRAME");
1489
1490
1491
1492
1493
1494
1495
1496
1497 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12, TimeScalesFactory.getUTC()),
1498 file.getDataObject1().getODParametersBlock().getOdEpoch(), "OD_EPOCH");
1499
1500
1501
1502
1503
1504
1505
1506
1507 Assertions.assertEquals(5.0, file.getDataObject1().getAdditionalParametersBlock().getAreaPCMin(), 0.0);
1508
1509
1510 Assertions.assertEquals(5.4, file.getDataObject1().getAdditionalParametersBlock().getAreaPCMax(), 0.0);
1511
1512
1513 Assertions.assertEquals("OEB_YAW", file.getDataObject1().getAdditionalParametersBlock().getOebParentFrame().getName(), "OEB_PARENT_FRAME");
1514
1515
1516 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12, TimeScalesFactory.getUTC()),
1517 file.getDataObject1().getAdditionalParametersBlock().getOebParentFrameEpoch(), "OEB_PARENT_FRAME_EPOCH");
1518
1519
1520 Assertions.assertEquals(0.03123, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ1(), 0.0);
1521
1522
1523 Assertions.assertEquals(0.78543, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ2(), 0.0);
1524
1525
1526 Assertions.assertEquals(0.39158, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ3(), 0.0);
1527
1528
1529 Assertions.assertEquals(0.47832, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ0(), 0.0);
1530
1531
1532 Assertions.assertEquals(2.0, file.getDataObject1().getAdditionalParametersBlock().getOebMax(), 0.0);
1533
1534
1535 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalParametersBlock().getOebIntermediate(), 0.0);
1536
1537
1538 Assertions.assertEquals(0.5, file.getDataObject1().getAdditionalParametersBlock().getOebMin(), 0.0);
1539
1540
1541 Assertions.assertEquals(0.15, file.getDataObject1().getAdditionalParametersBlock().getOebAreaAlongMax(), 0.0);
1542
1543
1544 Assertions.assertEquals(0.3, file.getDataObject1().getAdditionalParametersBlock().getOebAreaAlongIntermediate(), 0.0);
1545
1546
1547 Assertions.assertEquals(0.5, file.getDataObject1().getAdditionalParametersBlock().getOebAreaAlongMin(), 0.0);
1548
1549
1550 Assertions.assertEquals(2.4, file.getDataObject1().getAdditionalParametersBlock().getRcs(), 0.0);
1551
1552
1553 Assertions.assertEquals(1.4, file.getDataObject1().getAdditionalParametersBlock().getMinRcs(), 0.0);
1554
1555
1556 Assertions.assertEquals(3.4, file.getDataObject1().getAdditionalParametersBlock().getMaxRcs(), 0.0);
1557
1558
1559 Assertions.assertEquals(15.0, file.getDataObject1().getAdditionalParametersBlock().getVmAbsolute(), 0.0);
1560
1561
1562 Assertions.assertEquals(19.0, file.getDataObject1().getAdditionalParametersBlock().getVmApparentMin(), 0.0);
1563
1564
1565 Assertions.assertEquals(15.4, file.getDataObject1().getAdditionalParametersBlock().getVmApparent(), 0.0);
1566
1567
1568 Assertions.assertEquals(14.0, file.getDataObject1().getAdditionalParametersBlock().getVmApparentMax(), 0.0);
1569
1570
1571 Assertions.assertEquals(0.7, file.getDataObject1().getAdditionalParametersBlock().getReflectance(), 0.0);
1572
1573
1574 Assertions.assertEquals(2.5, file.getDataObject1().getAdditionalParametersBlock().getHbr(), 0.0);
1575
1576
1577 Assertions.assertEquals(800000, file.getDataObject1().getAdditionalParametersBlock().getApoapsisAltitude(), 0.0);
1578
1579
1580 Assertions.assertEquals(750000, file.getDataObject1().getAdditionalParametersBlock().getPeriapsisAltitude(), 0.0);
1581
1582
1583 Assertions.assertEquals(FastMath.toRadians(89.0), file.getDataObject1().getAdditionalParametersBlock().getInclination(), 0.0);
1584
1585
1586 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalParametersBlock().getCovConfidence(), 0.0);
1587
1588
1589 Assertions.assertEquals("Wald test", file.getDataObject1().getAdditionalParametersBlock().getCovConfidenceMethod(), "COV_CONFIDENCE_METHOD");
1590
1591
1592
1593 Assertions.assertEquals(0.1, file.getDataObject1().getXYZCovarianceBlock().getCxx(), COVARIANCE_DIAG_PRECISION);
1594 Assertions.assertEquals(0.2, file.getDataObject1().getXYZCovarianceBlock().getCyx(), COVARIANCE_DIAG_PRECISION);
1595 Assertions.assertEquals(0.3, file.getDataObject1().getXYZCovarianceBlock().getCyy(), COVARIANCE_DIAG_PRECISION);
1596 Assertions.assertEquals(0.4, file.getDataObject1().getXYZCovarianceBlock().getCzx(), COVARIANCE_DIAG_PRECISION);
1597 Assertions.assertEquals(0.5, file.getDataObject1().getXYZCovarianceBlock().getCzy(), COVARIANCE_DIAG_PRECISION);
1598 Assertions.assertEquals(0.6, file.getDataObject1().getXYZCovarianceBlock().getCzz(), COVARIANCE_DIAG_PRECISION);
1599
1600 Assertions.assertEquals(0.7, file.getDataObject1().getXYZCovarianceBlock().getCxdotx(), COVARIANCE_PRECISION);
1601 Assertions.assertEquals(0.8, file.getDataObject1().getXYZCovarianceBlock().getCxdoty(), COVARIANCE_PRECISION);
1602 Assertions.assertEquals(0.9, file.getDataObject1().getXYZCovarianceBlock().getCxdotz(), COVARIANCE_PRECISION);
1603 Assertions.assertEquals(0.01, file.getDataObject1().getXYZCovarianceBlock().getCxdotxdot(), COVARIANCE_PRECISION);
1604
1605 Assertions.assertEquals(0.02, file.getDataObject1().getXYZCovarianceBlock().getCydotx(), COVARIANCE_PRECISION);
1606 Assertions.assertEquals(0.03, file.getDataObject1().getXYZCovarianceBlock().getCydoty(), COVARIANCE_PRECISION);
1607 Assertions.assertEquals(0.04, file.getDataObject1().getXYZCovarianceBlock().getCydotz(), COVARIANCE_PRECISION);
1608 Assertions.assertEquals(0.05, file.getDataObject1().getXYZCovarianceBlock().getCydotxdot(), COVARIANCE_PRECISION);
1609 Assertions.assertEquals(0.06, file.getDataObject1().getXYZCovarianceBlock().getCydotydot(), COVARIANCE_PRECISION);
1610
1611 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCzdotx(), COVARIANCE_PRECISION);
1612 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCzdoty(), COVARIANCE_PRECISION);
1613 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCzdotz(), COVARIANCE_PRECISION);
1614 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCzdotxdot(), COVARIANCE_PRECISION);
1615 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCzdotydot(), COVARIANCE_PRECISION);
1616 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCzdotzdot(), COVARIANCE_PRECISION);
1617
1618 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCdrgx(), COVARIANCE_PRECISION);
1619 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCdrgy(), COVARIANCE_PRECISION);
1620 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCdrgz(), COVARIANCE_PRECISION);
1621 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCdrgxdot(), COVARIANCE_PRECISION);
1622 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCdrgydot(), COVARIANCE_PRECISION);
1623 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCdrgzdot(), COVARIANCE_PRECISION);
1624 Assertions.assertEquals(0.004, file.getDataObject1().getXYZCovarianceBlock().getCdrgdrg(), COVARIANCE_PRECISION);
1625
1626 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCsrpx(), COVARIANCE_PRECISION);
1627 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCsrpy(), COVARIANCE_PRECISION);
1628 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCsrpz(), COVARIANCE_PRECISION);
1629 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCsrpxdot(), COVARIANCE_PRECISION);
1630 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCsrpydot(), COVARIANCE_PRECISION);
1631 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCsrpzdot(), COVARIANCE_PRECISION);
1632 Assertions.assertEquals(0.004, file.getDataObject1().getXYZCovarianceBlock().getCsrpdrg(), COVARIANCE_PRECISION);
1633 Assertions.assertEquals(0.005, file.getDataObject1().getXYZCovarianceBlock().getCsrpsrp(), COVARIANCE_PRECISION);
1634
1635 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCthrx(), COVARIANCE_PRECISION);
1636 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCthry(), COVARIANCE_PRECISION);
1637 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCthrz(), COVARIANCE_PRECISION);
1638 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCthrxdot(), COVARIANCE_PRECISION);
1639 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCthrydot(), COVARIANCE_PRECISION);
1640 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCthrzdot(), COVARIANCE_PRECISION);
1641 Assertions.assertEquals(0.004, file.getDataObject1().getXYZCovarianceBlock().getCthrdrg(), COVARIANCE_PRECISION);
1642 Assertions.assertEquals(0.005, file.getDataObject1().getXYZCovarianceBlock().getCthrsrp(), COVARIANCE_PRECISION);
1643 Assertions.assertEquals(0.006, file.getDataObject1().getXYZCovarianceBlock().getCthrthr(), COVARIANCE_PRECISION);
1644
1645
1646
1647 Assertions.assertEquals(AltCovarianceType.CSIG3EIGVEC3, file.getMetadataObject2().getAltCovType(), "ALT_COV_TYPE");
1648 Assertions.assertEquals("Object2 Covariance in the Sigma / eigenvector format",
1649 file.getDataObject2().getSig3EigVec3CovarianceBlock().getComments().get(0));
1650 Assertions.assertEquals(12, file.getDataObject2().getSig3EigVec3CovarianceBlock().getCsig3eigvec3().length);
1651 for (int i=0; i<12; i++) {
1652 Assertions.assertEquals(i+1, file.getDataObject2().getSig3EigVec3CovarianceBlock().getCsig3eigvec3()[i],
1653 COVARIANCE_DIAG_PRECISION);
1654 }
1655
1656
1657
1658
1659
1660 Assertions.assertEquals(2.5, file.getDataObject1().getAdditionalCovMetadataBlock().getDensityForecastUncertainty(), 0.0);
1661 Assertions.assertEquals(0.5, file.getDataObject1().getAdditionalCovMetadataBlock().getcScaleFactorMin(), 0.0);
1662 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalCovMetadataBlock().getcScaleFactor(), 0.0);
1663 Assertions.assertEquals(1.5, file.getDataObject1().getAdditionalCovMetadataBlock().getcScaleFactorMax(), 0.0);
1664 Assertions.assertEquals("Data source of additional covariance metadata",
1665 file.getDataObject1().getAdditionalCovMetadataBlock().getScreeningDataSource(), "SCREENING_DATA_SOURCE");
1666 Assertions.assertEquals(3, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition().length);
1667 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition()[0], 0.0);
1668 Assertions.assertEquals(2.0, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition()[1], 0.0);
1669 Assertions.assertEquals(3.0, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition()[2], 0.0);
1670 Assertions.assertEquals(3, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity().length);
1671 Assertions.assertEquals(0.1, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity()[0], 0.0);
1672 Assertions.assertEquals(0.2, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity()[1], 0.0);
1673 Assertions.assertEquals(0.3, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity()[2], 0.0);
1674
1675
1676
1677
1678 Assertions.assertEquals(1, file.getUserDefinedParameters().getComments().size());
1679 Assertions.assertEquals("User Parameters", file.getUserDefinedParameters().getComments().get(0));
1680 Assertions.assertEquals(1, file.getUserDefinedParameters().getParameters().size());
1681 Assertions.assertEquals("2020-01-29T13:30:00", file.getUserDefinedParameters().getParameters().get("OBJ1_TIME_LASTOB_START"));
1682
1683
1684
1685
1686
1687 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
1688 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
1689
1690
1691 Assertions.assertEquals(2.0, file.getHeader().getFormatVersion(), 1.0e-10);
1692 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
1693 TimeScalesFactory.getUTC()),
1694 file.getHeader().getCreationDate());
1695 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
1696 Assertions.assertEquals("201113719185-1", file.getHeader().getMessageId());
1697
1698
1699
1700 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
1701 TimeScalesFactory.getUTC()),
1702 file.getRelativeMetadata().getTca());
1703 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(),DISTANCE_PRECISION);
1704
1705
1706 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
1707 Assertions.assertEquals("12345", file.getMetadataObject1().getObjectDesignator());
1708 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
1709 Assertions.assertEquals("SATELLITE A", file.getMetadataObject1().getObjectName());
1710 Assertions.assertEquals("1997-030E", file.getMetadataObject1().getInternationalDes());
1711 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
1712 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
1713 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
1714 Assertions.assertEquals(CelestialBodyFrame.EME2000, file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
1715 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
1716
1717
1718
1719 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
1720 Assertions.assertEquals(2244.654904e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getY(), DISTANCE_PRECISION);
1721 Assertions.assertEquals(6281.497978e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(), DISTANCE_PRECISION);
1722 Assertions.assertEquals(4.418769571e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
1723 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(), DERIVATION_PRECISION);
1724 Assertions.assertEquals(-3.526774282e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(), DERIVATION_PRECISION);
1725
1726 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(), COVARIANCE_DIAG_PRECISION);
1727 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(), COVARIANCE_DIAG_PRECISION);
1728 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(), COVARIANCE_DIAG_PRECISION);
1729 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(), COVARIANCE_DIAG_PRECISION);
1730 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(), COVARIANCE_DIAG_PRECISION);
1731 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(), COVARIANCE_DIAG_PRECISION);
1732
1733 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(), COVARIANCE_PRECISION);
1734 Assertions.assertEquals(-5.476, file.getDataObject1().getRTNCovarianceBlock().getCrdott(), COVARIANCE_PRECISION);
1735 Assertions.assertEquals(8.626e-4, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(), COVARIANCE_PRECISION);
1736 Assertions.assertEquals(5.744e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(), COVARIANCE_PRECISION);
1737
1738 Assertions.assertEquals(-1.006e-2, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(), COVARIANCE_PRECISION);
1739 Assertions.assertEquals(4.041e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdott(), COVARIANCE_PRECISION);
1740 Assertions.assertEquals(-1.359e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(), COVARIANCE_PRECISION);
1741 Assertions.assertEquals(-1.502e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(), COVARIANCE_PRECISION);
1742 Assertions.assertEquals(1.049e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(), COVARIANCE_PRECISION);
1743
1744 Assertions.assertEquals(1.053e-3, file.getDataObject1().getRTNCovarianceBlock().getCndotr(), COVARIANCE_PRECISION);
1745 Assertions.assertEquals(-3.412e-3, file.getDataObject1().getRTNCovarianceBlock().getCndott(), COVARIANCE_PRECISION);
1746 Assertions.assertEquals(1.213e-2, file.getDataObject1().getRTNCovarianceBlock().getCndotn(), COVARIANCE_PRECISION);
1747 Assertions.assertEquals(-3.004e-6, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(), COVARIANCE_PRECISION);
1748 Assertions.assertEquals(-1.091e-6, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(), COVARIANCE_PRECISION);
1749 Assertions.assertEquals(5.529e-5, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(), COVARIANCE_PRECISION);
1750
1751 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().
1752 getRTNCovarianceMatrix().getEntry(3, 0), COVARIANCE_PRECISION);
1753 Assertions.assertEquals(Double.NaN, file.getDataObject1().getRTNCovarianceBlock().
1754 getRTNCovarianceMatrix().getEntry(7, 6), COVARIANCE_PRECISION);
1755
1756
1757
1758 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getTca(),
1759 file.getRelativeMetadata().getTca());
1760 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getMissDistance(),
1761 file.getRelativeMetadata().getMissDistance(),DISTANCE_PRECISION);
1762
1763
1764 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
1765 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
1766 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
1767 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
1768 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
1769 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
1770 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
1771 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1772 Assertions.assertEquals(CelestialBodyFrame.EME2000, file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
1773 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
1774
1775
1776 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
1777 Assertions.assertEquals(2245.093614e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getY(), DISTANCE_PRECISION);
1778 Assertions.assertEquals(6281.599946e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getZ(), DISTANCE_PRECISION);
1779 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
1780 Assertions.assertEquals(-6.007247516e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getY(), DERIVATION_PRECISION);
1781 Assertions.assertEquals(3.328770172e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getZ(), DERIVATION_PRECISION);
1782
1783 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(), COVARIANCE_DIAG_PRECISION);
1784 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(), COVARIANCE_DIAG_PRECISION);
1785 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(), COVARIANCE_DIAG_PRECISION);
1786 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(), COVARIANCE_DIAG_PRECISION);
1787 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(), COVARIANCE_DIAG_PRECISION);
1788 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(), COVARIANCE_DIAG_PRECISION);
1789
1790 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(), COVARIANCE_PRECISION);
1791 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getCrdott(), COVARIANCE_PRECISION);
1792 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getCrdotn(), COVARIANCE_PRECISION);
1793 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(), COVARIANCE_PRECISION);
1794
1795 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getCtdotr(), COVARIANCE_PRECISION);
1796 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(), COVARIANCE_PRECISION);
1797 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getCtdotn(), COVARIANCE_PRECISION);
1798 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getCtdotrdot(), COVARIANCE_PRECISION);
1799 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(), COVARIANCE_PRECISION);
1800
1801 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getCndotr(), COVARIANCE_PRECISION);
1802 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getCndott(), COVARIANCE_PRECISION);
1803 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(), COVARIANCE_PRECISION);
1804 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(), COVARIANCE_PRECISION);
1805 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getCndottdot(), COVARIANCE_PRECISION);
1806 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotndot(), COVARIANCE_PRECISION);
1807
1808 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(), COVARIANCE_DIAG_PRECISION);
1809 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(), COVARIANCE_DIAG_PRECISION);
1810 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(), COVARIANCE_DIAG_PRECISION);
1811 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(), COVARIANCE_DIAG_PRECISION);
1812 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(), COVARIANCE_DIAG_PRECISION);
1813 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(), COVARIANCE_DIAG_PRECISION);
1814
1815 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 0), COVARIANCE_PRECISION);
1816 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 1), COVARIANCE_PRECISION);
1817 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 2), COVARIANCE_PRECISION);
1818 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 3), COVARIANCE_PRECISION);
1819
1820 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 0), COVARIANCE_PRECISION);
1821 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 1), COVARIANCE_PRECISION);
1822 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 2), COVARIANCE_PRECISION);
1823 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 3), COVARIANCE_PRECISION);
1824 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 4), COVARIANCE_PRECISION);
1825
1826 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 0), COVARIANCE_PRECISION);
1827 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 1), COVARIANCE_PRECISION);
1828 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 2), COVARIANCE_PRECISION);
1829 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 3), COVARIANCE_PRECISION);
1830 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 4), COVARIANCE_PRECISION);
1831 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 5), COVARIANCE_PRECISION);
1832
1833
1834
1835
1836 Assertions.assertTrue(parser.inData());
1837
1838
1839 file.getDataObject1().getAdditionalCovMetadataBlock().validate(1.0);
1840 file.getDataObject1().getAdditionalCovMetadataBlock().setDcpSensitivityVectorPosition(null);
1841 file.getDataObject1().getAdditionalCovMetadataBlock().setDcpSensitivityVectorVelocity(null);
1842 Assertions.assertNull(file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition());
1843 Assertions.assertNull(file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity());
1844 }
1845
1846 @Test
1847 public void test_issue_942_KVN() {
1848
1849
1850 final String ex = "/ccsds/cdm/CDMExample_issue942.txt";
1851
1852
1853 final CdmParser parser = new ParserBuilder().buildCdmParser();
1854
1855 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1856
1857
1858 final Cdm file = parser.parseMessage(source);
1859
1860
1861 Assertions.assertEquals(Maneuvrable.N_A, file.getMetadataObject1().getManeuverable());
1862
1863 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1864 }
1865
1866 @Test
1867 public void test_issue_942_XML() {
1868
1869
1870 final String ex = "/ccsds/cdm/CDMExample_issue942.xml";
1871
1872
1873 final CdmParser parser = new ParserBuilder().buildCdmParser();
1874
1875 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1876
1877
1878 final Cdm file = parser.parseMessage(source);
1879
1880
1881 Assertions.assertEquals(Maneuvrable.N_A, file.getMetadataObject1().getManeuverable());
1882
1883 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1884 }
1885
1886 @Test
1887 public void test_issue_944() {
1888
1889
1890 final String ex = "/ccsds/cdm/CDMExample_issue_944.xml";
1891
1892
1893 final CdmParser parser = new ParserBuilder().buildCdmParser();
1894
1895 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1896
1897
1898 final Cdm file = parser.parseMessage(source);
1899
1900
1901 Assertions.assertEquals(3, file.getDataObject1().getAdditionalParametersBlock().getAreaDRG(), 0.0);
1902
1903
1904 Assertions.assertEquals(10, file.getDataObject1().getAdditionalParametersBlock().getAreaSRP(), 0.0);
1905 }
1906
1907 @Test
1908 public void test_issue_1319() {
1909
1910
1911 final String ex = "/ccsds/cdm/CDMExample_issue1319.xml";
1912
1913
1914 final CdmParser parser = new ParserBuilder().buildCdmParser();
1915
1916 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1917
1918
1919 final Cdm file = parser.parseMessage(source);
1920
1921 Assertions.assertNull(file.getRelativeMetadata().getStartScreenPeriod());
1922 }
1923
1924 @Test
1925 public void test_issue_1319_throw_exception_when_mandatory_empty_values() {
1926
1927
1928 final String ex = "/ccsds/cdm/CDMExample_issue1319_mandatory_empty_value.xml";
1929
1930
1931 final CdmParser parser = new ParserBuilder().buildCdmParser();
1932
1933 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1934
1935 OrekitException exception = Assertions.assertThrows(OrekitException.class, () -> parser.parseMessage(source));
1936 Assertions.assertEquals("value for key X has not been initialized", exception.getMessage());
1937 }
1938
1939 @Test
1940 public void test_issue_1458() {
1941
1942
1943 final String ex = "/ccsds/cdm/CDMExample_issue1458.xml";
1944
1945
1946 final CdmParser parser = new ParserBuilder().buildCdmParser();
1947
1948 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1949
1950
1951 Cdm file = parser.parseMessage(source);
1952
1953
1954 Assertions.assertNull(file.getDataObject1().getODParametersBlock());
1955 }
1956
1957
1958 @Test
1959 public void testInvalidTca() {
1960
1961 final String ex = "/ccsds/cdm/CDMExample1InvalidTca.txt";
1962
1963
1964 final CdmParser parser = new ParserBuilder().buildCdmParser();
1965
1966 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1967
1968
1969 try {
1970 parser.parseMessage(source);
1971 Assertions.fail("an exception should have been thrown");
1972 } catch (Exception e) {
1973 MatcherAssert.assertThat(
1974 e.getMessage(),
1975 Matchers.containsString("non-existent date 2010-04-31"));
1976 }
1977 }
1978
1979
1980 @Test
1981 public void testFrameMapper() {
1982
1983 Frame itrf = FramesFactory.getITRF(IERSConventions.IERS_2003, false);
1984 Frame myItrf = new Frame(itrf, Transform.IDENTITY, "MyItrf");
1985 CcsdsFrameMapper mapper = new CcsdsFrameMapper() {
1986 @Override
1987 public Frame buildCcsdsFrame(FrameFacade orientation, AbsoluteDate epoch) {
1988 if ("ITRF".equals(orientation.getName()) && null == epoch) {
1989 return myItrf;
1990 }
1991 throw new IllegalArgumentException(" " + orientation + " " + epoch);
1992 }
1993
1994 @Override
1995 public Frame buildCcsdsFrame(BodyFacade center,
1996 FrameFacade orientation,
1997 AbsoluteDate frameEpoch) {
1998 if ("EARTH".equals(center.getName()) &&
1999 "ITRF".equals(orientation.getName()) &&
2000 null == frameEpoch) {
2001 return myItrf;
2002 }
2003 throw new IllegalArgumentException(
2004 center + " " + orientation + " " + frameEpoch);
2005 }
2006 };
2007 final CdmParser parser = new ParserBuilder().withFrameMapper(mapper).buildCdmParser();
2008 String name = "/ccsds/cdm/CDM-frame-mapper.txt";
2009 DataSource source =
2010 new DataSource(name, () -> getClass().getResourceAsStream(name));
2011
2012
2013 Cdm cdm = parser.parseMessage(source);
2014
2015
2016
2017 MatcherAssert.assertThat(cdm.getMetadataObject1().getFrame(), Matchers.sameInstance(myItrf));
2018 MatcherAssert.assertThat(cdm.getMetadataObject2().getFrame(), Matchers.sameInstance(myItrf));
2019
2020 MatcherAssert.assertThat(cdm.getMetadataObject1().getAltCovFrame(),
2021 Matchers.sameInstance(myItrf));
2022 MatcherAssert.assertThat(
2023 cdm.getDataObject1().getAdditionalParametersBlock().getOebParent(),
2024 Matchers.sameInstance(myItrf));
2025 }
2026
2027
2028 @Test
2029 @Deprecated
2030 public void testDeprecatedConstructor() {
2031
2032 CdmParser actual = new CdmParser(
2033 null, true, null, null, new Function[0]);
2034
2035
2036 MatcherAssert.assertThat(actual.getFrameMapper(),
2037 Matchers.is(new OrekitCcsdsFrameMapper()));
2038 }
2039
2040 }