Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentDensity.java @ 6937:0a3dd5be6f81
issue1436: Towards finding the best match in years for densities.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 28 Aug 2013 11:55:14 +0200 |
parents | a58a1a520948 |
children | 4c0222d94055 |
comparison
equal
deleted
inserted
replaced
6936:332d2dfa783f | 6937:0a3dd5be6f81 |
---|---|
63 | 63 |
64 public void setYears(List<Integer> years) { | 64 public void setYears(List<Integer> years) { |
65 this.years = years; | 65 this.years = years; |
66 } | 66 } |
67 | 67 |
68 /** | |
69 * Get the density at year. | |
70 * measured densities are valid until the next measurement. | |
71 * if no measurement was found 1.8 is returned. | |
72 */ | |
68 public double getDensity(double km, int year) { | 73 public double getDensity(double km, int year) { |
69 Collections.sort(this.years); | 74 Collections.sort(this.years); |
70 if (this.years.size() == 1) { | 75 if (this.years.size() == 1 && years.get(0) <= year) { |
71 logger.debug("get density from year " + year + " at km " + km); | 76 logger.debug("get density from year " + year + " at km " + km); |
72 return getDensityAtKm(densities.get(year), km); | 77 return getDensityAtKm(densities.get(years.get(0)), km); |
73 } | 78 } |
74 else { | 79 else if (this.years.size() > 1) { |
75 for (int i = 0; i < years.size() -1; i++) { | 80 for (int i = 0; i < years.size() -1; i++) { |
76 int y1 = years.get(i); | 81 int y1 = years.get(i); |
77 int y2 = years.get(i + 1); | 82 int y2 = years.get(i + 1); |
78 int mid = Math.round((y1 + y2) / 2); | 83 int mid = Math.round((y1 + y2) / 2); |
79 if (year < mid) { | 84 if (year < mid) { |