Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 721:7298d58a1f5a
Generate facets for "Abflusskurven am Pegel". Not working by now. :-/
flys-artifacts/trunk@2198 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 22 Jun 2011 09:19:16 +0000 |
parents | 2f25ca828efd |
children | 8900966ad945 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed Jun 22 06:51:36 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed Jun 22 09:19:16 2011 +0000 @@ -1,5 +1,6 @@ package de.intevation.flys.artifacts; +import java.util.Arrays; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -447,31 +448,52 @@ /** * Returns the data that is used to create discharge curves. * - * @return a map where the key is the name of the gauge and a double[][] - * which are the values. */ - public Map<String, double[][]> getDischargeCurveData() { - River river = getRiver(); - List<Gauge> gauges = getGauges(); + public CalculationResult getDischargeCurveData() { - if (gauges == null) { - logger.warn("No gauges found for the current kilometer range."); - return null; + River river = getRiver(); + if (river == null) { + return error(new WQKms[0], "no river found"); } - int num = gauges.size(); - - logger.debug("Found " + num + " gauges."); + double [] distance = getDistance(); - String[] gaugeNames = new String[num]; - - for (int i = 0; i < num; i++) { - gaugeNames[i] = gauges.get(i).getName(); + if (distance == null) { + return error(new WQKms[0], "no range found"); } - DischargeTables dt = new DischargeTables(river.getName(), gaugeNames); + List<Gauge> gauges = river.determineGauges(distance[0], distance[1]); - return dt.getValues(100d); + if (gauges.isEmpty()) { + return error(new WQKms[0], "no gauges found"); + } + + String [] names = new String[gauges.size()]; + + for (int i = 0; i < names.length; ++i) { + names[i] = gauges.get(i).getName(); + } + + DischargeTables dt = new DischargeTables(river.getName(), names); + + Map<String, double [][]> map = dt.getValues(100d); + + ArrayList<WQKms> res = new ArrayList<WQKms>(); + + for (Gauge gauge: gauges) { + String name = gauge.getName(); + double [][] values = map.get(name); + if (values == null) { + continue; + } + double [] kms = new double[values[0].length]; + Arrays.fill(kms, gauge.getStation().doubleValue()); + res.add(new WQKms(values[1], values[0], kms, name)); + } + + return new CalculationResult( + res.toArray(new WQKms[res.size()]), + new Calculation()); }