1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.frames;
18
19
20 import org.hipparchus.util.Decimal64;
21 import org.hipparchus.util.Decimal64Field;
22 import org.junit.Assert;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.orekit.Utils;
26 import org.orekit.errors.OrekitException;
27 import org.orekit.errors.OrekitMessages;
28 import org.orekit.time.AbsoluteDate;
29 import org.orekit.time.FieldAbsoluteDate;
30 import org.orekit.time.TimeScalesFactory;
31 import org.orekit.utils.IERSConventions;
32
33 public class ITRFVersionTest {
34
35 @Test
36 public void testYears() {
37 Assert.assertEquals(2014, ITRFVersion.ITRF_2014.getYear());
38 Assert.assertEquals(2008, ITRFVersion.ITRF_2008.getYear());
39 Assert.assertEquals(2005, ITRFVersion.ITRF_2005.getYear());
40 Assert.assertEquals(2000, ITRFVersion.ITRF_2000.getYear());
41 Assert.assertEquals(1997, ITRFVersion.ITRF_1997.getYear());
42 Assert.assertEquals(1996, ITRFVersion.ITRF_1996.getYear());
43 Assert.assertEquals(1994, ITRFVersion.ITRF_1994.getYear());
44 Assert.assertEquals(1993, ITRFVersion.ITRF_1993.getYear());
45 Assert.assertEquals(1992, ITRFVersion.ITRF_1992.getYear());
46 Assert.assertEquals(1991, ITRFVersion.ITRF_1991.getYear());
47 Assert.assertEquals(1990, ITRFVersion.ITRF_1990.getYear());
48 Assert.assertEquals(1989, ITRFVersion.ITRF_1989.getYear());
49 Assert.assertEquals(1988, ITRFVersion.ITRF_1988.getYear());
50 }
51
52 @Test
53 public void testNames() {
54 Assert.assertEquals("ITRF-2014", ITRFVersion.ITRF_2014.getName());
55 Assert.assertEquals("ITRF-2008", ITRFVersion.ITRF_2008.getName());
56 Assert.assertEquals("ITRF-2005", ITRFVersion.ITRF_2005.getName());
57 Assert.assertEquals("ITRF-2000", ITRFVersion.ITRF_2000.getName());
58 Assert.assertEquals("ITRF-1997", ITRFVersion.ITRF_1997.getName());
59 Assert.assertEquals("ITRF-1996", ITRFVersion.ITRF_1996.getName());
60 Assert.assertEquals("ITRF-1994", ITRFVersion.ITRF_1994.getName());
61 Assert.assertEquals("ITRF-1993", ITRFVersion.ITRF_1993.getName());
62 Assert.assertEquals("ITRF-1992", ITRFVersion.ITRF_1992.getName());
63 Assert.assertEquals("ITRF-1991", ITRFVersion.ITRF_1991.getName());
64 Assert.assertEquals("ITRF-1990", ITRFVersion.ITRF_1990.getName());
65 Assert.assertEquals("ITRF-1989", ITRFVersion.ITRF_1989.getName());
66 Assert.assertEquals("ITRF-1988", ITRFVersion.ITRF_1988.getName());
67 }
68
69 @Test
70 public void testBuildFromYear() {
71 Assert.assertEquals(ITRFVersion.ITRF_2014, ITRFVersion.getITRFVersion(2014));
72 Assert.assertEquals(ITRFVersion.ITRF_2008, ITRFVersion.getITRFVersion(2008));
73 Assert.assertEquals(ITRFVersion.ITRF_2005, ITRFVersion.getITRFVersion(2005));
74 Assert.assertEquals(ITRFVersion.ITRF_2000, ITRFVersion.getITRFVersion(2000));
75 Assert.assertEquals(ITRFVersion.ITRF_1997, ITRFVersion.getITRFVersion(1997));
76 Assert.assertEquals(ITRFVersion.ITRF_1996, ITRFVersion.getITRFVersion(1996));
77 Assert.assertEquals(ITRFVersion.ITRF_1994, ITRFVersion.getITRFVersion(1994));
78 Assert.assertEquals(ITRFVersion.ITRF_1993, ITRFVersion.getITRFVersion(1993));
79 Assert.assertEquals(ITRFVersion.ITRF_1992, ITRFVersion.getITRFVersion(1992));
80 Assert.assertEquals(ITRFVersion.ITRF_1991, ITRFVersion.getITRFVersion(1991));
81 Assert.assertEquals(ITRFVersion.ITRF_1990, ITRFVersion.getITRFVersion(1990));
82 Assert.assertEquals(ITRFVersion.ITRF_1989, ITRFVersion.getITRFVersion(1989));
83 Assert.assertEquals(ITRFVersion.ITRF_1988, ITRFVersion.getITRFVersion(1988));
84 Assert.assertEquals(ITRFVersion.ITRF_1997, ITRFVersion.getITRFVersion( 97));
85 Assert.assertEquals(ITRFVersion.ITRF_1996, ITRFVersion.getITRFVersion( 96));
86 Assert.assertEquals(ITRFVersion.ITRF_1994, ITRFVersion.getITRFVersion( 94));
87 Assert.assertEquals(ITRFVersion.ITRF_1993, ITRFVersion.getITRFVersion( 93));
88 Assert.assertEquals(ITRFVersion.ITRF_1992, ITRFVersion.getITRFVersion( 92));
89 Assert.assertEquals(ITRFVersion.ITRF_1991, ITRFVersion.getITRFVersion( 91));
90 Assert.assertEquals(ITRFVersion.ITRF_1990, ITRFVersion.getITRFVersion( 90));
91 Assert.assertEquals(ITRFVersion.ITRF_1989, ITRFVersion.getITRFVersion( 89));
92 Assert.assertEquals(ITRFVersion.ITRF_1988, ITRFVersion.getITRFVersion( 88));
93 }
94
95 @Test
96 public void testInexistantYear() {
97 try {
98 ITRFVersion.getITRFVersion(1999);
99 Assert.fail("an exception should have been thrown");
100 } catch (OrekitException oe) {
101 Assert.assertEquals(OrekitMessages.NO_SUCH_ITRF_FRAME, oe.getSpecifier());
102 Assert.assertEquals(1999, ((Integer) oe.getParts()[0]).intValue());
103 }
104 }
105
106 @Test
107 public void testBuildFromName() {
108 Assert.assertEquals(ITRFVersion.ITRF_2014, ITRFVersion.getITRFVersion("ITRF-2014"));
109 Assert.assertEquals(ITRFVersion.ITRF_2008, ITRFVersion.getITRFVersion("ItRf-2008"));
110 Assert.assertEquals(ITRFVersion.ITRF_2005, ITRFVersion.getITRFVersion("iTrF-2005"));
111 Assert.assertEquals(ITRFVersion.ITRF_2000, ITRFVersion.getITRFVersion("itrf_2000"));
112 Assert.assertEquals(ITRFVersion.ITRF_1997, ITRFVersion.getITRFVersion("itrf 1997"));
113 Assert.assertEquals(ITRFVersion.ITRF_1996, ITRFVersion.getITRFVersion("itrf1996"));
114 Assert.assertEquals(ITRFVersion.ITRF_1994, ITRFVersion.getITRFVersion("itrf-1994"));
115 Assert.assertEquals(ITRFVersion.ITRF_1993, ITRFVersion.getITRFVersion("itrf-1993"));
116 Assert.assertEquals(ITRFVersion.ITRF_1992, ITRFVersion.getITRFVersion("itrf-1992"));
117 Assert.assertEquals(ITRFVersion.ITRF_1991, ITRFVersion.getITRFVersion("itrf-1991"));
118 Assert.assertEquals(ITRFVersion.ITRF_1990, ITRFVersion.getITRFVersion("itrf-1990"));
119 Assert.assertEquals(ITRFVersion.ITRF_1989, ITRFVersion.getITRFVersion("itrf-1989"));
120 Assert.assertEquals(ITRFVersion.ITRF_1988, ITRFVersion.getITRFVersion("itrf-1988"));
121 Assert.assertEquals(ITRFVersion.ITRF_1997, ITRFVersion.getITRFVersion("ITRF97"));
122 Assert.assertEquals(ITRFVersion.ITRF_1996, ITRFVersion.getITRFVersion("itrf-96"));
123 Assert.assertEquals(ITRFVersion.ITRF_1994, ITRFVersion.getITRFVersion("itrf-94"));
124 Assert.assertEquals(ITRFVersion.ITRF_1993, ITRFVersion.getITRFVersion("itrf-93"));
125 Assert.assertEquals(ITRFVersion.ITRF_1992, ITRFVersion.getITRFVersion("itrf-92"));
126 Assert.assertEquals(ITRFVersion.ITRF_1991, ITRFVersion.getITRFVersion("itrf-91"));
127 Assert.assertEquals(ITRFVersion.ITRF_1990, ITRFVersion.getITRFVersion("itrf-90"));
128 Assert.assertEquals(ITRFVersion.ITRF_1989, ITRFVersion.getITRFVersion("itrf-89"));
129 Assert.assertEquals(ITRFVersion.ITRF_1988, ITRFVersion.getITRFVersion("itrf-88"));
130 }
131
132 @Test
133 public void testInexistantName() {
134 try {
135 ITRFVersion.getITRFVersion("itrf-99");
136 Assert.fail("an exception should have been thrown");
137 } catch (OrekitException oe) {
138 Assert.assertEquals(OrekitMessages.NO_SUCH_ITRF_FRAME, oe.getSpecifier());
139 Assert.assertEquals("itrf-99", oe.getParts()[0]);
140 }
141 }
142
143 @Test
144 public void testMalformedName() {
145 try {
146 ITRFVersion.getITRFVersion("YTRF-2014");
147 Assert.fail("an exception should have been thrown");
148 } catch (OrekitException oe) {
149 Assert.assertEquals(OrekitMessages.NO_SUCH_ITRF_FRAME, oe.getSpecifier());
150 Assert.assertEquals("YTRF-2014", oe.getParts()[0]);
151 }
152 }
153
154 @Test
155 public void testAllConverters() {
156
157
158 Frame itrf2014 = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
159
160 for (final ITRFVersion origin : ITRFVersion.values()) {
161 for (final ITRFVersion destination : ITRFVersion.values()) {
162 ITRFVersion.Converter converter = ITRFVersion.getConverter(origin, destination);
163 Assert.assertEquals(origin, converter.getOrigin());
164 Assert.assertEquals(destination, converter.getDestination());
165 Frame originFrame = origin == ITRFVersion.ITRF_2014 ?
166 itrf2014 :
167 from2014(origin.getYear()).createTransformedITRF(itrf2014, origin.toString());
168 Frame destinationFrame = destination == ITRFVersion.ITRF_2014 ?
169 itrf2014 :
170 from2014(destination.getYear()).createTransformedITRF(itrf2014, destination.toString());
171 for (int year = 2000; year < 2007; ++year) {
172
173 AbsoluteDate date = new AbsoluteDate(year, 4, 17, 12, 0, 0, TimeScalesFactory.getTT());
174 Transform looped =
175 new Transform(date,
176 converter.getTransform(date),
177 destinationFrame.getTransformTo(originFrame, date));
178 if (origin == ITRFVersion.ITRF_2008 || destination == ITRFVersion.ITRF_2008) {
179
180
181
182
183
184
185
186
187
188 Assert.assertEquals(0, looped.getTranslation().getNorm(), 6.0e-06);
189 Assert.assertEquals(0, looped.getVelocity().getNorm(), 2.0e-22);
190 Assert.assertEquals(0, looped.getRotation().getAngle(), 2.0e-12);
191 Assert.assertEquals(0, looped.getRotationRate().getNorm(), 2.0e-32);
192 } else {
193
194
195 Assert.assertEquals(0, looped.getTranslation().getNorm(), 6.0e-17);
196 Assert.assertEquals(0, looped.getVelocity().getNorm(), 4.0e-26);
197 Assert.assertEquals(0, looped.getRotation().getAngle(), 1.0e-40);
198 Assert.assertEquals(0, looped.getRotationRate().getNorm(), 2.0e-32);
199 }
200
201 FieldAbsoluteDate<Decimal64> date64 = new FieldAbsoluteDate<>(Decimal64Field.getInstance(), date);
202 FieldTransform<Decimal64> looped64 =
203 new FieldTransform<>(date64,
204 converter.getTransform(date64),
205 destinationFrame.getTransformTo(originFrame, date64));
206 if (origin == ITRFVersion.ITRF_2008 || destination == ITRFVersion.ITRF_2008) {
207
208
209
210
211
212
213
214
215
216 Assert.assertEquals(0, looped64.getTranslation().getNorm().getReal(), 6.0e-06);
217 Assert.assertEquals(0, looped64.getVelocity().getNorm().getReal(), 2.0e-22);
218 Assert.assertEquals(0, looped64.getRotation().getAngle().getReal(), 2.0e-12);
219 Assert.assertEquals(0, looped64.getRotationRate().getNorm().getReal(), 2.0e-32);
220 } else {
221
222
223 Assert.assertEquals(0, looped64.getTranslation().getNorm().getReal(), 6.0e-17);
224 Assert.assertEquals(0, looped64.getVelocity().getNorm().getReal(), 4.0e-26);
225 Assert.assertEquals(0, looped64.getRotation().getAngle().getReal(), 1.0e-40);
226 Assert.assertEquals(0, looped64.getRotationRate().getNorm().getReal(), 2.0e-32);
227 }
228 }
229 }
230 }
231 }
232
233 private HelmertTransformation.Predefined from2014(final int year) {
234 switch (year) {
235 case 1988 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1988;
236 case 1989 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1989;
237 case 1990 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1990;
238 case 1991 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1991;
239 case 1992 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1992;
240 case 1993 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1993;
241 case 1994 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1994;
242 case 1996 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1996;
243 case 1997 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_1997;
244 case 2000 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_2000;
245 case 2005 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_2005;
246 case 2008 : return HelmertTransformation.Predefined.ITRF_2014_TO_ITRF_2008;
247 default : return null;
248 }
249 }
250
251 @Before
252 public void setUp() {
253 Utils.setDataRoot("compressed-data");
254 }
255
256 }