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

http://dive4elements.wald.intevation.org