From de9daade483b43837c132b0ddbf13b17e0886957 Mon Sep 17 00:00:00 2001 From: Guylaine Prat <guylaine.prat@c-s.fr> Date: Wed, 20 Feb 2019 11:01:10 +0100 Subject: [PATCH] Better management of dumped data in TilesCache when updating the tile In the updateTile method (to be developed by the user according to the kind of raster to be read), it happens that some useless data are dumped. For instance, when reading some SRTM data, one needs to read also some Geoid data. When reading the Geoid data, the elevations may be dumped (if using the SimpleTile.interpolateElevation method). --- src/main/java/org/orekit/rugged/api/Rugged.java | 2 +- .../java/org/orekit/rugged/errors/DumpManager.java | 6 +++--- .../java/org/orekit/rugged/linesensor/LineSensor.java | 4 ++-- src/main/java/org/orekit/rugged/raster/TilesCache.java | 10 ++++++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/orekit/rugged/api/Rugged.java b/src/main/java/org/orekit/rugged/api/Rugged.java index 7426efca..f8b109b4 100644 --- a/src/main/java/org/orekit/rugged/api/Rugged.java +++ b/src/main/java/org/orekit/rugged/api/Rugged.java @@ -726,7 +726,7 @@ public class Rugged { // set up the starting point of the fixed point method final double pixel0 = sp0.getPixelNumber(); final double line0 = sp0.getLineNumber(); - // Needed data for the dump + // Needed data for the dump sensor.dumpRate(line0); // Apply fixed point method until convergence in pixel and line diff --git a/src/main/java/org/orekit/rugged/errors/DumpManager.java b/src/main/java/org/orekit/rugged/errors/DumpManager.java index 78e0f2a8..7fc33bf5 100644 --- a/src/main/java/org/orekit/rugged/errors/DumpManager.java +++ b/src/main/java/org/orekit/rugged/errors/DumpManager.java @@ -108,9 +108,9 @@ public class DumpManager { isSuspended = false; } } - - /** In case dump is suspended and an exception is thrown, - * allow the dump to end nicely. + + /** In case dump is suspended and an exception is thrown, + * allows the dump to end nicely. */ public static void endNicely() { isSuspended = false; diff --git a/src/main/java/org/orekit/rugged/linesensor/LineSensor.java b/src/main/java/org/orekit/rugged/linesensor/LineSensor.java index 9963174f..9f4569b4 100644 --- a/src/main/java/org/orekit/rugged/linesensor/LineSensor.java +++ b/src/main/java/org/orekit/rugged/linesensor/LineSensor.java @@ -183,8 +183,8 @@ public class LineSensor { public Vector3D getPosition() { return position; } - - /** Dump the rate for the current line number + + /** Dump the rate for the current line number. * @param lineNumber line number */ public void dumpRate(final double lineNumber) { diff --git a/src/main/java/org/orekit/rugged/raster/TilesCache.java b/src/main/java/org/orekit/rugged/raster/TilesCache.java index 6e487987..528048e1 100644 --- a/src/main/java/org/orekit/rugged/raster/TilesCache.java +++ b/src/main/java/org/orekit/rugged/raster/TilesCache.java @@ -19,6 +19,7 @@ package org.orekit.rugged.raster; import org.hipparchus.util.FastMath; import java.lang.reflect.Array; +import org.orekit.rugged.errors.DumpManager; import org.orekit.rugged.errors.RuggedException; import org.orekit.rugged.errors.RuggedMessages; @@ -86,7 +87,16 @@ public class TilesCache<T extends Tile> { // create the tile and retrieve its data final T tile = factory.createTile(); + + // In case dump is asked for, suspend the dump manager as we don't need to dump anything here + // For instance for SRTM DEM, the user needs to read Geoid data that are not useful in the dump + final Boolean wasSuspended = DumpManager.suspend(); + updater.updateTile(latitude, longitude, tile); + + // Resume the dump manager if necessary + DumpManager.resume(wasSuspended); + tile.tileUpdateCompleted(); if (tile.getLocation(latitude, longitude) != Tile.Location.HAS_INTERPOLATION_NEIGHBORS) { -- GitLab