Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedDiffCalculation.java @ 3898:95d699c769fb
Bedheight difference calculation has chart outpus now.
flys-artifacts/trunk@5562 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 21 Sep 2012 14:29:32 +0000 |
parents | a1c79d84e3cd |
children |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedDiffCalculation.java Fri Sep 21 14:18:16 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedDiffCalculation.java Fri Sep 21 14:29:32 2012 +0000 @@ -2,6 +2,7 @@ import gnu.trove.TDoubleArrayList; +import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -18,7 +19,7 @@ { private static final Logger logger = Logger - .getLogger(BedQualityCalculation.class); + .getLogger(BedDiffCalculation.class); protected String river; protected String yearEpoch; @@ -28,12 +29,13 @@ } public CalculationResult calculate(BedDifferencesAccess access) { - logger.info("BedQualityCalculation.calculate"); + logger.info("BedDiffCalculation.calculate"); String river = access.getRiver(); String yearEpoch = access.getYearEpoch(); FLYSArtifact[][] artifacts = access.getDifferenceArtifacts(); + logger.debug("got artifacts: " + artifacts.length + "; " + artifacts[0].length); if (river == null) { // TODO: i18n addProblem("minfo.missing.river"); @@ -58,28 +60,34 @@ } private CalculationResult internalCalculate() { - List<BedDifferencesResult> results = - new LinkedList<BedDifferencesResult>(); if (yearEpoch.equals("year")) { + List<BedDiffYearResult> results = + new LinkedList<BedDiffYearResult>(); + for (int i = 0; i < artifacts.length; i++) { BedHeight[] pair = getHeightPair(artifacts[i][0], artifacts[i][1], "single"); - BedDifferencesResult res = calculateYearDifference(pair); + BedDiffYearResult res = calculateYearDifference(pair); results.add(res); } + return new CalculationResult( + results.toArray(new BedDiffYearResult[results.size()]), this); } if (yearEpoch.equals("epoch")) { + List<BedDiffEpochResult> results = + new LinkedList<BedDiffEpochResult>(); for (int i = 0; i < artifacts.length; i++) { BedHeight[] pair = getHeightPair(artifacts[i][0], artifacts[i][1], "epoch"); - BedDifferencesResult res = calculateEpochDifference(pair); + BedDiffEpochResult res = calculateEpochDifference(pair); results.add(res); } + return new CalculationResult( + results.toArray(new BedDiffEpochResult[results.size()]), this); } - return new CalculationResult( - results.toArray(new BedDifferencesResult[results.size()]), this); + return new CalculationResult(); } private BedHeight[] getHeightPair( @@ -101,7 +109,9 @@ TDoubleArrayList stations = pair[0].getStations(); TDoubleArrayList diffRes = new TDoubleArrayList(); TDoubleArrayList kms = new TDoubleArrayList(); - TDoubleArrayList morphs = new TDoubleArrayList(); + TDoubleArrayList heights1 = new TDoubleArrayList(); + TDoubleArrayList heights2 = new TDoubleArrayList(); + for (int i = 0; i < stations.size(); i++) { if (!Double.isNaN(pair[0].getHeight(stations.get(i))) && !Double.isNaN(pair[1].getHeight(stations.get(i)))) { @@ -110,15 +120,13 @@ pair[1].getHeight(stations.get(i)); diffRes.add(hDiff); kms.add(stations.get(i)); - if (pair[0].getMorphWidth(i) > pair[1].getMorphWidth(i)) { - morphs.add(pair[0].getMorphWidth(i)); - } - else { - morphs.add(pair[1].getMorphWidth(i)); - } + heights1.add(pair[0].getHeight(stations.get(i))); + heights2.add(pair[1].getHeight(stations.get(i))); } } - return new BedDiffEpochResult(kms, diffRes, morphs); + Date start = ((BedHeightEpoch)pair[0]).getStart(); + Date end = ((BedHeightEpoch)pair[1]).getEnd(); + return new BedDiffEpochResult(kms, diffRes, heights1, heights2, start, end); } private BedDiffYearResult calculateYearDifference(BedHeight[] pair) { @@ -127,8 +135,11 @@ TDoubleArrayList diffRes = new TDoubleArrayList(); TDoubleArrayList kms = new TDoubleArrayList(); TDoubleArrayList morphs = new TDoubleArrayList(); - TDoubleArrayList heights = new TDoubleArrayList(); + TDoubleArrayList absolute = new TDoubleArrayList(); TDoubleArrayList gap = new TDoubleArrayList(); + TDoubleArrayList heights1 = new TDoubleArrayList(); + TDoubleArrayList heights2 = new TDoubleArrayList(); + BedHeightSingle s1 = (BedHeightSingle)pair[0]; BedHeightSingle s2 = (BedHeightSingle)pair[1]; int range = s1.getYear() - s2.getYear(); @@ -136,28 +147,41 @@ range = range * -1; } for (int i = 0; i < stations.size(); i++) { - if (!Double.isNaN(pair[0].getHeight(stations.get(i))) && - !Double.isNaN(pair[1].getHeight(stations.get(i)))) { + if (!Double.isNaN(s1.getHeight(stations.get(i))) && + !Double.isNaN(s2.getHeight(stations.get(i)))) { double hDiff = - pair[0].getHeight(stations.get(i)) - - pair[1].getHeight(stations.get(i)); + s1.getHeight(stations.get(i)) - + s2.getHeight(stations.get(i)); diffRes.add(hDiff); - kms.add(stations.get(i)); - if (pair[0].getMorphWidth(i) > pair[1].getMorphWidth(i)) { - morphs.add(pair[0].getMorphWidth(i)); + double km = stations.get(i); + kms.add(km); + if (s1.getMorphWidth(km) > + s2.getMorphWidth(km)) { + morphs.add(s1.getMorphWidth(km)); } else { - morphs.add(pair[1].getMorphWidth(i)); + morphs.add(s2.getMorphWidth(km)); } - if (pair[0].getDataGap(i) > pair[1].getDataGap(i)) { - gap.add(pair[0].getDataGap(i)); + if (s1.getDataGap(km) > s2.getDataGap(km)) { + gap.add(s1.getDataGap(km)); } else { - gap.add(pair[1].getDataGap(i)); + gap.add(s2.getDataGap(km)); } - heights.add(hDiff / range); + absolute.add((hDiff / range) * 100); + heights1.add(s1.getHeight(km)); + heights2.add(s2.getHeight(km)); } } - return new BedDiffYearResult(kms, diffRes, morphs, heights, gap); + return new BedDiffYearResult( + kms, + diffRes, + heights1, + heights2, + morphs, + absolute, + gap, + s1.getYear(), + s2.getYear()); } }