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) {

http://dive4elements.wald.intevation.org