Cleanup: EGM2008CorrectionManager returns Altitude.

This commit is contained in:
Dennis Guse
2023-05-27 08:05:56 +02:00
parent 65249f11b2
commit 442e23b106
4 changed files with 16 additions and 28 deletions
@@ -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);
}
}
@@ -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()));
}
}
@@ -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() {