Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/WaterlevelData.java @ 9053:ad2ae847e10e
- RadioButton-Auswahl generisch
- Überflutungsdauern (inudation of infrastructures) Ablauf states
author | gernotbelger |
---|---|
date | Fri, 04 May 2018 13:17:57 +0200 |
parents | 45f1ad66560e |
children | 392745cccede |
rev | line source |
---|---|
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
2 * Software engineering by |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
5 * |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
6 * This file is Free Software under the GNU AGPL (>=v3) |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
8 * documentation coming with Dive4Elements River for details. |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
9 */ |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
10 package org.dive4elements.river.artifacts.states; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
11 |
8964
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
12 import org.apache.commons.lang.math.DoubleRange; |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
13 import org.dive4elements.river.artifacts.model.WKms; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
14 |
8964
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
15 import gnu.trove.TDoubleArrayList; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
16 |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
17 /** |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
18 * Represents a waterlevel fetched with the {@link WaterlevelFetcher}. |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
19 * |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
20 * @author Gernot Belger |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
21 */ |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
22 public class WaterlevelData { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
23 private final WKms wkms; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
24 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
25 private final String name; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
26 |
8883 | 27 private final int year; |
28 | |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
29 /** If <code>true</code>, tabular export will show gauges for every station, else only for the first gauge */ |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
30 private final boolean showAllGauges; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
31 |
8883 | 32 public WaterlevelData(final WKms wkms, final int year) { |
33 this(wkms, year, false); | |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
34 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
35 |
8883 | 36 public WaterlevelData(final WKms wkms, final int year, final boolean showAllGauges) { |
8934 | 37 this(wkms.getName(), wkms, year, showAllGauges); |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
38 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
39 |
8883 | 40 private WaterlevelData(final String name, final WKms wkms, final int year, final boolean showAllGauges) { |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
41 this.name = name; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
42 this.wkms = wkms; |
8883 | 43 this.year = year; |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
44 this.showAllGauges = showAllGauges; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
45 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
46 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
47 public WaterlevelData filterByRange(final double from, final double to) { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
48 if (Double.isNaN(from) || Double.isNaN(to)) { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
49 return this; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
50 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
51 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
52 final WKms filteredWkms = this.wkms.filteredKms(from, to); |
8883 | 53 return new WaterlevelData(this.name, filteredWkms, this.year, this.showAllGauges); |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
54 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
55 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
56 public WaterlevelData withName(final String nameToSet) { |
8883 | 57 return new WaterlevelData(nameToSet, this.wkms, this.year, this.showAllGauges); |
8881
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
58 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
59 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
60 public String getName() { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
61 return this.name; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
62 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
63 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
64 public WKms getWkms() { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
65 return this.wkms; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
66 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
67 |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
68 public boolean isShowAllGauges() { |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
69 return this.showAllGauges; |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
70 } |
6b93a2498e06
Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents:
diff
changeset
|
71 |
8883 | 72 public int getYear() { |
73 return this.year; | |
74 } | |
8964
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
75 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
76 public boolean covers(final DoubleRange simulationRange) { |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
77 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
78 final TDoubleArrayList allKms = this.wkms.allKms(); |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
79 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
80 if (allKms.isEmpty()) |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
81 return false; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
82 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
83 final double min = allKms.min(); |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
84 if (min > simulationRange.getMaximumDouble()) |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
85 return false; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
86 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
87 final double max = allKms.max(); |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
88 if (max < simulationRange.getMinimumDouble()) |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
89 return false; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
90 |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
91 return true; |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
92 } |
45f1ad66560e
Code cleanup concerning calculations: improved error handling; improved interpolation; bed heights are now always used for spatial discretisation
gernotbelger
parents:
8934
diff
changeset
|
93 } |