Mercurial > dive4elements > river
changeset 8882:f762fadc5313
Further work on SINFO-FlowDepth
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/BedHeightInfo.java Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/BedHeightInfo.java Fri Feb 09 16:11:47 2018 +0100 @@ -24,27 +24,25 @@ private final String type; + private final String evaluationBy; + private final String locationSystem; private final String curElevationModelUnit; private final String oldElevationModelUnit; + public static BedHeightInfo from(final BedHeight bedHeight) { return new BedHeightInfo(bedHeight); } private BedHeightInfo(final BedHeight bedHeight) { - this.year = bedHeight.getYear(); - - // private String evaluationBy; this.description = bedHeight.getDescription(); - this.type = bedHeight.getType().getName(); - + this.evaluationBy = bedHeight.getEvaluationBy(); this.locationSystem = bedHeight.getLocationSystem().getName(); - this.curElevationModelUnit = bedHeight.getCurElevationModel().getUnit().getName(); this.oldElevationModelUnit = bedHeight.getCurElevationModel().getUnit().getName(); } @@ -61,6 +59,10 @@ return this.type; } + public String getEvaluationBy() { + return this.evaluationBy; + } + public String getLocationSystem() { return this.locationSystem; }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java Fri Feb 09 16:11:47 2018 +0100 @@ -23,7 +23,8 @@ import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; import org.dive4elements.river.artifacts.sinfo.flowdepth.FlowDepthAccess.DifferencesPair; -import org.dive4elements.river.artifacts.states.WDifferencesState; +import org.dive4elements.river.artifacts.states.WaterlevelData; +import org.dive4elements.river.artifacts.states.WaterlevelFetcher; import org.dive4elements.river.model.BedHeight; import org.dive4elements.river.model.Gauge; import org.dive4elements.river.model.River; @@ -36,7 +37,7 @@ private final CallContext context; - public FlowDepthCalculation( final CallContext context ) { + public FlowDepthCalculation(final CallContext context) { this.context = context; } @@ -66,81 +67,86 @@ final List<Gauge> gauges = river.determineGauges(from, to); final GaugeIndex gaugeIndex = new GaugeIndex(gauges); - final String calcModeLabel = Resources.getMsg(this.context.getMeta(),sinfo.getCalculationMode().name() ); + final String calcModeLabel = Resources.getMsg(this.context.getMeta(), sinfo.getCalculationMode().name()); - final FlowDepthCalculationResults results = new FlowDepthCalculationResults(calcModeLabel, user, river, from, to, useTkh); + final FlowDepthCalculationResults results = new FlowDepthCalculationResults(calcModeLabel, user, river, from, + to, useTkh); for (final DifferencesPair diffPair : diffPairs) { - final FlowDepthCalculationResult result = calculateResult( river, from, to, diffPair, problems, gaugeIndex ); - if( result != null ) + final FlowDepthCalculationResult result = calculateResult(river, from, to, diffPair, problems, gaugeIndex); + if (result != null) results.addResult(result); } - return new CalculationResult(results,problems); + return new CalculationResult(results, problems); } - private FlowDepthCalculationResult calculateResult(final River river, final double from, final double to, final DifferencesPair diffPair, final Calculation problems, final GaugeIndex gaugeIndex) { + private FlowDepthCalculationResult calculateResult(final River river, final double from, final double to, + final DifferencesPair diffPair, final Calculation problems, final GaugeIndex gaugeIndex) { /* access real input data from database */ final String soundingId = diffPair.getSoundingId(); final String wstId = diffPair.getWstId(); - final BedHeight bedHeight = loadBedHeight( soundingId, from, to ); - if( bedHeight == null ) - { - final String message = Resources.format(this.context.getMeta(), "Failed to access sounding with id '{0}'", soundingId); + final BedHeight bedHeight = loadBedHeight(soundingId, from, to); + if (bedHeight == null) { + final String message = Resources.format(this.context.getMeta(), "Failed to access sounding with id '{0}'", + soundingId); problems.addProblem(message); return null; } - final WKms wstKms = new WDifferencesState().getWKms(wstId, this.context, from, to); - if( wstKms == null ) - { - final String message = Resources.format(this.context.getMeta(), "Failed to access waterlevel with id '{0}'", wstId); + /* REMARK: fetch ALL wst kms, because we want to determine the original reference gauge */ + final WaterlevelData waterlevel = new WaterlevelFetcher().findWaterlevel(this.context, wstId, Double.NaN, + Double.NaN); + if (waterlevel == null) { + final String message = Resources.format(this.context.getMeta(), "Failed to access waterlevel with id '{0}'", + wstId); problems.addProblem(message); return null; } + final WKms wstKms = waterlevel.getWkms(); + + checkWaterlevelDiscretisation(wstKms, problems); // FIXME: woher bekommen? final int wspYear = 0; - // FIXME: angeblich metadatum bestimmter wsps? - // Könnte 'source' an 'wst_columns' sein - final String wspSource = "FIXME"; - // FIXME: Umsetzung IDENTISCH zu allen möglichen Arten wie ein WSPL berechnet wird.... - final String wspGauge = "FIXME"; + + /* re-determine the reference gauge, in the same way as the WaterlevelArtifact would do it */ + final String notinrange = Resources.getMsg(this.context.getMeta(), CSV_NOT_IN_GAUGE_RANGE, + CSV_NOT_IN_GAUGE_RANGE); + + final Gauge refGauge = waterlevel.findReferenceGauge(river); + final String refGaugeName = refGauge == null ? notinrange : refGauge.getName(); final String wspLabel = wstKms.getName(); final String soundingLabel = bedHeight.getDescription(); final String label = String.format("%s - %s", wspLabel, soundingLabel); final BedHeightInfo sounding = BedHeightInfo.from(bedHeight); - final WstInfo wstInfo = new WstInfo(wspLabel, wspYear, wspSource, wspGauge); + final WstInfo wstInfo = new WstInfo(wspLabel, wspYear, refGaugeName); final FlowDepthCalculationResult resultData = new FlowDepthCalculationResult(label, wstInfo, sounding); - final String notinrange = Resources.getMsg(this.context.getMeta(), CSV_NOT_IN_GAUGE_RANGE, CSV_NOT_IN_GAUGE_RANGE); - - // TODO: prüfe diskretisierung wsp --> > 1000m --> Fehlermeldung - // TODO: Berechnung der Transportkörperhöhen - // - woher kommen die zusätzlichen eingangsdaten? sind das fixe daten pro gewässer? --> falls ja, warum nicht einmal berechnen und in db ablegen? + // - woher kommen die zusätzlichen eingangsdaten? sind das fixe daten pro gewässer? --> falls ja, warum nicht + // einmal berechnen und in db ablegen? // Benötigte Daten // - Abfluss / Station - // - kein Abfluss --> Fehler - if( !(wstKms instanceof QKms)) - { - final String message = Resources.format(this.context.getMeta(), "{0}: keine Abflussdaten vorhanden, Transportkörperhöhenberechnung nicht möglich", label); + // - kein Abfluss --> Fehler + if (!(wstKms instanceof QKms)) { + final String message = Resources.getMsg(this.context.getMeta(), "sinfo_calc_flow_depth.warning.missingQ", + null, label); problems.addProblem(message); // TODO: keine Berechnung TKH } // - Sohlbeschaffenheit (D50 Korndurchmesser aus Seddb) - // - Abhängig von Peiljahr - // - kein D50 vorhanden --> Fehler + // - Abhängig von Peiljahr + // - kein D50 vorhanden --> Fehler // - Art der Gewässersohle (starr/mobil) - final String bedHeightLabel = bedHeight.getDescription(); final String wstLabel = wstKms.getName(); @@ -164,36 +170,74 @@ final String location = LocationProvider.getLocation(river.getName(), km); // REMARK: access the gauge once only during calculation - // FIXME: copy specific handling from original wst - final Gauge gauge = gaugeIndex.findGauge(km); + final Gauge gauge = findGauge(waterlevel, refGauge, gaugeIndex, km); + final String gaugeLabel = gauge == null ? notinrange : gauge.getName(); - resultData.addRow( km, flowDepth, flowDepthTkh, tkh, wst, discharge, wstLabel, gaugeLabel, meanBedHeight, bedHeightLabel, location ); + resultData.addRow(km, flowDepth, flowDepthTkh, tkh, wst, discharge, wstLabel, gaugeLabel, meanBedHeight, + bedHeightLabel, location); } return resultData; } + private Gauge findGauge(final WaterlevelData waterlevel, final Gauge refGauge, final GaugeIndex gaugeIndex, + final double km) { + + // REMARK: using same logic as in WaterlevelExporter here + + final boolean showAllGauges = waterlevel.isShowAllGauges(); + + if (showAllGauges) + return gaugeIndex.findGauge(km); + + if (refGauge.getRange().contains(km)) + return refGauge; + + return null; + } + + /* Checks if the discretisation of the waterlevel exceeds 1000m */ + private void checkWaterlevelDiscretisation(final WKms wstKms, final Calculation problems) { + final int size = wstKms.size(); + for (int i = 0; i < size - 2; i++) { + final double kmPrev = wstKms.getKm(i); + final double kmNext = wstKms.getKm(i + 1); + + if (Math.abs(kmPrev - kmNext) > 1) { + final String label = wstKms.getName(); + + final String message = Resources.getMsg(this.context.getMeta(), + "sinfo_calc_flow_depth.warning.waterlevel_discretisation", null, label); + problems.addProblem(kmPrev, message); + } + } + } + private BedHeight loadBedHeight(final String soundingId, final double from, final double to) { // FIXME: absolutely unbelievable.... - // The way how bed-heights (and other data too) is accessed is different for nearly ever calculation-type throughout flys. + // The way how bed-heights (and other data too) is accessed is different for nearly ever calculation-type + // throughout flys. // The knowledge on how to parse the datacage-ids is spread through the complete code-base... - // We use here the way on how bed-heights are accessed by the BedDifferenceAccess/BedDifferenceCalculation, but this is plain random + // We use here the way on how bed-heights are accessed by the BedDifferenceAccess/BedDifferenceCalculation, but + // this is plain random final String[] parts = soundingId.split(";"); final BedHeightsArtifact artifact = (BedHeightsArtifact) RiverUtils.getArtifact(parts[0], this.context); final Integer bedheightId = artifact.getDataAsInteger("height_id"); - // FIXME: this only works with type 'single'; unclear on how to distinguish from epoch data (or whatever the other type means) + // FIXME: this only works with type 'single'; unclear on how to distinguish from epoch data (or whatever the + // other type means) // Luckily, the requirement is to only access 'single' data here. // final String bedheightType = artifact.getDataAsString("type"); // FIXME: BedDifferences uses this, but we also need the metadata of the BedHeight - // FIXME: second absolutely awful thing: BedHeight is a hibernate binding class, accessing the database via hibernate stuff + // FIXME: second absolutely awful thing: BedHeight is a hibernate binding class, accessing the database via + // hibernate stuff // BedHeightFactory uses its own (direct) way of accessing the data, with its own implemented data classes. - //return BedHeightFactory.getHeight(bedheightType, bedheightId, from, to); + // return BedHeightFactory.getHeight(bedheightType, bedheightId, from, to); return BedHeight.getBedHeightById(bedheightId); }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculationResults.java Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculationResults.java Fri Feb 09 16:11:47 2018 +0100 @@ -1,6 +1,6 @@ /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde - * Software engineering by - * Björnsen Beratende Ingenieure GmbH + * Software engineering by + * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) @@ -17,61 +17,61 @@ /** * @author Gernot Belger - * */ -public final class FlowDepthCalculationResults{ - private final List<FlowDepthCalculationResult> results = new ArrayList<>(); +public final class FlowDepthCalculationResults { + private final List<FlowDepthCalculationResult> results = new ArrayList<>(); - private final River river; - - private final double from; - - private final double to; - - private final boolean useTkh; + private final River river; + + private final double from; + + private final double to; + + private final boolean useTkh; private final String calcModeLabel; private final String user; - public FlowDepthCalculationResults(final String calcModeLabel, final String user, final River river, final double from, final double to, final boolean useTkh) { - this.calcModeLabel = calcModeLabel; + public FlowDepthCalculationResults(final String calcModeLabel, final String user, final River river, + final double from, final double to, final boolean useTkh) { + this.calcModeLabel = calcModeLabel; this.user = user; this.river = river; - this.from = from; - this.to = to; - this.useTkh = useTkh; - } - - public String getCalcModeLabel() { + this.from = from; + this.to = to; + this.useTkh = useTkh; + } + + public String getCalcModeLabel() { return this.calcModeLabel; } - - public String getUser() { + + public String getUser() { return this.user; } - - public River getRiver() { - return this.river; - } - - public double getFrom() { - return this.from; - } - public double getTo() { - return this.to; - } + public River getRiver() { + return this.river; + } - public boolean isUseTkh() { - return this.useTkh; - } - - void addResult(final FlowDepthCalculationResult result) { - results.add(result); - } - - public List<FlowDepthCalculationResult> getResults() { - return Collections.unmodifiableList(results); - } + public double getFrom() { + return this.from; + } + + public double getTo() { + return this.to; + } + + public boolean isUseTkh() { + return this.useTkh; + } + + void addResult(final FlowDepthCalculationResult result) { + this.results.add(result); + } + + public List<FlowDepthCalculationResult> getResults() { + return Collections.unmodifiableList(this.results); + } }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java Fri Feb 09 16:11:47 2018 +0100 @@ -28,6 +28,7 @@ import org.dive4elements.river.exports.AbstractExporter; import org.dive4elements.river.model.River; import org.dive4elements.river.model.Unit; +import org.dive4elements.river.utils.RiverUtils; import au.com.bytecode.opencsv.CSVWriter; import net.sf.jasperreports.engine.JRDataSource; @@ -87,6 +88,8 @@ private static final String CSV_META_HEADER_SOUNDING_TYPE = "sinfo.export.flow_depth.csv.meta.header.sounding.type"; + private static final String CSV_META_HEADER_SOUNDING_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.sounding.evaluator"; + private static final String CSV_META_HEADER_SOUNDING_PRJ = "sinfo.export.flow_depth.csv.meta.header.sounding.prj"; private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel"; @@ -97,7 +100,6 @@ private static final String CSV_META_HEADER_WATERLEVEL_NAME = "sinfo.export.flow_depth.csv.meta.header.waterlevel.name"; - private static final String CSV_META_HEADER_WATERLEVEL_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator"; private static final String CSV_META_HEADER_WATERLEVEL_GAUGE = "sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge"; @@ -175,6 +177,8 @@ writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_YEAR, Integer.toString(sounding.getYear())); // "# Aufnahmeart: " writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_TYPE, sounding.getType()); + // "# Auswerter: " + writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_EVALUATOR, sounding.getEvaluationBy()); // "# Lagesystem: " writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_PRJ, sounding.getLocationSystem()); // "# Höhensystem: " @@ -187,8 +191,6 @@ writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL); // "# Bezeichnung der Wasserspiegellage: " writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel()); - // "# Auswerter: " - writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_EVALUATOR, wst.getSource()); // "# Bezugspegel: " writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge()); // "# Jahr/Zeitraum der Wasserspiegellage: " @@ -303,7 +305,10 @@ if( Double.isNaN(discharge)) lines.add(StringUtils.EMPTY); else - lines.add(getQFormatter().format(discharge)); + { + final double roundedDischarge = RiverUtils.roundQ(discharge); + lines.add(getQFormatter().format(roundedDischarge)); + } // Bezeichnung lines.add(row.getWaterlevelLabel());
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/WstInfo.java Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/WstInfo.java Fri Feb 09 16:11:47 2018 +0100 @@ -16,13 +16,11 @@ private final String label; private final int year; - private final String source; private final String gauge; - public WstInfo(final String label, final int year, final String source, final String gauge) { + public WstInfo(final String label, final int year, final String gauge) { this.label = label; this.year = year; - this.source = source; this.gauge = gauge; } @@ -34,10 +32,6 @@ return this.year; } - public String getSource() { - return this.source; - } - public String getGauge() { return this.gauge; }
--- a/artifacts/src/main/resources/messages.properties Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/resources/messages.properties Fri Feb 09 16:11:47 2018 +0100 @@ -770,6 +770,9 @@ state.sinfo.calculation_mode=Calculation Mode sinfo_calc_flow_depth=Flie\u00dftiefen +sinfo_calc_flow_depth.warning.missingQ = {0}: keine Abflussdaten vorhanden, Transportk\u00f6rperh\u00f6henberechnung nicht m\u00f6glich +sinfo_calc_flow_depth.warning.waterlevel_discretisation = Wasserspiegel {0}: r\u00e4umliche Aufl\u00f6sung betr\u00e4gt mehr als 1000m + sinfo_calc_flow_depth_development=Flie\u00dftiefenentwicklung sinfo_calc_flow_depth_minmax=Minimale und Maximale Flie\u00dftiefe sinfo_calc_grounding=Grundber\u00fchrungen @@ -806,12 +809,12 @@ sinfo.export.flow_depth.csv.meta.header.sounding = ##METADATEN PEILUNG sinfo.export.flow_depth.csv.meta.header.sounding.year = # Jahr der Peilung: {0} sinfo.export.flow_depth.csv.meta.header.sounding.type = # Aufnahmeart: {0} +sinfo.export.flow_depth.csv.meta.header.sounding.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.sounding.prj = # Lagesystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel = # H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} -sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0} sinfo.export.flow_depth.csv.meta.range = # {0}: {1} - {2}
--- a/artifacts/src/main/resources/messages_de.properties Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/resources/messages_de.properties Fri Feb 09 16:11:47 2018 +0100 @@ -776,6 +776,9 @@ state.sinfo.calculation_mode=Berechnungsart sinfo_calc_flow_depth=Flie\u00dftiefen +sinfo_calc_flow_depth.warning.missingQ = {0}: keine Abflussdaten vorhanden, Transportk\u00f6rperh\u00f6henberechnung nicht m\u00f6glich +sinfo_calc_flow_depth.warning.waterlevel_discretisation = Wasserspiegel {0}: r\u00e4umliche Aufl\u00f6sung betr\u00e4gt mehr als 1000m + sinfo_calc_flow_depth_development=Flie\u00dftiefenentwicklung sinfo_calc_flow_depth_minmax=Minimale und Maximale Flie\u00dftiefe sinfo_calc_grounding=Grundber\u00fchrungen @@ -812,12 +815,12 @@ sinfo.export.flow_depth.csv.meta.header.sounding = ##METADATEN PEILUNG sinfo.export.flow_depth.csv.meta.header.sounding.year = # Jahr der Peilung: {0} sinfo.export.flow_depth.csv.meta.header.sounding.type = # Aufnahmeart: {0} +sinfo.export.flow_depth.csv.meta.header.sounding.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.sounding.prj = # Lagesystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel = # H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} -sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0} sinfo.export.flow_depth.csv.meta.range = # {0}: {1} - {2}
--- a/artifacts/src/main/resources/messages_de_DE.properties Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/resources/messages_de_DE.properties Fri Feb 09 16:11:47 2018 +0100 @@ -772,6 +772,9 @@ state.sinfo.calculation_mode=Berechnungsart sinfo_calc_flow_depth=Flie\u00dftiefen +sinfo_calc_flow_depth.warning.missingQ = {0}: keine Abflussdaten vorhanden, Transportk\u00f6rperh\u00f6henberechnung nicht m\u00f6glich +sinfo_calc_flow_depth.warning.waterlevel_discretisation = Wasserspiegel {0}: r\u00e4umliche Aufl\u00f6sung betr\u00e4gt mehr als 1000m + sinfo_calc_flow_depth_development=Flie\u00dftiefenentwicklung sinfo_calc_flow_depth_minmax=Minimale und Maximale Flie\u00dftiefe sinfo_calc_grounding=Grundber\u00fchrungen @@ -808,12 +811,12 @@ sinfo.export.flow_depth.csv.meta.header.sounding = ##METADATEN PEILUNG sinfo.export.flow_depth.csv.meta.header.sounding.year = # Jahr der Peilung: {0} sinfo.export.flow_depth.csv.meta.header.sounding.type = # Aufnahmeart: {0} +sinfo.export.flow_depth.csv.meta.header.sounding.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.sounding.prj = # Lagesystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel = # H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} -sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0} sinfo.export.flow_depth.csv.meta.range = # {0}: {1} - {2}
--- a/artifacts/src/main/resources/messages_en.properties Fri Feb 09 16:11:34 2018 +0100 +++ b/artifacts/src/main/resources/messages_en.properties Fri Feb 09 16:11:47 2018 +0100 @@ -771,6 +771,9 @@ state.sinfo.calculation_mode=Calculation Mode sinfo_calc_flow_depth=Flie\u00dftiefen +sinfo_calc_flow_depth.warning.missingQ = {0}: keine Abflussdaten vorhanden, Transportk\u00f6rperh\u00f6henberechnung nicht m\u00f6glich +sinfo_calc_flow_depth.warning.waterlevel_discretisation = Wasserspiegel {0}: r\u00e4umliche Aufl\u00f6sung betr\u00e4gt mehr als 1000m + sinfo_calc_flow_depth_development=Flie\u00dftiefenentwicklung sinfo_calc_flow_depth_minmax=Minimale und Maximale Flie\u00dftiefe sinfo_calc_grounding=Grundber\u00fchrungen @@ -807,12 +810,12 @@ sinfo.export.flow_depth.csv.meta.header.sounding = ##METADATEN PEILUNG sinfo.export.flow_depth.csv.meta.header.sounding.year = # Jahr der Peilung: {0} sinfo.export.flow_depth.csv.meta.header.sounding.type = # Aufnahmeart: {0} +sinfo.export.flow_depth.csv.meta.header.sounding.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.sounding.prj = # Lagesystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel = # H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} -sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0} sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0} sinfo.export.flow_depth.csv.meta.range = # {0}: {1} - {2}