From 442e23b106a3b3df035a173a6445c2dd554ffb2f Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 27 May 2023 08:05:56 +0200 Subject: [PATCH] Cleanup: EGM2008CorrectionManager returns Altitude. --- .../opentracks/util/EGM2008UtilsTest.java | 18 +++++++++--------- .../opentracks/data/models/Altitude.java | 18 +++--------------- .../handlers/EGM2008CorrectionManager.java | 3 +-- .../opentracks/util/EGM2008Utils.java | 5 +++-- 4 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/EGM2008UtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/util/EGM2008UtilsTest.java index 51bdb9a21..ee682c342 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/util/EGM2008UtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/util/EGM2008UtilsTest.java @@ -79,7 +79,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(-14.8980, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(-14.8980, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -94,7 +94,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(30.15, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(30.15, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -109,7 +109,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(30.15, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(30.15, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -124,7 +124,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(30.15, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(30.15, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -139,7 +139,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(-17.2260, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(-17.2260, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -154,7 +154,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(-39.4865, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(-39.4865, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -174,7 +174,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint1.getLocation()); // then - assertNotEquals(altitude_egm2008.correctAltitude(trackPoint1.getLocation()), altitude_egm2008.correctAltitude(trackPoint2.getLocation()), 0.0001); + assertNotEquals(altitude_egm2008.correctAltitude(trackPoint1.getLocation()).toM(), altitude_egm2008.correctAltitude(trackPoint2.getLocation()).toM(), 0.0001); } @Test @@ -190,7 +190,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(22.99, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(22.99, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } @Test @@ -205,7 +205,7 @@ public class EGM2008UtilsTest { EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation()); // then - assertEquals(-85.824, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR); + assertEquals(-85.824, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR); } diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Altitude.java b/src/main/java/de/dennisguse/opentracks/data/models/Altitude.java index fe806efc4..1ef8de2db 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Altitude.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Altitude.java @@ -15,9 +15,7 @@ public abstract class Altitude { public double toM() { return altitude_m; } - - public abstract Altitude replace(double altitude_m); - + public abstract int getLabelId(); public static class WGS84 extends Altitude { @@ -31,12 +29,7 @@ public abstract class Altitude { return R.string.wgs84; } - public static Altitude of(double altitude_m) { - return new WGS84(altitude_m); - } - - @Override - public Altitude replace(double altitude_m) { + public static WGS84 of(double altitude_m) { return new WGS84(altitude_m); } } @@ -52,12 +45,7 @@ public abstract class Altitude { return R.string.egm2008; } - public static Altitude of(double altitude_m) { - return new EGM2008(altitude_m); - } - - @Override - public Altitude replace(double altitude_m) { + public static EGM2008 of(double altitude_m) { return new EGM2008(altitude_m); } } diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/EGM2008CorrectionManager.java b/src/main/java/de/dennisguse/opentracks/services/handlers/EGM2008CorrectionManager.java index b5b29b9d5..8c28769ad 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/EGM2008CorrectionManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/EGM2008CorrectionManager.java @@ -5,7 +5,6 @@ import android.util.Log; import java.io.IOException; -import de.dennisguse.opentracks.data.models.Altitude; import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.util.EGM2008Utils; @@ -30,6 +29,6 @@ public class EGM2008CorrectionManager { } } - trackPoint.setAltitude(Altitude.EGM2008.of(egm2008Correction.correctAltitude(trackPoint.getLocation()))); + trackPoint.setAltitude(egm2008Correction.correctAltitude(trackPoint.getLocation())); } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/util/EGM2008Utils.java b/src/main/java/de/dennisguse/opentracks/util/EGM2008Utils.java index 79f370288..e5c24e76d 100644 --- a/src/main/java/de/dennisguse/opentracks/util/EGM2008Utils.java +++ b/src/main/java/de/dennisguse/opentracks/util/EGM2008Utils.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.util.Objects; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.data.models.Altitude; /** * Converts WGS84 altitude to EGM2008 (should be close to height above sea level). @@ -103,7 +104,7 @@ public class EGM2008Utils { return indices.getAbsoluteIndex() == getIndices(location).getAbsoluteIndex(); } - public double correctAltitude(@NonNull Location location) { + public Altitude.EGM2008 correctAltitude(@NonNull Location location) { if (!canCorrect(location)) throw new RuntimeException("Undulation data not loaded for this location."); if (!location.hasAltitude()) @@ -134,7 +135,7 @@ public class EGM2008Utils { double h = 0.003 * undulationRaw - 108; - return location.getAltitude() - h; + return Altitude.EGM2008.of(location.getAltitude() - h); } private boolean isSouthPole() {