Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/MeasurementFactory.java @ 4005:22abdc45869c
Calculate S(Q) fractions
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Mon, 01 Oct 2012 18:32:27 +0200 |
parents | 3b79e8afca7e |
children | d4e39cc5c10c |
comparison
equal
deleted
inserted
replaced
4004:3b79e8afca7e | 4005:22abdc45869c |
---|---|
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.Calendar; | |
5 import java.util.Collections; | |
4 import java.util.Date; | 6 import java.util.Date; |
5 import java.util.List; | 7 import java.util.List; |
6 import java.util.TreeMap; | 8 import java.util.TreeMap; |
7 | 9 |
8 import de.intevation.flys.artifacts.model.DateRange; | 10 import de.intevation.flys.artifacts.model.DateRange; |
267 | 269 |
268 for (Measurement m: accumulated) { | 270 for (Measurement m: accumulated) { |
269 m.adjustSieves(); | 271 m.adjustSieves(); |
270 } | 272 } |
271 | 273 |
272 return new Measurements(measuments, accumulated); | 274 return new Measurements(measuments, separateByDate(accumulated)); |
273 } | 275 } |
274 | 276 |
275 protected static List<Measurement> separateByDate(List<Measurement> measurements) { | 277 protected static List<Measurement> separateByDate(List<Measurement> measurements) { |
276 | 278 |
277 List<Measurement> result = new ArrayList<Measurement>(); | 279 List<Measurement> result = new ArrayList<Measurement>(); |
298 } | 300 } |
299 | 301 |
300 return result; | 302 return result; |
301 } | 303 } |
302 | 304 |
305 | |
303 protected static Measurement processSameDate(List<Measurement> measurements) { | 306 protected static Measurement processSameDate(List<Measurement> measurements) { |
304 int N = measurements.size(); | 307 int N = measurements.size(); |
305 if (N == 1) { | 308 if (N == 1) { |
306 Measurement current = measurements.get(0); | 309 Measurement current = measurements.get(0); |
307 double left = current.get("UFERABLINKS"); | 310 double left = current.get("UFERABLINKS"); |
332 current.set("EFFWIDTH", 0.5*(distNext - distPrev)); | 335 current.set("EFFWIDTH", 0.5*(distNext - distPrev)); |
333 } | 336 } |
334 } | 337 } |
335 } | 338 } |
336 | 339 |
337 return null; | 340 double sumSandF = 0d; |
341 double sumCoarseF = 0d; | |
342 double sumGravelF = 0d; | |
343 double sumNorm = 0d; | |
344 | |
345 for (Measurement m: measurements) { | |
346 SieveArray sa = m.getSieveArray(); | |
347 double sandF = sa.sandNormFraction(); | |
348 double coarseF = sa.coarseNormFraction(); | |
349 double gravelF = sa.gravelNormFraction(); | |
350 double effWidth = m.get("EFFWIDTH"); | |
351 double gt = m.get("GTRIEB"); | |
352 double scale = effWidth*gt; | |
353 sumSandF += scale*sandF; | |
354 sumCoarseF += scale*coarseF; | |
355 sumGravelF += scale*gravelF; | |
356 sumNorm += scale; | |
357 } | |
358 | |
359 Map<String, Object> data = | |
360 new HashMap<String, Object>(measurements.get(0).getData()); | |
361 | |
362 Measurement m = new Measurement(data, Collections.<Sieve>emptyList()); | |
363 | |
364 sumNorm = 1d/sumNorm; | |
365 | |
366 m.set("BL_S", sumNorm*sumSandF); | |
367 m.set("BL_G", sumNorm*sumGravelF); | |
368 m.set("BL_C", sumNorm*sumCoarseF); | |
369 | |
370 return m; | |
338 } | 371 } |
339 | 372 |
340 | 373 |
341 private static final boolean equalDate(Date a, Date b) { | 374 private static final boolean equalDate(Date a, Date b) { |
342 // TODO: compare only year, month and day. | 375 Calendar ca = Calendar.getInstance(); |
343 return a.equals(b); | 376 Calendar cb = Calendar.getInstance(); |
377 ca.setTime(a); | |
378 cb.setTime(b); | |
379 return ca.get(Calendar.YEAR) == cb.get(Calendar.YEAR) | |
380 && ca.get(Calendar.MONTH) == cb.get(Calendar.MONTH) | |
381 && ca.get(Calendar.DAY_OF_MONTH) == cb.get(Calendar.DAY_OF_MONTH); | |
344 } | 382 } |
345 | 383 |
346 | 384 |
347 protected static Measurement accumulate(List<Measurement> measuments) { | 385 protected static Measurement accumulate(List<Measurement> measuments) { |
348 | 386 |