comparison flys-artifacts/src/main/java/de/intevation/flys/exports/ComputedDischargeCurveGenerator.java @ 3054:8bd4cf11c25a

Interpolate wkms in computed discharges. flys-artifacts/trunk@4628 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 08 Jun 2012 04:53:33 +0000
parents de60d1dfdcdf
children 97ad960f5579
comparison
equal deleted inserted replaced
3053:bb576facbe50 3054:8bd4cf11c25a
12 import org.jfree.data.xy.XYSeries; 12 import org.jfree.data.xy.XYSeries;
13 13
14 import de.intevation.artifactdatabase.state.ArtifactAndFacet; 14 import de.intevation.artifactdatabase.state.ArtifactAndFacet;
15 import de.intevation.artifactdatabase.state.Facet; 15 import de.intevation.artifactdatabase.state.Facet;
16 16
17 import de.intevation.flys.artifacts.StaticWKmsArtifact;
17 import de.intevation.flys.artifacts.WINFOArtifact; 18 import de.intevation.flys.artifacts.WINFOArtifact;
18 19
19 import de.intevation.flys.artifacts.model.FacetTypes; 20 import de.intevation.flys.artifacts.model.FacetTypes;
20 import de.intevation.flys.artifacts.model.WQKms; 21 import de.intevation.flys.artifacts.model.WQKms;
21 import de.intevation.flys.artifacts.model.WKms; 22 import de.intevation.flys.artifacts.model.WKms;
177 Object wqkms, 178 Object wqkms,
178 ArtifactAndFacet aaf, 179 ArtifactAndFacet aaf,
179 Document theme, 180 Document theme,
180 boolean visible 181 boolean visible
181 ) { 182 ) {
183 logger.debug("ComputedDischargeCurveGenerator: doWQOut");
182 double [][] data = (double [][]) wqkms; 184 double [][] data = (double [][]) wqkms;
183 185
184 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); 186 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
185 StyledSeriesBuilder.addPoints(series, data, true); 187 StyledSeriesBuilder.addPoints(series, data, true);
186 188
197 WQKms wqkms, 199 WQKms wqkms,
198 ArtifactAndFacet aaf, 200 ArtifactAndFacet aaf,
199 Document theme, 201 Document theme,
200 boolean visible 202 boolean visible
201 ) { 203 ) {
204 logger.debug("ComputedDischargeCurveGenerator: doWQOut");
202 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); 205 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
203 StyledSeriesBuilder.addPointsQW(series, wqkms); 206 StyledSeriesBuilder.addPointsQW(series, wqkms);
204 207
205 addAxisSeries(series, YAXIS.W.idx, visible); 208 addAxisSeries(series, YAXIS.W.idx, visible);
206 } 209 }
218 boolean visible 221 boolean visible
219 ) { 222 ) {
220 List<StickyAxisAnnotation> xy = new ArrayList<StickyAxisAnnotation>(); 223 List<StickyAxisAnnotation> xy = new ArrayList<StickyAxisAnnotation>();
221 double [][] data = (double [][]) wqkms; 224 double [][] data = (double [][]) wqkms;
222 for (int i = 0; i< data[0].length; i++) { 225 for (int i = 0; i< data[0].length; i++) {
226 // TODO we need linear interpolation?
223 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(), 227 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
224 (float) data[0][i], StickyAxisAnnotation.SimpleAxis.X_AXIS)); 228 (float) data[0][i], StickyAxisAnnotation.SimpleAxis.X_AXIS));
225 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(), 229 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
226 (float) data[1][i], StickyAxisAnnotation.SimpleAxis.Y_AXIS)); 230 (float) data[1][i], StickyAxisAnnotation.SimpleAxis.Y_AXIS));
227 } 231 }
245 Facet facet = aandf.getFacet(); 249 Facet facet = aandf.getFacet();
246 250
247 List<StickyAxisAnnotation> xy = new ArrayList<StickyAxisAnnotation>(); 251 List<StickyAxisAnnotation> xy = new ArrayList<StickyAxisAnnotation>();
248 // Try to find them as WKms as well... 252 // Try to find them as WKms as well...
249 if (wqkms instanceof double[][]) { 253 if (wqkms instanceof double[][]) {
254 logger.debug("its double[][] time, baby");
250 double [][] data = (double [][]) wqkms; 255 double [][] data = (double [][]) wqkms;
256 // TODO Do we need interpolation?
251 for (int i = 0; i< data[0].length; i++) { 257 for (int i = 0; i< data[0].length; i++) {
252 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(), 258 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
253 (float) data[1][i], StickyAxisAnnotation.SimpleAxis.Y_AXIS)); 259 (float) data[1][i], StickyAxisAnnotation.SimpleAxis.Y_AXIS));
254 } 260 }
255 261
256 doAnnotations(new FLYSAnnotation(facet.getDescription(), xy), 262 doAnnotations(new FLYSAnnotation(facet.getDescription(), xy),
257 aandf, theme, visible); 263 aandf, theme, visible);
258 } 264 }
259 else { 265 else {
266 logger.debug("its wkms time, baby");
260 WKms data = (WKms) wqkms; 267 WKms data = (WKms) wqkms;
261 // assume its WKms 268 // Assume its WKms.
269 double location = getRange()[0];
270 double w = ((StaticWKmsArtifact) aandf.getArtifact())
271 .getWAtKmLin(data, getRange()[0]);
262 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(), 272 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
263 (float) data.getW(0), StickyAxisAnnotation.SimpleAxis.Y_AXIS)); 273 (float) w, StickyAxisAnnotation.SimpleAxis.Y_AXIS));
264 xy.add(new StickyAxisAnnotation(aandf.getFacetDescription(),
265 (float) 180f, StickyAxisAnnotation.SimpleAxis.Y_AXIS));
266 274
267 doAnnotations(new FLYSAnnotation(facet.getDescription(), xy), 275 doAnnotations(new FLYSAnnotation(facet.getDescription(), xy),
268 aandf, theme, visible); 276 aandf, theme, visible);
269 } 277 }
270 } 278 }

http://dive4elements.wald.intevation.org