diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 81355818bac12745d6c19312f9733a9882e785f8..dbe40a4c3e428af4bcfe6991ffc5b9a88f08e7a5 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -21,6 +21,9 @@ + + Added support for Rinex C0, L0, S0 and D0 observation types. + Allow Pattern functionalities instead of String.replaceAll() and String.split(). diff --git a/src/main/java/org/orekit/gnss/ObservationType.java b/src/main/java/org/orekit/gnss/ObservationType.java index cbdc95ff112c07b8736f8879f42de3b1000f8f62..0d924b53c729cdf0e7fa942287e71567f3b3038d 100644 --- a/src/main/java/org/orekit/gnss/ObservationType.java +++ b/src/main/java/org/orekit/gnss/ObservationType.java @@ -296,6 +296,9 @@ public enum ObservationType { /** Pseudorange IRNSS S B+C for Rinex3. */ C9X(MeasurementType.PSEUDO_RANGE, SignalCode.X, Frequency.I09), + /** Pseudorange for Rinex3. */ + C0(MeasurementType.PSEUDO_RANGE, SignalCode.CODELESS), + /** Pseudorange GPS L1 C/A / GLONASS G1 C/A for Rinex2. */ CA(MeasurementType.PSEUDO_RANGE, SignalCode.C, Frequency.G01, Frequency.R01), @@ -488,6 +491,9 @@ public enum ObservationType { /** Doppler IRNSS S B+C for Rinex3. */ D9X(MeasurementType.DOPPLER, SignalCode.X, Frequency.I09), + /** Doppler for Rinex3. */ + D0(MeasurementType.DOPPLER, SignalCode.CODELESS), + /** Doppler GPS L1 C/A / GLONASS G1 C/A for Rinex2. */ DA(MeasurementType.DOPPLER, SignalCode.C, Frequency.G01, Frequency.R01), @@ -680,6 +686,9 @@ public enum ObservationType { /** Carrier-phase IRNSS S B+C for Rinex3. */ L9X(MeasurementType.CARRIER_PHASE, SignalCode.X, Frequency.I09), + /** Carrier-phase for Rinex3. */ + L0(MeasurementType.CARRIER_PHASE, SignalCode.CODELESS), + /** Signal-strength Galileo E1 A for Rinex3. */ S1A(MeasurementType.SIGNAL_STRENGTH, SignalCode.A, Frequency.E01), @@ -860,6 +869,9 @@ public enum ObservationType { /** Signal-strength IRNSS S B+C for Rinex3. */ S9X(MeasurementType.SIGNAL_STRENGTH, SignalCode.X, Frequency.I09), + /** Signal-strength for Rinex3. */ + S0(MeasurementType.SIGNAL_STRENGTH, SignalCode.CODELESS), + /** Signal-strength GPS L1 C/A / GLONASS G1 C/A for Rinex2. */ SA(MeasurementType.SIGNAL_STRENGTH, SignalCode.C, Frequency.G01, Frequency.R01), diff --git a/src/test/java/org/orekit/gnss/RinexLoaderTest.java b/src/test/java/org/orekit/gnss/RinexLoaderTest.java index 9eb5170fa115319ce3a780460c193198afc0e693..f464ddb91e8885beacd51fa61e8cd6a3086b737e 100644 --- a/src/test/java/org/orekit/gnss/RinexLoaderTest.java +++ b/src/test/java/org/orekit/gnss/RinexLoaderTest.java @@ -712,7 +712,24 @@ public class RinexLoaderTest { Assert.assertEquals(0.0, ods.get(4).getDate().durationFrom(t0), 1.0e-15); Assert.assertEquals(ObservationType.L1C, ods.get(4).getObservationData().get(1).getObservationType()); Assert.assertEquals(335849.135, ods.get(4).getObservationData().get(1).getValue(), 1.0e-15); - + } + + @Test + public void testIssue605() { + // Test observation type C0, L0, S0 and D0 + RinexLoader loader = load("rinex/embe083.06o"); + AbsoluteDate t0 = new AbsoluteDate(2016, 3, 24, 13, 10, 36.0, TimeScalesFactory.getGPS()); + List ods = loader.getObservationDataSets(); + Assert.assertEquals(5, ods.size()); + + // Test Glonass + Assert.assertEquals(SatelliteSystem.GLONASS, ods.get(3).getSatelliteSystem()); + Assert.assertEquals(12, ods.get(3).getPrnNumber()); + Assert.assertEquals(0.0, ods.get(3).getDate().durationFrom(t0), 1.0e-15); + Assert.assertEquals(20427680.259, ods.get(3).getObservationData().get(0).getValue(), 1.0e-15); + Assert.assertEquals(-885349.430, ods.get(3).getObservationData().get(1).getValue(), 1.0e-15); + Assert.assertEquals(22397545.647, ods.get(3).getObservationData().get(3).getValue(), 1.0e-15); + Assert.assertEquals(37.594, ods.get(3).getObservationData().get(4).getValue(), 1.0e-15); } private void checkObservation(final ObservationDataSet obser, diff --git a/src/test/resources/rinex/embe083.06o b/src/test/resources/rinex/embe083.06o new file mode 100644 index 0000000000000000000000000000000000000000..618f64dee593e7d09cbe6f44d9a7e5182064212a --- /dev/null +++ b/src/test/resources/rinex/embe083.06o @@ -0,0 +1,36 @@ + 3.00 OBSERVATION DATA M RINEX VERSION / TYPE +G = GPS R = GLONASS E = GALILEO S = GEO M = MIXED COMMENT +XXRINEXO V9.9 AIUB 20060324 144333 UTC PGM / RUN BY / DATE +A 9080 MARKER NAME +9080.1.34 MARKER NUMBER +BILL SMITH ABC INSTITUTE OBSERVER / AGENCY +X1234A123 GEODETIC 1.3.1 REC # / TYPE / VERS +G1234 ROVER ANT # / TYPE + 2104228. -5642017. 2095406. APPROX POSITION XYZ + .9030 .0000 .0000 ANTENNA: DELTA H/E/N + 0 RCV CLOCK OFFS APPL +G 5 C1C L1W L2W C1W S2W SYS / # / OBS TYPES +R 5 C0 L0 C1C L1C S0 SYS / # / OBS TYPES +E 2 L1B L5I SYS / # / OBS TYPES +S 2 C1C L1C SYS / # / OBS TYPES + 18.000 INTERVAL +DBHZ SIGNAL STRENGTH UNIT + 2006 03 24 13 10 36.0000000 GPS TIME OF FIRST OBS + 18 R01 1 R02 2 R03 3 R04 4 R05 5 R06 -6 R07 -5 R08 -4 GLONASS SLOT / FRQ # + R09 -3 R10 -2 R11 -1 R12 0 R13 1 R14 2 R15 0 R16 4 GLONASS SLOT / FRQ # + R17 5 R18 -5 GLONASS SLOT / FRQ # +G L1C SYS / PHASE SHIFT +G L1W SYS / PHASE SHIFT +G L2W 0.00000 SYS / PHASE SHIFT +R L1C 0.00000 SYS / PHASE SHIFT +E L1B 0.00000 SYS / PHASE SHIFT +E L5I 0.00000 SYS / PHASE SHIFT +S L1C 0.00000 SYS / PHASE SHIFT + C1C 0.000 C2C 0.000 C2P 0.000 GLONASS COD/PHS/BIS + END OF HEADER +> 2016 03 24 13 10 36.0000000 0 5 0.000000000000 +G06 23629347.915 651379.300 8 23629347.158 24.158 +G09 20891534.648 -453349.120 9 20891545.292 38.123 +G12 20607600.189 -756349.430 9 20891545.848 35.234 +R12 20427680.259 -885349.430 9 22397545.647 37.594 +E11 20742800.324 8 378849.178 7 \ No newline at end of file