annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensity.java @ 5863:4897a58c8746

River artifacts: Added new copyright headers.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 14:40:59 +0200
parents 5aa05a7a34b7
children af13ceeba52a
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5712
diff changeset
9 package org.dive4elements.river.artifacts.model.minfo;
4521
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import java.util.Collections;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import java.util.HashMap;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 import java.util.List;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import java.util.Map;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 import java.util.Set;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 import org.apache.log4j.Logger;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 public class SedimentDensity
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 private static final Logger logger = Logger
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 .getLogger(SedimentDensity.class);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 private Map<Integer, List<SedimentDensityValue>> densities;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 private List<Integer> years;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 public SedimentDensity() {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 this.densities = new HashMap<Integer, List<SedimentDensityValue>>();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 this.years = new ArrayList<Integer>();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 public Map<Integer, List<SedimentDensityValue>> getDensities() {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 return densities;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 public void setDensities(Map<Integer, List<SedimentDensityValue>> densities) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 this.densities = densities;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 public void addDensity(double km, double density, int year) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 logger.debug("adding " + year);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 if (this.densities.containsKey(year)) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 List<SedimentDensityValue> list = this.densities.get(year);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 list.add(new SedimentDensityValue(km, density, year));
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 else {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 List<SedimentDensityValue> list =
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 new ArrayList<SedimentDensityValue>();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 list.add(new SedimentDensityValue(km, density, year));
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 densities.put(year, list);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 if (!this.years.contains(new Integer(year))) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 logger.debug("new year");
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 years.add(new Integer(year));
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 public List<Integer> getYears() {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 return years;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 public void setYears(List<Integer> years) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 this.years = years;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 public double getDensity(double km, int year) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 Collections.sort(this.years);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 if (this.years.size() == 1) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 return getDensityAtKm(densities.get(year), km);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 else {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 for (int i = 0; i < years.size() -1; i++) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 int y1 = years.get(i);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76 int y2 = years.get(i + 1);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 int mid = Math.round((y1 + y2) / 2);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 if (year < mid) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 return getDensityAtKm(densities.get(y1), km);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 else if (i == years.size() -1) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 continue;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 else {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 return getDensityAtKm(densities.get(y2), km);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 }
5712
84e02b3f7a4f Avoid NPE in sediment density factory and return a valid density if no exists.
Raimund Renkert <rrenkert@intevation.de>
parents: 4551
diff changeset
89 return 1.8d;
4521
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
90 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
91
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
92 private double getDensityAtKm(
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
93 List<SedimentDensityValue> values,
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
94 double km
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
95 ) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
96 boolean found = true;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
97 SedimentDensityValue prev = null;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
98 SedimentDensityValue next = null;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
99 for (SedimentDensityValue sdv: values) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
100 logger.debug("year: " + sdv.getYear());
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
101 if (sdv.getKm() == km) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
102 prev = sdv;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
103 found = true;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
104 break;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
105 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
106 if (sdv.getKm() > km) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
107 next = sdv;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
108 break;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
109 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
110 prev = sdv;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
111 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
112 if (found) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
113 return prev.getDensity();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
114 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
115 else {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
116 return spline(prev, next, km);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
117 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
118 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
119
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
120 private double spline(
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
121 SedimentDensityValue prev,
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
122 SedimentDensityValue next,
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
123 double km
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
124 ) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
125 double lower = prev.getKm();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
126 double upper = next.getKm();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
127 double upperDensity = next.getDensity();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
128 double lowerDensity = prev.getDensity();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
129
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
130 double m =(upperDensity - lowerDensity)/(upper - lower) * km;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
131 double b = lowerDensity -
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
132 ((upperDensity - lowerDensity)/(upper - lower) * lower);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
133 return (m * km) + b;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
134 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
135
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
136 public void cleanUp() {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
137 Set<Integer> keys = densities.keySet();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
138 for (Integer key : keys) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
139 List<SedimentDensityValue> list = densities.get(key);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
140 if (list.size() == 0) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
141 return;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
142 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
143 List<SedimentDensityValue> cleaned =
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
144 new ArrayList<SedimentDensityValue>();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
145 double prevkm = list.get(0).getKm();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
146 int counter = 0;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
147 double sum = 0d;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
148 for (SedimentDensityValue value : list) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
149 if (value.getKm() == prevkm) {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
150 sum += value.getDensity();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
151 counter++;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
152 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
153 else {
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
154 cleaned.add(new SedimentDensityValue(
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
155 prevkm,
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
156 sum / counter,
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
157 value.getYear()));
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
158 sum = value.getDensity();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
159 counter = 1;
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
160 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
161 prevkm = value.getKm();
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
162 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
163 this.densities.put(key, cleaned);
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
164 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
165 }
71e6fe870c1d Added objects and factory for sediment densities.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
166 }

http://dive4elements.wald.intevation.org