Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java @ 8386:a9d493aba926
Try to determine gauge by km in gauge discharge facet for exporter.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 07 Oct 2014 13:41:54 +0200 |
parents | 839032ac1523 |
children | 47199406994a |
comparison
equal
deleted
inserted
replaced
8385:24d3370af00b | 8386:a9d493aba926 |
---|---|
15 import org.dive4elements.artifacts.CallContext; | 15 import org.dive4elements.artifacts.CallContext; |
16 | 16 |
17 import org.dive4elements.artifactdatabase.state.Facet; | 17 import org.dive4elements.artifactdatabase.state.Facet; |
18 | 18 |
19 import org.dive4elements.river.artifacts.D4EArtifact; | 19 import org.dive4elements.river.artifacts.D4EArtifact; |
20 | 20 import org.dive4elements.river.artifacts.access.RangeAccess; |
21 import org.dive4elements.river.model.Gauge; | 21 import org.dive4elements.river.model.Gauge; |
22 | 22 |
23 import org.dive4elements.river.utils.RiverUtils; | 23 import org.dive4elements.river.utils.RiverUtils; |
24 | 24 |
25 import org.apache.log4j.Logger; | 25 import org.apache.log4j.Logger; |
26 | 26 |
27 import static org.dive4elements.river.exports.injector.InjectorConstants.PNP; | 27 import static org.dive4elements.river.exports.injector.InjectorConstants.PNP; |
28 import static org.dive4elements.river.exports.injector.InjectorConstants.GAUGE_EPSILON; | |
28 | 29 |
29 /** | 30 /** |
30 * A Facet that returns discharge curve data at a gauge | 31 * A Facet that returns discharge curve data at a gauge |
31 * | 32 * |
32 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> | 33 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> |
80 double [] kms = new double[values[0].length]; | 81 double [] kms = new double[values[0].length]; |
81 Arrays.fill(kms, gauge.getStation().doubleValue()); | 82 Arrays.fill(kms, gauge.getStation().doubleValue()); |
82 | 83 |
83 Object pnpObject = context.getContextValue(PNP); | 84 Object pnpObject = context.getContextValue(PNP); |
84 if (!(pnpObject instanceof Number)) { | 85 if (!(pnpObject instanceof Number)) { |
86 RangeAccess access = new RangeAccess(flys); | |
87 double km = Double.NaN; | |
88 if (access.getLocations() != null && | |
89 access.getLocations().length > 0) { | |
90 km = access.getLocations()[0]; | |
91 } | |
92 Gauge g = access.getRiver().determineGaugeByStation( | |
93 km - GAUGE_EPSILON, | |
94 km + GAUGE_EPSILON); | |
95 if (g != null) { | |
96 return new WQKms( | |
97 kms, | |
98 values[0], | |
99 transformToM(values[1], g.getDatum().doubleValue())); | |
100 } | |
85 return new WQKms(kms, values[0], values[1], name); | 101 return new WQKms(kms, values[0], values[1], name); |
86 } | 102 } |
87 double pnp = ((Number)pnpObject).doubleValue(); | 103 double[] ws = transformToM(values[1], ((Number)pnpObject).doubleValue()); |
88 double[] ws = transformToM(values[1], pnp); | |
89 | 104 |
90 return new WQKms(kms, values[0], ws, name); | 105 return new WQKms(kms, values[0], ws, name); |
91 } | 106 } |
92 | 107 |
93 private double[] transformToM(double[] ws, double pnp) { | 108 private double[] transformToM(double[] ws, double pnp) { |