forked from upstream-mirrors/OpenTracks
Cleanup: EGM2008CorrectionManager returns Altitude.
This commit is contained in:
@@ -79,7 +79,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -94,7 +94,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -109,7 +109,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -124,7 +124,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -139,7 +139,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -154,7 +154,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -174,7 +174,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint1.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint1.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -190,7 +190,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// 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
|
@Test
|
||||||
@@ -205,7 +205,7 @@ public class EGM2008UtilsTest {
|
|||||||
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
EGM2008Utils.EGM2008Correction altitude_egm2008 = EGM2008Utils.createCorrection(context, trackPoint.getLocation());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertEquals(-85.824, altitude_egm2008.correctAltitude(trackPoint.getLocation()), MAX_BILINEAR_ERROR);
|
assertEquals(-85.824, altitude_egm2008.correctAltitude(trackPoint.getLocation()).toM(), MAX_BILINEAR_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ public abstract class Altitude {
|
|||||||
return altitude_m;
|
return altitude_m;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Altitude replace(double altitude_m);
|
|
||||||
|
|
||||||
public abstract int getLabelId();
|
public abstract int getLabelId();
|
||||||
|
|
||||||
public static class WGS84 extends Altitude {
|
public static class WGS84 extends Altitude {
|
||||||
@@ -31,12 +29,7 @@ public abstract class Altitude {
|
|||||||
return R.string.wgs84;
|
return R.string.wgs84;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Altitude of(double altitude_m) {
|
public static WGS84 of(double altitude_m) {
|
||||||
return new WGS84(altitude_m);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Altitude replace(double altitude_m) {
|
|
||||||
return new WGS84(altitude_m);
|
return new WGS84(altitude_m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -52,12 +45,7 @@ public abstract class Altitude {
|
|||||||
return R.string.egm2008;
|
return R.string.egm2008;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Altitude of(double altitude_m) {
|
public static EGM2008 of(double altitude_m) {
|
||||||
return new EGM2008(altitude_m);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Altitude replace(double altitude_m) {
|
|
||||||
return new EGM2008(altitude_m);
|
return new EGM2008(altitude_m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -5,7 +5,6 @@ import android.util.Log;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.data.models.Altitude;
|
|
||||||
import de.dennisguse.opentracks.data.models.TrackPoint;
|
import de.dennisguse.opentracks.data.models.TrackPoint;
|
||||||
import de.dennisguse.opentracks.util.EGM2008Utils;
|
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 java.util.Objects;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
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).
|
* 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();
|
return indices.getAbsoluteIndex() == getIndices(location).getAbsoluteIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
public double correctAltitude(@NonNull Location location) {
|
public Altitude.EGM2008 correctAltitude(@NonNull Location location) {
|
||||||
if (!canCorrect(location))
|
if (!canCorrect(location))
|
||||||
throw new RuntimeException("Undulation data not loaded for this location.");
|
throw new RuntimeException("Undulation data not loaded for this location.");
|
||||||
if (!location.hasAltitude())
|
if (!location.hasAltitude())
|
||||||
@@ -134,7 +135,7 @@ public class EGM2008Utils {
|
|||||||
|
|
||||||
double h = 0.003 * undulationRaw - 108;
|
double h = 0.003 * undulationRaw - 108;
|
||||||
|
|
||||||
return location.getAltitude() - h;
|
return Altitude.EGM2008.of(location.getAltitude() - h);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSouthPole() {
|
private boolean isSouthPole() {
|
||||||
|
|||||||
Reference in New Issue
Block a user