comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/MeasurementFactory.java @ 4813:bf2fd9c58ac4

Fixed MINFO SQ calculation. * Fixed calculation of sieve 8. * Fixed calculation of 'Geschiebetransport'. * Fixed calculation of fractions (Sand, gravel, coarse).
author Raimund Renkert <rrenkert@intevation.de>
date Sun, 20 Jan 2013 15:02:19 +0100
parents 0df2247d98e1
children 61c2f739cf78 9e25c7523485
comparison
equal deleted inserted replaced
4794:a7d080347ac3 4813:bf2fd9c58ac4
1 package de.intevation.flys.artifacts.model.sq; 1 package de.intevation.flys.artifacts.model.sq;
2 2
3 import java.util.ArrayList; 3 import java.util.ArrayList;
4 import java.util.Arrays;
4 import java.util.Calendar; 5 import java.util.Calendar;
5 import java.util.Collections; 6 import java.util.Collections;
6 import java.util.Date; 7 import java.util.Date;
7 import java.util.HashMap; 8 import java.util.HashMap;
8 import java.util.List; 9 import java.util.List;
50 "gp.LFDNR AS LFDNR," + 51 "gp.LFDNR AS LFDNR," +
51 "g.UFERABST AS UFERABST," + 52 "g.UFERABST AS UFERABST," +
52 "g.UFERABLINKS AS UFERABLINKS," + 53 "g.UFERABLINKS AS UFERABLINKS," +
53 "m.TSCHWEB AS TSCHWEB," + 54 "m.TSCHWEB AS TSCHWEB," +
54 "m.TSAND AS TSAND," + 55 "m.TSAND AS TSAND," +
55 "gp.GTRIEB AS GTRIEB," + 56 "gp.GTRIEB_F AS GTRIEB," +
56 "m.TGESCHIEBE AS TGESCHIEBE," + 57 "m.TGESCHIEBE AS TGESCHIEBE," +
57 "si.SIEB01 AS SIEB01, si.SIEB02 AS SIEB02," + 58 "si.SIEB01 AS SIEB01, si.SIEB02 AS SIEB02," +
58 "si.SIEB03 AS SIEB03, si.SIEB04 AS SIEB04," + 59 "si.SIEB03 AS SIEB03, si.SIEB04 AS SIEB04," +
59 "si.SIEB05 AS SIEB05, si.SIEB06 AS SIEB06," + 60 "si.SIEB05 AS SIEB05, si.SIEB06 AS SIEB06," +
60 "si.SIEB07 AS SIEB07, si.SIEB08 AS SIEB08," + 61 "si.SIEB07 AS SIEB07, si.SIEB08 AS SIEB08," +
326 327
327 if (!same.isEmpty()) { 328 if (!same.isEmpty()) {
328 accumulated.add(accumulate(same)); 329 accumulated.add(accumulate(same));
329 } 330 }
330 331
331 for (Measurement m: accumulated) {
332 m.adjustSieves();
333 }
334
335 if (debug) { 332 if (debug) {
336 log.debug("Before date separation: " + accumulated.size()); 333 log.debug("Before date separation: " + accumulated.size());
337 } 334 }
338 335
339 accumulated = separateByDate(accumulated); 336 accumulated = separateByDate(accumulated);
457 454
458 int N = measuments.size(); 455 int N = measuments.size();
459 if (N == 1) { 456 if (N == 1) {
460 return measuments.get(0); 457 return measuments.get(0);
461 } 458 }
462
463 TreeMap<Double, double []> diameters = 459 TreeMap<Double, double []> diameters =
464 new TreeMap<Double, double []>(Sieve.DIAMETER_CMP); 460 new TreeMap<Double, double []>(Sieve.DIAMETER_CMP);
465 461
462 double sumGTrieb = 0d;
466 for (Measurement m: measuments) { 463 for (Measurement m: measuments) {
467 for (Sieve s: m.getSieves()) { 464 for (Sieve s: m.getSieves()) {
468 Double key = s.getDiameter(); 465 Double key = s.getDiameter();
469 double [] sum = diameters.get(key); 466 double [] sum = diameters.get(key);
470 if (sum == null) { 467 if (sum == null) {
471 sum = new double[1]; 468 sum = new double[1];
472 diameters.put(key, sum); 469 diameters.put(key, sum);
473 } 470 }
474 sum[0] += s.getLoad(); 471 sum[0] += s.getLoad();
475 } 472 }
473 // calculate 'Geschiebetrieb'
474 sumGTrieb += m.get("GTRIEB");
476 } 475 }
477 List<Sieve> accumulatedSieves = new ArrayList<Sieve>(diameters.size()); 476 List<Sieve> accumulatedSieves = new ArrayList<Sieve>(diameters.size());
478 for (Map.Entry<Double, double []> entry: diameters.entrySet()) { 477 for (Map.Entry<Double, double []> entry: diameters.entrySet()) {
479 accumulatedSieves.add( 478 accumulatedSieves.add(
480 new Sieve(entry.getKey(), 479 new Sieve(entry.getKey(),
481 entry.getValue()[0]/N)); 480 entry.getValue()[0]/N));
482 } 481 }
483
484 Map<String, Object> data = 482 Map<String, Object> data =
485 new HashMap<String, Object>(measuments.get(0).getData()); 483 new HashMap<String, Object>(measuments.get(0).getData());
486 484
485 data.put("GTRIEB", sumGTrieb/N);
487 return new Measurement(data, accumulatedSieves); 486 return new Measurement(data, accumulatedSieves);
488 } 487 }
489 } 488 }
490 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : 489 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org