From 2d0ba555f9ff6f498cf2250f6616a603f6e554a1 Mon Sep 17 00:00:00 2001 From: Luc Maisonobe <luc@orekit.org> Date: Tue, 10 Feb 2015 20:47:26 +0100 Subject: [PATCH] Improved dump of min/max cell. --- .../java/org/orekit/rugged/errors/Dump.java | 20 ++++++++++++++ .../org/orekit/rugged/errors/DumpManager.java | 14 +++++++++- .../org/orekit/rugged/raster/SimpleTile.java | 26 +++++++++++++++++-- .../java/org/orekit/rugged/raster/Tile.java | 18 ++++++++++++- 4 files changed, 74 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/orekit/rugged/errors/Dump.java b/src/main/java/org/orekit/rugged/errors/Dump.java index 7895e67c..a24e5ed4 100644 --- a/src/main/java/org/orekit/rugged/errors/Dump.java +++ b/src/main/java/org/orekit/rugged/errors/Dump.java @@ -27,6 +27,7 @@ import org.apache.commons.math3.geometry.euclidean.threed.Rotation; import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; import org.apache.commons.math3.util.FastMath; import org.apache.commons.math3.util.OpenIntToDoubleHashMap; +import org.orekit.bodies.GeodeticPoint; import org.orekit.errors.OrekitException; import org.orekit.frames.FactoryManagedFrame; import org.orekit.frames.Frame; @@ -151,6 +152,19 @@ class Dump { lightTimeCorrection, aberrationOfLightCorrection); } + /** Dump a direct location result. + * @param gp resulting geodetic point + * @exception RuggedException if date cannot be converted to UTC + */ + public void dumpDirectLocationResult(final GeodeticPoint gp) + throws RuggedException { + if (gp != null) { + writer.format(Locale.US, + "direct location result: latitude %22.15e longitude %22.15e elevation %22.15e%n", + gp.getLatitude(), gp.getLongitude(), gp.getAltitude()); + } + } + /** Dump an observation transform transform. * @param scToBody provider for observation * @param index index of the transform @@ -214,6 +228,12 @@ class Dump { // it is the first time we encounter this tile, we need to dump its data final DumpedTileData dumpedTileData = new DumpedTileData("t" + tiles.size(), tile); tiles.add(dumpedTileData); + dumpedTileData.setElevation(tile.getMinElevationLatitudeIndex(), + tile.getMinElevationLongitudeIndex(), + tile.getMinElevation()); + dumpedTileData.setElevation(tile.getMaxElevationLatitudeIndex(), + tile.getMaxElevationLongitudeIndex(), + tile.getMaxElevation()); return dumpedTileData; } diff --git a/src/main/java/org/orekit/rugged/errors/DumpManager.java b/src/main/java/org/orekit/rugged/errors/DumpManager.java index f453dd28..1d5afe65 100644 --- a/src/main/java/org/orekit/rugged/errors/DumpManager.java +++ b/src/main/java/org/orekit/rugged/errors/DumpManager.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.PrintWriter; import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; +import org.orekit.bodies.GeodeticPoint; import org.orekit.frames.Transform; import org.orekit.rugged.api.AlgorithmId; import org.orekit.rugged.raster.Tile; @@ -60,7 +61,7 @@ public class DumpManager { throw new RuggedException(RuggedMessages.DEBUG_DUMP_ALREADY_ACTIVE); } else { try { - DUMP.set(new Dump(new PrintWriter(file))); + DUMP.set(new Dump(new PrintWriter(file, "UTF-8"))); } catch (IOException ioe) { throw new RuggedException(ioe, RuggedMessages.DEBUG_DUMP_ACTIVATION_ERROR, file.getAbsolutePath(), ioe.getLocalizedMessage()); @@ -145,6 +146,17 @@ public class DumpManager { } } + /** Dump a direct location result. + * @param gp resulting geodetic point + * @exception RuggedException if date cannot be converted to UTC + */ + public static void dumpDirectLocationResult(final GeodeticPoint gp) + throws RuggedException { + if (isActive()) { + DUMP.get().dumpDirectLocationResult(gp); + } + } + /** Dump an observation transform transform. * @param scToBody provider for observation * @param index index of the transform diff --git a/src/main/java/org/orekit/rugged/raster/SimpleTile.java b/src/main/java/org/orekit/rugged/raster/SimpleTile.java index b825ab12..2fe4d842 100644 --- a/src/main/java/org/orekit/rugged/raster/SimpleTile.java +++ b/src/main/java/org/orekit/rugged/raster/SimpleTile.java @@ -189,17 +189,39 @@ public class SimpleTile implements Tile { /** {@inheritDoc} */ @Override public double getMinElevation() { - DumpManager.dumpTileCell(this, minElevationLatitudeIndex, minElevationLongitudeIndex, minElevation); return minElevation; } + /** {@inheritDoc} */ + @Override + public int getMinElevationLatitudeIndex() { + return minElevationLatitudeIndex; + } + + /** {@inheritDoc} */ + @Override + public int getMinElevationLongitudeIndex() { + return minElevationLongitudeIndex; + } + /** {@inheritDoc} */ @Override public double getMaxElevation() { - DumpManager.dumpTileCell(this, maxElevationLatitudeIndex, maxElevationLongitudeIndex, maxElevation); return maxElevation; } + /** {@inheritDoc} */ + @Override + public int getMaxElevationLatitudeIndex() { + return maxElevationLatitudeIndex; + } + + /** {@inheritDoc} */ + @Override + public int getMaxElevationLongitudeIndex() { + return maxElevationLongitudeIndex; + } + /** {@inheritDoc} */ @Override public void setElevation(final int latitudeIndex, final int longitudeIndex, diff --git a/src/main/java/org/orekit/rugged/raster/Tile.java b/src/main/java/org/orekit/rugged/raster/Tile.java index 3adec49f..c27a6a86 100644 --- a/src/main/java/org/orekit/rugged/raster/Tile.java +++ b/src/main/java/org/orekit/rugged/raster/Tile.java @@ -215,11 +215,27 @@ public interface Tile extends UpdatableTile { */ double getMinElevation(); - /** Get the maximum elevation in the tile. + /** Get the latitude index of min elevation. + * @return latitude index of min elevation*/ + int getMinElevationLatitudeIndex(); + + /** Get the longitude index of min elevation. + * @return longitude index of min elevation*/ + int getMinElevationLongitudeIndex(); + + /** Get the maximum elevation in the tile. * @return maximum elevation in the tile */ double getMaxElevation(); + /** Get the latitude index of max elevation. + * @return latitude index of max elevation*/ + int getMaxElevationLatitudeIndex(); + + /** Get the longitude index of max elevation. + * @return longitude index of max elevation*/ + int getMaxElevationLongitudeIndex(); + /** Get the elevation of an exact grid point. * @param latitudeIndex grid point index along latitude * @param longitudeIndex grid point index along longitude -- GitLab