Mercurial > dive4elements > river
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 : |