Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 642:2dbbb5be30a1
Re-eanbled the calculation of the backjump correction.
flys-artifacts/trunk@2026 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 27 May 2011 16:52:37 +0000 |
parents | f0c1250d1e7b |
children | a9bde508824a |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Fri May 27 10:09:46 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Fri May 27 16:52:37 2011 +0000 @@ -497,6 +497,28 @@ return wqkms; } + private static final double [] getBounds(double [][] segments) { + boolean down = true; + double min = Double.MAX_VALUE; + double max = -Double.MAX_VALUE; + + for (double [] segment: segments) { + if (down = segment[0] > segment[1]) { + if (segment[1] < min) min = segment[1]; + if (segment[0] > max) max = segment[0]; + } + else { + if (segment[0] < min) min = segment[0]; + if (segment[1] > max) max = segment[1]; + } + } + + return down + ? new double [] { max, min } + : new double [] { min, max }; + + } + /** * Returns the data computed by the discharge longitudinal section * computation. @@ -554,12 +576,12 @@ double [] boundKms; if (segments.length == 2) { - boundKms = new double [] { segments[0][0], segments[1][1] }; + boundKms = getBounds(segments); } else { TDoubleArrayList bounds = new TDoubleArrayList(); - bounds.add(segments[0][0]); + bounds.add(Math.min(segments[0][0], segments[0][1])); for (int i = 1; i < segments.length-1; ++i) { double [] segment = segments[i]; @@ -576,7 +598,10 @@ } } - bounds.add(segments[segments.length-1][1]); + bounds.add(Math.max( + segments[segments.length-1][0], + segments[segments.length-1][1])); + boundKms = bounds.toNativeArray(); } @@ -654,16 +679,14 @@ wst.interpolate(okms, ows, oqs, qPosition, remap); - /* BackJumpCorrector bjc = new BackJumpCorrector(); if (bjc.doCorrection(okms, ows)) { logger.debug("Discharge longitudinal section has backjumps."); results.add(new WQCKms(okms, oqs, ows, bjc.getCorrected())); } else { - */ results.add(new WQKms(okms, oqs, ows)); - //} + } } WQKms [] wqkms = results.toArray(new WQKms[results.size()]);