Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java @ 3867:d8c99ff18db8
Refactor MINFO bed quality resultsets and facets.
flys-artifacts/trunk@5498 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Mon, 17 Sep 2012 14:38:47 +0000 |
parents | 7fa38f8bcd8d |
children | 44e68dc1d87e |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java Mon Sep 17 13:58:37 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java Mon Sep 17 14:38:47 2012 +0000 @@ -99,55 +99,49 @@ to, dr.getFrom(), dr.getTo()); + BedQualityResult result = new BedQualityResult(); if (bedDiameter != null) { + result.add(calculateBedParameter(bedMeasurements, dr)); for (String bd : bedDiameter) { - BedQualityResult bedResult = + BedDiameterResult bedResult = calculateBed(bedMeasurements, bd, dr); // Avoid adding empty result sets. if (!bedResult.isEmpty()) { - results.add(bedResult); + result.add(bedResult); } } } if (bedloadDiameter != null) { for (String bld : bedloadDiameter) { - BedQualityResult loadResult = + BedloadDiameterResult loadResult = calculateBedload(loadMeasurements, bld, dr); - results.add(loadResult); + result.add(loadResult); } } + results.add(result); } return new CalculationResult( results.toArray(new BedQualityResult[results.size()]), this); } - protected BedQualityResult calculateBed( + private BedParametersResult calculateBedParameter( QualityMeasurements qm, - String diameter, - DateRange range + DateRange dr ) { List<Double> kms = qm.getKms(); + QualityMeasurements capFiltered = filterCapMeasurements(qm); + QualityMeasurements subFiltered = filterSubMeasurements(qm); TDoubleArrayList location = new TDoubleArrayList(); - TDoubleArrayList avDiameterCap = new TDoubleArrayList(); - TDoubleArrayList avDiameterSub = new TDoubleArrayList(); TDoubleArrayList porosityCap = new TDoubleArrayList(); TDoubleArrayList porositySub = new TDoubleArrayList(); TDoubleArrayList densityCap = new TDoubleArrayList(); TDoubleArrayList densitySub = new TDoubleArrayList(); - for (double km : kms) { - //Filter cap and sub measurements. - QualityMeasurements capFiltered = filterCapMeasurements(qm); - QualityMeasurements subFiltered = filterSubMeasurements(qm); - - List<QualityMeasurement> cm = capFiltered.getMeasurements(km); - List<QualityMeasurement> sm = subFiltered.getMeasurements(km); - - double avCap = calculateAverage(cm, diameter); - double avSub = calculateAverage(sm, diameter); - double[] pCap = calculatePorosity(capFiltered, km, diameter); - double[] pSub = calculatePorosity(subFiltered, km, diameter); + + for(double km : kms) { + double[] pCap = calculatePorosity(capFiltered, km); + double[] pSub = calculatePorosity(subFiltered, km); double[] dCap = calculateDensity(capFiltered, pCap); double[] dSub = calculateDensity(subFiltered, pSub); @@ -164,25 +158,51 @@ dSubRes += dSub[i]; } location.add(km); - avDiameterCap.add(avCap); - avDiameterSub.add(avSub); porosityCap.add((pCapRes / pCap.length) * 100 ); porositySub.add((pSubRes / pSub.length) * 100); densityCap.add((dCapRes / dCap.length) / 1000); densitySub.add((dSubRes / dSub.length) / 1000); + } - return new BedBedQualityResult( - diameter, - avDiameterCap, - avDiameterSub, + + return new BedParametersResult( location, - range, porosityCap, porositySub, densityCap, densitySub); } + protected BedDiameterResult calculateBed( + QualityMeasurements qm, + String diameter, + DateRange range + ) { + List<Double> kms = qm.getKms(); + TDoubleArrayList location = new TDoubleArrayList(); + TDoubleArrayList avDiameterCap = new TDoubleArrayList(); + TDoubleArrayList avDiameterSub = new TDoubleArrayList(); + for (double km : kms) { + //Filter cap and sub measurements. + QualityMeasurements capFiltered = filterCapMeasurements(qm); + QualityMeasurements subFiltered = filterSubMeasurements(qm); + + List<QualityMeasurement> cm = capFiltered.getMeasurements(km); + List<QualityMeasurement> sm = subFiltered.getMeasurements(km); + + double avCap = calculateAverage(cm, diameter); + double avSub = calculateAverage(sm, diameter); + location.add(km); + avDiameterCap.add(avCap); + avDiameterSub.add(avSub); + } + return new BedDiameterResult( + diameter, + avDiameterCap, + avDiameterSub, + location); + } + private double[] calculateDensity( QualityMeasurements capFiltered, double[] porosity @@ -196,8 +216,7 @@ private double[] calculatePorosity( QualityMeasurements capFiltered, - double km, - String diameter + double km ) { List<QualityMeasurement> list = capFiltered.getMeasurements(km); double[] results = new double[list.size()]; @@ -213,7 +232,7 @@ return results; } - protected BedQualityResult calculateBedload( + protected BedloadDiameterResult calculateBedload( QualityMeasurements qm, String diameter, DateRange range @@ -227,7 +246,7 @@ location.add(km); avDiameter.add(mid); } - return new BedLoadBedQualityResult( + return new BedloadDiameterResult( diameter, avDiameter, location,