Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java @ 8891:f431aec10d2c
Implemented access to bed measurements
author | gernotbelger |
---|---|
date | Wed, 14 Feb 2018 19:06:21 +0100 |
parents | cc86b0f9b3c3 |
children | a66f2a7c4f84 89f3c5462a16 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java Wed Feb 14 18:45:42 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java Wed Feb 14 19:06:21 2018 +0100 @@ -10,8 +10,10 @@ package org.dive4elements.river.artifacts.sinfo.flowdepth; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.List; import org.apache.commons.math.FunctionEvaluationException; @@ -24,6 +26,8 @@ import org.dive4elements.river.artifacts.model.LocationProvider; import org.dive4elements.river.artifacts.model.QKms; import org.dive4elements.river.artifacts.model.WKms; +import org.dive4elements.river.artifacts.model.minfo.QualityMeasurementFactory; +import org.dive4elements.river.artifacts.model.minfo.QualityMeasurements; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; import org.dive4elements.river.artifacts.sinfo.flowdepth.FlowDepthAccess.DifferencesPair; @@ -39,6 +43,8 @@ class FlowDepthCalculation { + private static final int VALID_BED_MEASUREMENT_YEARS = 20; + private static final String CSV_NOT_IN_GAUGE_RANGE = "export.waterlevel.csv.not.in.gauge.range"; private final CallContext context; @@ -136,13 +142,17 @@ // TODO: keine Berechnung TKH } - // FIXME - // - Sohlbeschaffenheit (D50 Korndurchmesser aus Seddb) - // - Abhängig von Peiljahr - // - kein D50 vorhanden --> Fehler + final QualityMeasurements bedMeasurements = getBedMeasurements(river, from, to, sounding.getYear()); + // FIXME: prüfung ob (genug) werte vorhanden sind? was sind genau die kriterien? falls nein, problemhinzufügen und keine + // berechnung tkh + // FIXME: wie wird ggf. interpoliert? --> absprache? + // FIXME: mir direkt aufgefallen, die Beispieldatenbank liefert Werte zum gleichen km und zeitpunkt, die messwerte sind + // aber unterschiedlich....??? + // FIXME: die eigentlichen daten extrahieren, ggf. wenn esswerte zum gleichen datum voriliegen. das neueste nehmen? oder + // das näheste zum Peiljahr? - // FIXME - // - Art der Gewässersohle (starr/mobil) + // FIXME Art der Gewässersohle (starr/mobil) + // FIXME: wie wird ggf. interpoliert? prüfung ob werte vorhanden? final String bedHeightLabel = bedHeight.getDescription(); final String wstLabel = wstKms.getName(); @@ -245,6 +255,25 @@ } /** + * Sohlbeschaffenheit (D50 Korndurchmesser aus Seddb) + * Abhängig von Peiljahr + */ + private QualityMeasurements getBedMeasurements(final River river, final double from, final double to, final int soundingYear) { + + /* construct valid measurement time range */ + final Calendar cal = Calendar.getInstance(); + cal.clear(); + + cal.set(soundingYear - VALID_BED_MEASUREMENT_YEARS, 0, 1); + final Date startTime = cal.getTime(); + + cal.set(soundingYear + VALID_BED_MEASUREMENT_YEARS, 11, 31); + final Date endTime = cal.getTime(); + + return QualityMeasurementFactory.getBedMeasurements(river.getName(), from, to, startTime, endTime); + } + + /** * Checks the year difference between waterlevels and sounding, and issues a warning if too big. * * Zeitraum Zeitliche Differenz [a]