Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/WaterlevelValuesFinder.java @ 8964:45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
author | gernotbelger |
---|---|
date | Thu, 29 Mar 2018 15:48:17 +0200 |
parents | 5d5d482da3e9 |
children |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/WaterlevelValuesFinder.java Wed Mar 28 17:04:20 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/WaterlevelValuesFinder.java Thu Mar 29 15:48:17 2018 +0200 @@ -9,10 +9,9 @@ */ package org.dive4elements.river.artifacts.sinfo.tkhcalculation; -import org.apache.commons.math.ArgumentOutsideDomainException; -import org.apache.commons.math.analysis.polynomials.PolynomialSplineFunction; +import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.WKms; -import org.dive4elements.river.utils.DoubleUtil; +import org.dive4elements.river.artifacts.sinfo.util.LinearInterpolator; /** * Abstraction for access to waterlevels by station. @@ -21,23 +20,19 @@ */ public class WaterlevelValuesFinder { - public static WaterlevelValuesFinder fromKms(final WKms wkms) { - return new WaterlevelValuesFinder(wkms); + private static final double MAX_DSTANCE_KM = 1.0; + + public static WaterlevelValuesFinder fromKms(final Calculation problems, final WKms wkms) { + return new WaterlevelValuesFinder(problems, wkms); } - private final PolynomialSplineFunction wstInterpolator; + private final LinearInterpolator wstInterpolator; - private WaterlevelValuesFinder(final WKms wkms) { - this.wstInterpolator = DoubleUtil.getLinearInterpolator(wkms.allKms(), wkms.allWs()); + private WaterlevelValuesFinder(final Calculation problems, final WKms wkms) { + this.wstInterpolator = LinearInterpolator.create(problems, wkms.allKms(), wkms.allWs(), MAX_DSTANCE_KM); } public double getWaterlevel(final double km) { - try { - return this.wstInterpolator.value(km); - } - catch (final ArgumentOutsideDomainException e) { - e.printStackTrace(); - return Double.NaN; - } + return this.wstInterpolator.value(km); } } \ No newline at end of file