changeset 9434:3a5570407f06

Merge
author gernotbelger
date Mon, 20 Aug 2018 10:17:00 +0200
parents 6edf40250730 (current diff) d194c5b24bf8 (diff)
children af872dab1a0a
files artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/LoadScenarioSelectLimit5.java
diffstat 37 files changed, 1692 insertions(+), 964 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/conf/artifacts/bundu.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/artifacts/bundu.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -2,305 +2,305 @@
 <artifact name="bundu">
   <states>
     <state id="state.bundu.river" description="state.bundu.river" helpText="help.state.bundu.river" state="org.dive4elements.river.artifacts.states.RiverSelect">
-      <data name="river" type="String" />
+      <data name="river" type="String"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.river" />
-      <to state="state.bundu.calculation.mode" />
+      <from state="state.bundu.river"/>
+      <to state="state.bundu.calculation.mode"/>
     </transition>
 
     <state id="state.bundu.calculation.mode" helpText="help.state.bundu.calculation_mode" description="state.bundu.calculation.mode" state="org.dive4elements.river.artifacts.bundu.CalculationSelectBundu">
-      <data name="calculation_mode" type="String" />
+      <data name="calculation_mode" type="String"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.calculation.mode" />
-      <to state="state.bundu.location" />
-      <condition data="calculation_mode" value="bundu_analysis" operator="equal" />
+      <from state="state.bundu.calculation.mode"/>
+      <to state="state.bundu.location"/>
+      <condition data="calculation_mode" value="bundu_analysis" operator="equal"/>
     </transition>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.calculation.mode" />
-      <to state="state.bundu.location" />
-      <condition data="calculation_mode" value="bundu_vollmer" operator="equal" />
+      <from state="state.bundu.calculation.mode"/>
+      <to state="state.bundu.location"/>
+      <condition data="calculation_mode" value="bundu_vollmer" operator="equal"/>
     </transition>
 
     <state id="state.bundu.location" description="state.bundu.location" helpText="help.state.fix.location" state="org.dive4elements.river.artifacts.states.fixation.LocationSelect">
-      <data name="ld_from" type="Double" />
-      <data name="ld_to" type="Double" />
-      <data name="ld_step" type="Double" />
+      <data name="ld_from" type="Double"/>
+      <data name="ld_to" type="Double"/>
+      <data name="ld_step" type="Double"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.location" />
-      <to state="state.bundu.period" />
-      <condition data="calculation_mode" value="bundu_vollmer" operator="equal" />
+      <from state="state.bundu.location"/>
+      <to state="state.bundu.period"/>
+      <condition data="calculation_mode" value="bundu_vollmer" operator="equal"/>
     </transition>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.location" />
-      <to state="state.bundu.period" />
-      <condition data="calculation_mode" value="bundu_analysis" operator="equal" />
+      <from state="state.bundu.location"/>
+      <to state="state.bundu.period"/>
+      <condition data="calculation_mode" value="bundu_analysis" operator="equal"/>
     </transition>
 
     <state id="state.bundu.period" description="state.bundu.period" helpText="help.state.fix.period" state="org.dive4elements.river.artifacts.states.fixation.FixationPeriod">
-      <data name="start" type="Long" />
-      <data name="end" type="Long" />
+      <data name="start" type="Long"/>
+      <data name="end" type="Long"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.period" />
-      <to state="state.bundu.gaugerange" />
+      <from state="state.bundu.period"/>
+      <to state="state.bundu.gaugerange"/>
     </transition>
 
     <state id="state.bundu.gaugerange" description="state.bundu.gaugerange" helpText="help.state.fix.gaugerange" state="org.dive4elements.river.artifacts.states.fixation.GaugeRange">
-      <data name="q1" type="Integer" />
-      <data name="q2" type="Integer" />
+      <data name="q1" type="Integer"/>
+      <data name="q2" type="Integer"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.gaugerange" />
-      <to state="state.bundu.eventselect" />
+      <from state="state.bundu.gaugerange"/>
+      <to state="state.bundu.eventselect"/>
     </transition>
 
     <state id="state.bundu.eventselect" description="state.bundu.eventselect" helpText="help.state.fix.eventselect" state="org.dive4elements.river.artifacts.states.fixation.EventSelect">
-      <data name="events" type="intarray" />
+      <data name="events" type="intarray"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.eventselect" />
-      <to state="state.bundu.analysis.referenceperiod" />
-      <condition data="calculation_mode" value="bundu_analysis" operator="equal" />
+      <from state="state.bundu.eventselect"/>
+      <to state="state.bundu.analysis.referenceperiod"/>
+      <condition data="calculation_mode" value="bundu_analysis" operator="equal"/>
     </transition>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.eventselect" />
-      <to state="state.bundu.vollmer.function" />
-      <condition data="calculation_mode" value="bundu_vollmer" operator="equal" />
+      <from state="state.bundu.eventselect"/>
+      <to state="state.bundu.vollmer.function"/>
+      <condition data="calculation_mode" value="bundu_vollmer" operator="equal"/>
     </transition>
 
     <state id="state.bundu.analysis.referenceperiod" helpText="help.state.fix.analysis.referenceperiod" description="state.bundu.analysis.referenceperiod" state="org.dive4elements.river.artifacts.states.fixation.ReferencePeriod">
-      <data name="ref_start" type="Long" />
-      <data name="ref_end" type="Long" />
-    </state>
-
-    <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.analysis.referenceperiod" />
-      <to state="state.bundu.analysis.analysisperiods" />
-    </transition>
-
-    <state id="state.bundu.analysis.analysisperiods" helpText="help.state.fix.analysis.analysisperiods" description="state.bundu.analysis.analysisperiods" state="org.dive4elements.river.artifacts.states.fixation.AnalysisPeriods">
-      <data name="ana_data" type="String" />
+      <data name="ref_start" type="Long"/>
+      <data name="ref_end" type="Long"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.analysis.analysisperiods" />
-      <to state="state.bundu.analysis.function" />
+      <from state="state.bundu.analysis.referenceperiod"/>
+      <to state="state.bundu.analysis.analysisperiods"/>
     </transition>
 
-    <state id="state.bundu.analysis.function" helpText="help.state.fix.analysis.function" description="state.bundu.analysis.function" state="org.dive4elements.river.artifacts.states.fixation.FunctionSelect">
-      <data name="function" type="String" />
+    <state id="state.bundu.analysis.analysisperiods" helpText="help.state.fix.analysis.analysisperiods" description="state.bundu.analysis.analysisperiods" state="org.dive4elements.river.artifacts.states.fixation.AnalysisPeriods">
+      <data name="ana_data" type="String"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.analysis.function" />
-      <to state="state.bundu.analysis.preprocessing" />
+      <from state="state.bundu.analysis.analysisperiods"/>
+      <to state="state.bundu.analysis.function"/>
+    </transition>
+
+    <state id="state.bundu.analysis.function" helpText="help.state.fix.analysis.function" description="state.bundu.analysis.function" state="org.dive4elements.river.artifacts.states.fixation.FunctionSelect">
+      <data name="function" type="String"/>
+    </state>
+
+    <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
+      <from state="state.bundu.analysis.function"/>
+      <to state="state.bundu.analysis.preprocessing"/>
     </transition>
 
     <state id="state.bundu.analysis.preprocessing" helpText="help.state.fix.analysis.preprocessing" description="state.bundu.analysis.preprocessing" state="org.dive4elements.river.artifacts.states.fixation.PreprocessingSelect">
-      <data name="preprocessing" type="Boolean" />
+      <data name="preprocessing" type="Boolean"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.analysis.preprocessing" />
-      <to state="state.bundu.analysis.compute" />
+      <from state="state.bundu.analysis.preprocessing"/>
+      <to state="state.bundu.analysis.compute"/>
     </transition>
 
     <state id="state.bundu.analysis.compute" helpText="help.state.fix.analysis.compute" description="state.bundu.analysis.compute" state="org.dive4elements.river.artifacts.states.fixation.FixAnalysisCompute">
       <outputmodes>
         <outputmode name="fix_deltawt_export" description="output.fix_deltawt_export" mine-type="text/plain" type="export">
           <facets>
-            <facet name="csv" description="facet.fix_deltawt.csv" />
-            <facet name="pdf" description="facet.waterlevel_export.pdf" />
+            <facet name="csv" description="facet.fix_deltawt.csv"/>
+            <facet name="pdf" description="facet.waterlevel_export.pdf"/>
           </facets>
         </outputmode>
         <outputmode name="fix_parameters_export" description="output.fix_parameters_export" mine-type="text/plain" type="export">
           <facets>
-            <facet name="fix_parameters" description="facet.fix_parameters.csv" />
+            <facet name="fix_parameters" description="facet.fix_parameters.csv"/>
           </facets>
         </outputmode>
         <outputmode name="fix_wq_curve_at_export" description="output.fix_wq_curve_at_export" mime-type="text/plain" type="export">
           <facets>
-            <facet name="at" description="facet.fix_wq_curve_export.at" />
+            <facet name="at" description="facet.fix_wq_curve_export.at"/>
           </facets>
         </outputmode>
         <outputmode name="fix_wq_curve" description="output.fix_wq_curve" mine-type="image/png" type="chart">
           <facets>
-            <facet name="fix_sector_average_wq_0" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_wq_1" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_wq_2" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_wq_3" description="Average values for Ws in Q sectors." />
-            <facet name="fix_analysis_events_wq" description="Raw event values used in the calculation" />
-            <facet name="fix_reference_events_wq" description="Raw event values used in the calculation" />
-            <facet name="fix_wq_curve" description="WQ curve" />
-            <facet name="qsectors" description="qsectors." />
-            <facet name="other.wqkms.q" description="W-Type of data" />
-            <facet name="other.wqkms.w" description="W-Type of data" />
-            <facet name="other.wkms" description="facet.other.wkms" />
-            <facet name="other.wkms.marks" description="facet.other.wkms.makrs" />
-            <facet name="other.wqkms" description="facet.other.wqkms" />
-            <facet name="longitudinal_section.w" description="facet.longitudinal_section.w" />
-            <facet name="other.wq" description="Point-like data like fixations" />
-            <facet name="heightmarks_points" description="facet.other.wkms.heightmarks_points" />
-            <facet name="discharge_curve.curve" description="facet.discharge_curve.curve" />
-            <facet name="fix_wq_curve.manualpoints" description="Manual points" />
-            <facet name="mainvalues.q" description="mainvalues.q" />
-            <facet name="mainvalues.w" description="mainvalues.w" />
+            <facet name="fix_sector_average_wq_0" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_wq_1" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_wq_2" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_wq_3" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_analysis_events_wq" description="Raw event values used in the calculation"/>
+            <facet name="fix_reference_events_wq" description="Raw event values used in the calculation"/>
+            <facet name="fix_wq_curve" description="WQ curve"/>
+            <facet name="qsectors" description="qsectors."/>
+            <facet name="other.wqkms.q" description="W-Type of data"/>
+            <facet name="other.wqkms.w" description="W-Type of data"/>
+            <facet name="other.wkms" description="facet.other.wkms"/>
+            <facet name="other.wkms.marks" description="facet.other.wkms.makrs"/>
+            <facet name="other.wqkms" description="facet.other.wqkms"/>
+            <facet name="longitudinal_section.w" description="facet.longitudinal_section.w"/>
+            <facet name="other.wq" description="Point-like data like fixations"/>
+            <facet name="heightmarks_points" description="facet.other.wkms.heightmarks_points"/>
+            <facet name="discharge_curve.curve" description="facet.discharge_curve.curve"/>
+            <facet name="fix_wq_curve.manualpoints" description="Manual points"/>
+            <facet name="mainvalues.q" description="mainvalues.q"/>
+            <facet name="mainvalues.w" description="mainvalues.w"/>
           </facets>
         </outputmode>
         <outputmode name="fix_deltawt_curve" description="output.fix_deltawt_curve" mine-type="image/png" type="chart">
           <facets>
-            <facet name="fix_sector_average_dwt_0" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_dwt_1" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_dwt_2" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_dwt_3" description="Average values for Ws in Q sectors." />
-            <facet name="fix_analysis_events_dwt" description="Raw event values used in the calculation" />
-            <facet name="fix_reference_events_dwt" description="Raw event values used in the calculation" />
-            <facet name="fix_analysis_periods_dwt" description="Dateranges of analysis periods." />
-            <facet name="fix_deviation_dwt" description="The standard variance" />
-            <facet name="fix_deltawt_curve.manualpoints" description="Manual points" />
-            <facet name="fix_reference_period_dwt" description="Reference period" />
+            <facet name="fix_sector_average_dwt_0" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_dwt_1" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_dwt_2" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_dwt_3" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_analysis_events_dwt" description="Raw event values used in the calculation"/>
+            <facet name="fix_reference_events_dwt" description="Raw event values used in the calculation"/>
+            <facet name="fix_analysis_periods_dwt" description="Dateranges of analysis periods."/>
+            <facet name="fix_deviation_dwt" description="The standard variance"/>
+            <facet name="fix_deltawt_curve.manualpoints" description="Manual points"/>
+            <facet name="fix_reference_period_dwt" description="Reference period"/>
           </facets>
         </outputmode>
         <outputmode name="fix_longitudinal_section_curve" description="output.fix_longitudinal_section_curve" mine-type="image/png" type="chart">
           <facets>
-            <facet name="fix_sector_average_ls_0" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_1" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_2" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_3" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_deviation_0" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_deviation_1" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_deviation_2" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_ls_deviation_3" description="Average values for Ws in Q sectors." />
-            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />
-            <facet name="fix_deviation_ls" description="The standard variance" />
-            <facet name="fix_analysis_events_ls" description="Average values for Ws in Q sectors." />
-            <facet name="fix_reference_events_ls" description="Average values for Ws in Q sectors." />
-            <facet name="fix_longitudinal_section_curve.manualpoints" description="Manual points" />
-            <facet name="other.wqkms.q" description="W-Type of data" />
-            <facet name="other.wqkms.w" description="W-Type of data" />
+            <facet name="fix_sector_average_ls_0" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_1" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_2" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_3" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_deviation_0" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_deviation_1" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_deviation_2" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_ls_deviation_3" description="Average values for Ws in Q sectors."/>
+            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations"/>
+            <facet name="fix_deviation_ls" description="The standard variance"/>
+            <facet name="fix_analysis_events_ls" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_reference_events_ls" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_longitudinal_section_curve.manualpoints" description="Manual points"/>
+            <facet name="other.wqkms.q" description="W-Type of data"/>
+            <facet name="other.wqkms.w" description="W-Type of data"/>
           </facets>
         </outputmode>
         <outputmode name="fix_derivate_curve" description="output.fix_derivate_curve" mine-type="image/png" type="chart">
           <facets>
-            <facet name="fix_derivate_curve" description="Derivate curve" />
-            <facet name="fix_derivate_curve.manualpoints" description="Manual points" />
+            <facet name="fix_derivate_curve" description="Derivate curve"/>
+            <facet name="fix_derivate_curve.manualpoints" description="Manual points"/>
           </facets>
         </outputmode>
         <outputmode name="fix_report" description="output.fix_report.report" mime-type="text/plain" type="report">
           <facets>
-            <facet name="report" description="facet.fix.report" />
+            <facet name="report" description="facet.fix.report"/>
           </facets>
         </outputmode>
       </outputmodes>
     </state>
 
     <state id="state.bundu.vollmer.function" helpText="help.state.fix.vollmer.function" description="state.bundu.vollmer.function" state="org.dive4elements.river.artifacts.states.fixation.FunctionSelect">
-      <data name="function" type="String" />
+      <data name="function" type="String"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.vollmer.function" />
-      <to state="state.bundu.vollmer.preprocessing" />
+      <from state="state.bundu.vollmer.function"/>
+      <to state="state.bundu.vollmer.preprocessing"/>
     </transition>
 
     <state id="state.bundu.vollmer.preprocessing" helpText="help.state.fix.vollmer.preprocessing" description="state.bundu.vollmer.preprocessing" state="org.dive4elements.river.artifacts.states.fixation.PreprocessingSelect">
-      <data name="preprocessing" type="Boolean" />
+      <data name="preprocessing" type="Boolean"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.vollmer.preprocessing" />
-      <to state="state.bundu.vollmer.qs" />
+      <from state="state.bundu.vollmer.preprocessing"/>
+      <to state="state.bundu.vollmer.qs"/>
     </transition>
 
     <state id="state.bundu.vollmer.qs" description="state.bundu.vollmer.qs" helpText="help.state.fix.vollmer.qs" state="org.dive4elements.river.artifacts.states.WQFixing">
-      <data name="wq_isq" type="String" />
-      <data name="wq_values" type="WQTriple" />
+      <data name="wq_isq" type="String"/>
+      <data name="wq_values" type="WQTriple"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
-      <from state="state.bundu.vollmer.qs" />
-      <to state="state.bundu.vollmer.compute" />
+      <from state="state.bundu.vollmer.qs"/>
+      <to state="state.bundu.vollmer.compute"/>
     </transition>
 
     <state id="state.bundu.vollmer.compute" helpText="help.state.fix.vollmer.compute" description="state.bundu.vollmer.compute" state="org.dive4elements.river.artifacts.states.fixation.FixRealizingCompute">
       <outputmodes>
         <outputmode name="longitudinal_section" description="output.longitudinal_section" mime-type="image/png" type="chart">
           <facets>
-            <facet name="longitudinal_section.w" description="facet.longitudinal_section.w" />
-            <facet name="longitudinal_section.q" description="facet.longitudinal_section.q" />
-            <facet name="w_differences" description="facet.w_differences" />
-            <facet name="other.wkms" description="facet.other.wkms" />
-            <facet name="other.wq" description="WQ-Type of data" />
-            <facet name="other.wqkms" description="facet.other.wqkms" />
-            <facet name="other.wqkms.q" description="W-Type of data" />
-            <facet name="other.wqkms.w" description="W-Type of data" />
-            <facet name="heightmarks_points" description="facet.other.wkms.heightmarks_points" />
-            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />
-            <facet name="longitudinal_section.area" description="facet.longitudinal_section.area" />
-            <facet name="longitudinal_section.manualpoints" description="Manuelle Punkte" />
+            <facet name="longitudinal_section.w" description="facet.longitudinal_section.w"/>
+            <facet name="longitudinal_section.q" description="facet.longitudinal_section.q"/>
+            <facet name="w_differences" description="facet.w_differences"/>
+            <facet name="other.wkms" description="facet.other.wkms"/>
+            <facet name="other.wq" description="WQ-Type of data"/>
+            <facet name="other.wqkms" description="facet.other.wqkms"/>
+            <facet name="other.wqkms.q" description="W-Type of data"/>
+            <facet name="other.wqkms.w" description="W-Type of data"/>
+            <facet name="heightmarks_points" description="facet.other.wkms.heightmarks_points"/>
+            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations"/>
+            <facet name="longitudinal_section.area" description="facet.longitudinal_section.area"/>
+            <facet name="longitudinal_section.manualpoints" description="Manuelle Punkte"/>
           </facets>
         </outputmode>
         <outputmode name="fix_wq_curve" description="output.fix_wq_curve" mine-type="image/png" type="chart">
           <facets>
-            <facet name="fix_sector_average_wq_0" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_wq_1" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_wq_2" description="Average values for Ws in Q sectors." />
-            <facet name="fix_sector_average_wq_3" description="Average values for Ws in Q sectors." />
-            <facet name="fix_analysis_events_wq" description="Raw event values used in the calculation" />
-            <facet name="fix_wq_curve" description="WQ curve" />
-            <facet name="fix_wq_ls" description="WQ LS curve" />
-            <facet name="qsectors" description="qsectors." />
-            <facet name="fix_events_wqkms" description="WQKMS-Type of data" />
-            <facet name="other.wqkms.q" description="W-Type of data" />
-            <facet name="other.wqkms.w" description="W-Type of data" />
-            <facet name="other.wkms" description="facet.other.wqkms" />
-            <facet name="other.wqkms" description="facet.other.wqkms" />
+            <facet name="fix_sector_average_wq_0" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_wq_1" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_wq_2" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_sector_average_wq_3" description="Average values for Ws in Q sectors."/>
+            <facet name="fix_analysis_events_wq" description="Raw event values used in the calculation"/>
+            <facet name="fix_wq_curve" description="WQ curve"/>
+            <facet name="fix_wq_ls" description="WQ LS curve"/>
+            <facet name="qsectors" description="qsectors."/>
+            <facet name="fix_events_wqkms" description="WQKMS-Type of data"/>
+            <facet name="other.wqkms.q" description="W-Type of data"/>
+            <facet name="other.wqkms.w" description="W-Type of data"/>
+            <facet name="other.wkms" description="facet.other.wqkms"/>
+            <facet name="other.wqkms" description="facet.other.wqkms"/>
             <!--issue1383: facet name="longitudinal_section.w" description="facet.longitudinal_section.w"/ -->
-            <facet name="other.wq" description="Point-like data like fixations" />
-            <facet name="heightmarks_points" description="facet.other.wkms.heightmarks_points" />
-            <facet name="discharge_curve.curve" description="facet.discharge_curve.curve" />
-            <facet name="mainvalues.w" description="facet.fix_wq.mainvalues.w" />
-            <facet name="mainvalues.q" description="facet.fix_wq.mainvalues.q" />
+            <facet name="other.wq" description="Point-like data like fixations"/>
+            <facet name="heightmarks_points" description="facet.other.wkms.heightmarks_points"/>
+            <facet name="discharge_curve.curve" description="facet.discharge_curve.curve"/>
+            <facet name="mainvalues.w" description="facet.fix_wq.mainvalues.w"/>
+            <facet name="mainvalues.q" description="facet.fix_wq.mainvalues.q"/>
           </facets>
         </outputmode>
         <outputmode name="cross_section" description="output.cross_section" mime-type="image/png" type="chart">
           <facets>
-            <facet name="cross_section_water_line" description="facet.cross_section_water_line" />
-            <facet name="cross_section" description="facet.cross_section" />
-            <facet name="area" description="an area" />
-            <facet name="cross_section.area" description="an area" />
-            <facet name="cross_section.manualpoints" description="points" />
-            <facet name="cross_section.manualline" description="line" />
-            <facet name="hyk" description="hyks" />
+            <facet name="cross_section_water_line" description="facet.cross_section_water_line"/>
+            <facet name="cross_section" description="facet.cross_section"/>
+            <facet name="area" description="an area"/>
+            <facet name="cross_section.area" description="an area"/>
+            <facet name="cross_section.manualpoints" description="points"/>
+            <facet name="cross_section.manualline" description="line"/>
+            <facet name="hyk" description="hyks"/>
           </facets>
         </outputmode>
         <outputmode name="fix_wq_curve_at_export" description="output.fix_wq_curve_at_export" mime-type="text/plain" type="export">
           <facets>
-            <facet name="at" description="facet.fix_wq_curve_export.at" />
+            <facet name="at" description="facet.fix_wq_curve_export.at"/>
           </facets>
         </outputmode>
         <outputmode name="fix_waterlevel_export" description="output.fix_waterlevel_export" mine-type="text/plain" type="export">
           <facets>
-            <facet name="csv" description="facet.waterlevel_export.csv" />
-            <facet name="wst" description="facet.waterlevel_export.wst" />
-            <facet name="pdf" description="facet.waterlevel_export.pdf" />
+            <facet name="csv" description="facet.waterlevel_export.csv"/>
+            <facet name="wst" description="facet.waterlevel_export.wst"/>
+            <facet name="pdf" description="facet.waterlevel_export.pdf"/>
           </facets>
         </outputmode>
         <outputmode name="fix_report" description="output.fix_report.report" mime-type="text/plain" type="report">
           <facets>
-            <facet name="report" description="facet.fix.report" />
+            <facet name="report" description="facet.fix.report"/>
           </facets>
         </outputmode>
       </outputmodes>
@@ -320,200 +320,222 @@
     <!-- Bezugswasserstände bezugswst -->
     <!-- clone, otherwise conditions won't work -->
     <state id="state.bundu.wst.location" description="state.bundu.wst.location" helpText="help.state.bundu.wst.location" state="org.dive4elements.river.artifacts.states.fixation.LocationSelect">
-      <data name="ld_from" type="Double" />
-      <data name="ld_to" type="Double" />
-      <data name="ld_step" type="Double" />
+      <data name="ld_from" type="Double"/>
+      <data name="ld_to" type="Double"/>
+      <data name="ld_step" type="Double"/>
     </state>
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.calculation.mode" />
-      <to state="state.bundu.wst.location" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.calculation.mode"/>
+      <to state="state.bundu.wst.location"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.location" />
-      <to state="state.bundu.wst.yearselect" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.location"/>
+      <to state="state.bundu.wst.yearselect"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
 
     <state id="state.bundu.wst.yearselect" helpText="help.state.bundu.wst.yearselect" description="state.bundu.wst.yearselect" state="org.dive4elements.river.artifacts.bundu.bezugswst.FixationPeriod">
-      <data name="singleyear" type="String" />
-      <data name="events_temp" type="String" /> <!-- String. -->
+      <data name="singleyear" type="String"/>
+      <data name="events_temp" type="String"/> <!-- String. -->
     </state>
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.yearselect" />
-      <to state="state.bundu.wst.fixationchoice" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.yearselect"/>
+      <to state="state.bundu.wst.fixationchoice"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.fixationchoice" helpText="help.state.bundu.wst.fixationchoice" description="state.bundu.wst.fixationchoice" state="org.dive4elements.river.artifacts.bundu.bezugswst.FixationChoice">
-      <data name="fix_choice" type="String" />
-      <data name="q1" type="Integer" />
-      <data name="q2" type="Integer" /> <!-- necessary, because they will be set automatically -->
-      <data name="start" type="Long" /> <!--copy from Period, to fill it in LoadQSeriesSelectState (necessary for auto-select events) -->
-      <data name="end" type="Long" />
-      <data name="events" type="intarray" />
+      <data name="fix_choice" type="String"/>
+      <data name="q1" type="Integer"/>
+      <data name="q2" type="Integer"/> <!-- necessary, because they will be set automatically -->
+      <data name="start" type="Long"/> <!--copy from Period, to fill it in LoadQSeriesSelectState (necessary for auto-select events) -->
+      <data name="end" type="Long"/>
+      <data name="events" type="intarray"/>
     </state>
 
 
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.fixationchoice" />
-      <to state="state.bundu.wst.fix.load.year_length" />
-      <condition data="fix_choice" value="state.bundu.wst.fix.auto" operator="equal" />
+      <from state="state.bundu.wst.fixationchoice"/>
+      <to state="state.bundu.wst.fix.load.year_length"/>
+      <condition data="fix_choice" value="state.bundu.wst.fix.auto" operator="equal"/>
     </transition>
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.fixationchoice" />
-      <to state="state.bundu.wst.gaugerange" />
-      <condition data="fix_choice" value="state.bundu.wst.fix.manual" operator="equal" />
+      <from state="state.bundu.wst.fixationchoice"/>
+      <to state="state.bundu.wst.gaugerange"/>
+      <condition data="fix_choice" value="state.bundu.wst.fix.manual" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.gaugerange" description="state.bundu.wst.gaugerange" helpText="help.state.bundu.wst.gaugerange" state="org.dive4elements.river.artifacts.states.fixation.GaugeRange">
-      <data name="q1" type="Integer" />
-      <data name="q2" type="Integer" />
+      <data name="q1" type="Integer"/>
+      <data name="q2" type="Integer"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.gaugerange" />
-      <to state="state.bundu.wst.eventselect" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.gaugerange"/>
+      <to state="state.bundu.wst.eventselect"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <!-- clone; conditions... -->
     <state id="state.bundu.wst.eventselect" description="state.bundu.wst.eventselect" helpText="help.state.bundu.wst.eventselect" state="org.dive4elements.river.artifacts.states.fixation.EventSelect">
-      <data name="events" type="intarray" />
+      <data name="events" type="intarray"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.eventselect" />
-      <to state="state.bundu.wst.fix.load.year_length" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.eventselect"/>
+      <to state="state.bundu.wst.fix.load.year_length"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
 
     <state id="state.bundu.wst.fix.load.year_length" helpText="help.state.bundu.wst.fix.load.year_length" description="state.bundu.wst.fix.load.year_length" state="org.dive4elements.river.artifacts.bundu.bezugswst.LoadQSeriesSelectState">
-      <data name="year_input_q_series" type="String" />
+      <data name="year_input_q_series" type="String"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.fix.load.year_length" />
-      <to state="state.bundu.wst.qs" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.fix.load.year_length"/>
+      <to state="state.bundu.wst.qs"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.qs" description="state.bundu.wst.qs" helpText="help.state.bundu.wst.qs" state="org.dive4elements.river.artifacts.bundu.bezugswst.BunduWstWQFixing">
-      <data name="bundu.wst.mode" type="String" />
-      <data name="wq_values" type="WQTriple" />
-      <data name="bundu.wst.ud_value" type="Integer" />
+      <data name="bundu.wst.mode" type="String"/>
+      <data name="wq_values" type="WQTriple"/>
+      <data name="bundu.wst.ud_value" type="Integer"/>
     </state>
 
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.qs" />
-      <to state="state.bundu.wst.load.calc_choice" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.qs"/>
+      <to state="state.bundu.wst.load.calc_choice"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.load.calc_choice" helpText="help.state.bundu.wst.load.calc_choice" description="state.bundu.wst.load.calc_choice" state="org.dive4elements.river.artifacts.bundu.bezugswst.CalcChoice">
-      <data name="calc_choice" type="String" />
-      <data name="function" type="String" /> <!-- function, preprocessing will be set, if auto is selected -->
-      <data name="preprocessing" type="Boolean" />
+      <data name="calc_choice" type="String"/>
+      <data name="function" type="String"/> <!-- function, preprocessing will be set, if auto is selected -->
+      <data name="preprocessing" type="Boolean"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.calc_choice" />
-      <to state="state.bundu.wst.load.function" />
-      <condition data="calc_choice" value="state.bundu.wst.calc.manual" operator="equal" />
+      <from state="state.bundu.wst.load.calc_choice"/>
+      <to state="state.bundu.wst.load.function"/>
+      <condition data="calc_choice" value="state.bundu.wst.calc.manual" operator="equal"/>
     </transition>
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.calc_choice" />
-      <to state="state.bundu.wst.load.missing_volume" />
-      <condition data="calc_choice" value="state.bundu.wst.calc.auto" operator="equal" />
+      <from state="state.bundu.wst.load.calc_choice"/>
+      <to state="state.bundu.wst.load.missing_volume"/>
+      <condition data="calc_choice" value="state.bundu.wst.calc.auto" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.load.function" helpText="help.state.bundu.wst.function" description="state.bundu.wst.load.function" state="org.dive4elements.river.artifacts.states.fixation.FunctionSelect">
-      <data name="function" type="String" />
+      <data name="function" type="String"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.function" />
-      <to state="state.bundu.wst.load.preprocessing" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.load.function"/>
+      <to state="state.bundu.wst.load.preprocessing"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.load.preprocessing" helpText="help.state.bundu.wst.load.preprocessing" description="state.bundu.wst.load.preprocessing" state="org.dive4elements.river.artifacts.states.fixation.PreprocessingSelect">
-      <data name="preprocessing" type="Boolean" />
+      <data name="preprocessing" type="Boolean"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.preprocessing" />
-      <to state="state.bundu.wst.load.missing_volume" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.load.preprocessing"/>
+      <to state="state.bundu.wst.load.missing_volume"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.load.missing_volume" helpText="help.state.bundu.wst.load.missing_volume" description="state.bundu.wst.load.missing_volume" state="org.dive4elements.river.artifacts.bundu.bezugswst.MissingVolumeSelect">
-      <data name="missing_volume" type="Boolean" />
+      <data name="missing_volume" type="Boolean"/>
     </state>
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.missing_volume" />
-      <to state="state.bundu.wst.load.distance_only_part" />
-      <condition data="missing_volume" value="true" operator="equal" />
+      <from state="state.bundu.wst.load.missing_volume"/>
+      <to state="state.bundu.wst.load.distance_only_part"/>
+      <condition data="missing_volume" value="true" operator="equal"/>
     </transition>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.missing_volume" />
-      <to state="state.bundu.wst.soundings" />
-      <condition data="missing_volume" value="false" operator="equal" />
+      <from state="state.bundu.wst.load.missing_volume"/>
+      <to state="state.bundu.wst.soundings"/>
+      <condition data="missing_volume" value="false" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.load.distance_only_part" description="state.bundu.wst.load.distance_only_part" state="org.dive4elements.river.artifacts.bundu.bezugswst.DistanceOnlyPartMissVolumeSelect" helpText="help.state.bundu.wst.load.distance_only_part">
-      <data name="ld_from_part" type="Double" />
-      <data name="ld_to_part" type="Double" />
+      <data name="ld_from_part" type="Double"/>
+      <data name="ld_to_part" type="Double"/>
     </state>
 
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.load.distance_only_part" />
-      <to state="state.bundu.wst.soundings" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.load.distance_only_part"/>
+      <to state="state.bundu.wst.soundings"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
     <state id="state.bundu.wst.soundings" description="state.bundu.wst.soundings" state="org.dive4elements.river.artifacts.states.SoundingsSelectMultiple" helpText="help.state.bundu.wst.soundings">
-      <data name="soundings" type="multiattribute" />
+      <data name="soundings" type="multiattribute"/>
     </state>
 
     <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
-      <from state="state.bundu.wst.soundings" />
-      <to state="state.bundu.wst" />
-      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal" />
+      <from state="state.bundu.wst.soundings"/>
+      <to state="state.bundu.wst"/>
+      <condition data="calculation_mode" value="bundu_bezugswst" operator="equal"/>
     </transition>
 
 
 
     <state id="state.bundu.wst" helpText="help.state.bundu.wst" description="state.bundu.wst" state="org.dive4elements.river.artifacts.bundu.bezugswst.BezugswstState">
       <outputmodes>
-
+        <outputmode name="bundu_wspl_longitudinal_section" description="output.bundu_wspl_longitudinal_section" mime-type="image/png" type="chart">
+          <facets>
+            <facet name="bundu_facet_w" description="bundu_facet_w"/>
+            <facet name="bundu_facet_channelmin" description="bundu_facet_channelmin"/>
+            <facet name="bundu_facet_bedheight" description="bundu_facet_bedheight"/>
+            <facet name="longitudinal_section.q" description="longitudinal_section.q"/>
+            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations"/>
+            <facet name="longitudinal_section.area" description="facet.longitudinal_section.area"/>
+            <facet name="longitudinal_section.manualpoints" description="Manuelle Punkte"/>
+          </facets>
+        </outputmode>
+        <outputmode name="bundu_depth_longitudinal_section" description="output.bundu_depth_longitudinal_section" mime-type="image/png" type="chart">
+          <facets>
+            <facet name="bundu_facet_flowdepth.filtered" description="bundu_facet_flowdepth.filtered"/>
+            <facet name="bundu_facet_channeldepth" description="bundu_facet_channeldepth"/>
+            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations"/>
+            <facet name="longitudinal_section.area" description="facet.longitudinal_section.area"/>
+            <facet name="longitudinal_section.manualpoints" description="Manuelle Punkte"/>
+          </facets>
+        </outputmode>
         <outputmode name="bundu_wst_export" description="output.fix_waterlevel_export" mine-type="text/plain" type="export">
           <facets>
-            <facet name="csv" description="facet.waterlevel_export.csv" />
-            <facet name="pdf" description="facet.waterlevel_export.pdf" />
+            <facet name="csv" description="facet.waterlevel_export.csv"/>
+            <facet name="pdf" description="facet.waterlevel_export.pdf"/>
           </facets>
         </outputmode>
-
-
+        <outputmode name="bundu_wst_report" description="output.bundu_wst_report" mime-type="text/xml" type="report">
+          <facets>
+            <facet name="report" description="facet.bundu_wst_report" />
+          </facets>
+        </outputmode>
       </outputmodes>
     </state>
 
--- a/artifacts/doc/conf/generators/generators.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/generators/generators.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -82,4 +82,8 @@
   <output-generator names="uinfo_salix_line_report" class="org.dive4elements.river.exports.ReportGenerator" />
   <output-generator names="uinfo_vegetation_zones_export" class="org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZonesExporter" />
   <output-generator names="uinfo_vegetation_zones_report" class="org.dive4elements.river.exports.ReportGenerator" />
+
+  <!-- BUNDU -->
+  <output-generator names="bundu_wst_export" class="org.dive4elements.river.artifacts.bundu.bezugswst.BunduWstExporter" />
+  <output-generator names="bundu_wst_report" class="org.dive4elements.river.exports.ReportGenerator" />
 </output-generators>
\ No newline at end of file
--- a/artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -20,6 +20,7 @@
     <axis name="flowdepthDevelopmentPerYearAxis"/>
     <axis name="countAxis" include-zero="true" tick-units="integer"/>
     <axis name="durationAxis" include-zero="true"/>
+    <axis name="invertedDepthAxis" include-zero="true" inverted="true" />
 
     <domain-axis key="chart.longitudinal.section.xaxis.label" default="Fluss-Km" inverted="org.dive4elements.river.exports.IsKmUpEvaluator()">
         <arg expr="artifact.river"/>
@@ -74,4 +75,8 @@
     
     <!-- U-INFO -->
     <processor class="org.dive4elements.river.artifacts.uinfo.salix.SalixLineProcessor" axis="W"/>
+    
+    <!-- BUNDU -->
+    <processor class="org.dive4elements.river.artifacts.bundu.bezugswst.BezugswstHeightProcessor" axis="W"/>
+    <processor class="org.dive4elements.river.artifacts.bundu.bezugswst.BezugswstDepthProcessor" axis="invertedDepthAxis"/>
 </longitudinal-defaults>
\ No newline at end of file
--- a/artifacts/doc/conf/generators/longitudinal-diagrams.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/generators/longitudinal-diagrams.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -202,4 +202,30 @@
         </subtitle>
     </output-generator>
     
+    <output-generator
+        names="bundu_wspl_longitudinal_section,bundu_wspl_longitudinal_section_chartinfo"
+        class="org.dive4elements.river.exports.LongitudinalSectionGenerator2"
+        converter="org.dive4elements.river.exports.DiagramAttributes">
+        <title key="bundu.chart.wspl.section.title" default="Wasserstand (DEFAULT)"/>
+        &longitudinal-defaults;
+        <processor class="org.dive4elements.river.exports.process.ManualPointsProcessor"
+            axis="W"/>
+        <subtitle key="chart.w_differences.subtitle" default="-">
+            <arg expr="artifact.river"/>
+        </subtitle>
+    </output-generator>
+    
+    <output-generator
+        names="bundu_depth_longitudinal_section,bundu_depth_longitudinal_section_chartinfo"
+        class="org.dive4elements.river.exports.LongitudinalSectionGenerator2"
+        converter="org.dive4elements.river.exports.DiagramAttributes">
+        <title key="bundu.chart.depth.section.title" default="Fließtiefe (DEFAULT)"/>
+        &longitudinal-defaults;
+        <processor class="org.dive4elements.river.exports.process.ManualPointsProcessor"
+            axis="invertedDepthAxis"/>
+        <subtitle key="chart.w_differences.subtitle" default="-">
+            <arg expr="artifact.river"/>
+        </subtitle>
+    </output-generator>
+    
 </longitudinal-diagrams>
\ No newline at end of file
--- a/artifacts/doc/conf/themes.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/themes.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -14,219 +14,219 @@
         most specific mappings on top of the list. -->
     <mappings>
         <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ1)(\D.*)*" to="LongitudinalSectionW_HQ1_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ2)(\D.*)*" to="LongitudinalSectionW_HQ2_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ5)(\D.*)*" to="LongitudinalSectionW_HQ5_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ10)(\D.*)*" to="LongitudinalSectionW_HQ10_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ20)(\D.*)*" to="LongitudinalSectionW_HQ20_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ25)(\D.*)*" to="LongitudinalSectionW_HQ25_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ50)(\D.*)*" to="LongitudinalSectionW_HQ50_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ100)(\D.*)*" to="LongitudinalSectionW_HQ100_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ200)(\D.*)*" to="LongitudinalSectionW_HQ200_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ300)(\D.*)*" to="LongitudinalSectionW_HQ300_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ500)(\D.*)*" to="LongitudinalSectionW_HQ500_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQ1000)(\D.*)*" to="LongitudinalSectionW_HQ1000_Points" />
+            pattern=".*(HQ1)(\D.*)*" to="LongitudinalSectionW_HQ1_Points"/>
         <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HQExtrem)(\D.*)*" to="LongitudinalSectionW_HQExtrem_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-           pattern=".*(HQRZ)(\D.*)*" to="LongitudinalSectionW_HQRZ_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(HSQ)(\D.*)*" to="LongitudinalSectionW_HSQ_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(MHQ)(\D.*)*" to="LongitudinalSectionW_MHQ_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(MNQ)(\D.*)*" to="LongitudinalSectionW_MNQ_Points" />
-        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(MQ)(\D.*)*" to="LongitudinalSectionW_MQ_Points" />
+            pattern=".*(HQ2)(\D.*)*" to="LongitudinalSectionW_HQ2_Points"/>
         <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-            pattern=".*(NQ)(\D.*)*" to="LongitudinalSectionW_NQ_Points" />
+            pattern=".*(HQ5)(\D.*)*" to="LongitudinalSectionW_HQ5_Points"/>
         <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
-           to="LongitudinalSectionPoints" />
+            pattern=".*(HQ10)(\D.*)*" to="LongitudinalSectionW_HQ10_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ20)(\D.*)*" to="LongitudinalSectionW_HQ20_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ25)(\D.*)*" to="LongitudinalSectionW_HQ25_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ50)(\D.*)*" to="LongitudinalSectionW_HQ50_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ100)(\D.*)*" to="LongitudinalSectionW_HQ100_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ200)(\D.*)*" to="LongitudinalSectionW_HQ200_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ300)(\D.*)*" to="LongitudinalSectionW_HQ300_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ500)(\D.*)*" to="LongitudinalSectionW_HQ500_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQ1000)(\D.*)*" to="LongitudinalSectionW_HQ1000_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HQExtrem)(\D.*)*" to="LongitudinalSectionW_HQExtrem_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+           pattern=".*(HQRZ)(\D.*)*" to="LongitudinalSectionW_HQRZ_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(HSQ)(\D.*)*" to="LongitudinalSectionW_HSQ_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(MHQ)(\D.*)*" to="LongitudinalSectionW_MHQ_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(MNQ)(\D.*)*" to="LongitudinalSectionW_MNQ_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(MQ)(\D.*)*" to="LongitudinalSectionW_MQ_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+            pattern=".*(NQ)(\D.*)*" to="LongitudinalSectionW_NQ_Points"/>
+        <mapping from="longitudinal_section.w" masterAttr="ld_mode==location"
+           to="LongitudinalSectionPoints"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ1)(\D.*)*"
-           to="LongitudinalSectionW_HQ1" />
+           to="LongitudinalSectionW_HQ1"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ2)(\D.*)*"
-           to="LongitudinalSectionW_HQ2" />
+           to="LongitudinalSectionW_HQ2"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ5)(\D.*)*"
-            to="LongitudinalSectionW_HQ5" />
+            to="LongitudinalSectionW_HQ5"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ10)(\D.*)*"
-            to="LongitudinalSectionW_HQ10" />
+            to="LongitudinalSectionW_HQ10"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ20)(\D.*)*"
-            to="LongitudinalSectionW_HQ20" />
+            to="LongitudinalSectionW_HQ20"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ25)(\D.*)*"
-            to="LongitudinalSectionW_HQ25" />
+            to="LongitudinalSectionW_HQ25"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ50)(\D.*)*"
-            to="LongitudinalSectionW_HQ50" />
+            to="LongitudinalSectionW_HQ50"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ100)(\D.*)*"
-            to="LongitudinalSectionW_HQ100" />
+            to="LongitudinalSectionW_HQ100"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ200)(\D.*)*"
-            to="LongitudinalSectionW_HQ200" />
+            to="LongitudinalSectionW_HQ200"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ300)(\D.*)*"
-            to="LongitudinalSectionW_HQ300" />
+            to="LongitudinalSectionW_HQ300"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ500)(\D.*)*"
-            to="LongitudinalSectionW_HQ500" />
+            to="LongitudinalSectionW_HQ500"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQ1000)(\D.*)*"
-            to="LongitudinalSectionW_HQ1000" />
+            to="LongitudinalSectionW_HQ1000"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQExtrem)(\D.*)*"
-            to="LongitudinalSectionW_HQExtrem" />
+            to="LongitudinalSectionW_HQExtrem"/>
         <mapping from="longitudinal_section.w" pattern=".*(HQRZ)(\D.*)*"
-            to="LongitudinalSectionW_HQRZ" />
+            to="LongitudinalSectionW_HQRZ"/>
         <mapping from="longitudinal_section.w" pattern=".*(HSQ)(\D.*)*"
-            to="LongitudinalSectionW_HSQ" />
+            to="LongitudinalSectionW_HSQ"/>
         <mapping from="longitudinal_section.w" pattern=".*(MHQ)(\D.*)*"
-            to="LongitudinalSectionW_MHQ" />
+            to="LongitudinalSectionW_MHQ"/>
         <mapping from="longitudinal_section.w" pattern=".*(MNQ)(\D.*)*"
-            to="LongitudinalSectionW_MNQ" />
+            to="LongitudinalSectionW_MNQ"/>
         <mapping from="longitudinal_section.w" pattern=".*(MQ)(\D.*)*"
-            to="LongitudinalSectionW_MQ" />
+            to="LongitudinalSectionW_MQ"/>
         <mapping from="longitudinal_section.w" pattern=".*(NQ)(\D.*)*"
-            to="LongitudinalSectionW_NQ" />
-        <mapping from="longitudinal_section.w" to="LongitudinalSectionW" />
+            to="LongitudinalSectionW_NQ"/>
+        <mapping from="longitudinal_section.w" to="LongitudinalSectionW"/>
         <mapping from="longitudinal_section.q" pattern="(HQ1)(\D.*)*"
-            to="LongitudinalSectionQ_HQ1" />
+            to="LongitudinalSectionQ_HQ1"/>
         <mapping from="longitudinal_section.q" pattern="(HQ2)(\D.*)*"
-            to="LongitudinalSectionQ_HQ2" />
+            to="LongitudinalSectionQ_HQ2"/>
         <mapping from="longitudinal_section.q" pattern="(HQ5)(\D.*)*"
-            to="LongitudinalSectionQ_HQ5" />
+            to="LongitudinalSectionQ_HQ5"/>
         <mapping from="longitudinal_section.q" pattern="(HQ10)(\D.*)*"
-            to="LongitudinalSectionQ_HQ10" />
+            to="LongitudinalSectionQ_HQ10"/>
         <mapping from="longitudinal_section.q" pattern="(HQ20)(\D.*)*"
-            to="LongitudinalSectionQ_HQ20" />
+            to="LongitudinalSectionQ_HQ20"/>
         <mapping from="longitudinal_section.q" pattern="(HQ25)(\D.*)*"
-            to="LongitudinalSectionQ_HQ25" />
+            to="LongitudinalSectionQ_HQ25"/>
         <mapping from="longitudinal_section.q" pattern="(HQ50)(\D.*)*"
-            to="LongitudinalSectionQ_HQ50" />
+            to="LongitudinalSectionQ_HQ50"/>
         <mapping from="longitudinal_section.q" pattern="(HQ100)(\D.*)*"
-            to="LongitudinalSectionQ_HQ100" />
+            to="LongitudinalSectionQ_HQ100"/>
         <mapping from="longitudinal_section.q" pattern="(HQ200)(\D.*)*"
-            to="LongitudinalSectionQ_HQ200" />
+            to="LongitudinalSectionQ_HQ200"/>
         <mapping from="longitudinal_section.q" pattern="(HQ300)(\D.*)*"
-            to="LongitudinalSectionQ_HQ300" />
+            to="LongitudinalSectionQ_HQ300"/>
         <mapping from="longitudinal_section.q" pattern="(HQ500)(\D.*)*"
-            to="LongitudinalSectionQ_HQ500" />
+            to="LongitudinalSectionQ_HQ500"/>
         <mapping from="longitudinal_section.q" pattern="(HQ1000)(\D.*)*"
-            to="LongitudinalSectionQ_HQ1000" />
+            to="LongitudinalSectionQ_HQ1000"/>
         <mapping from="longitudinal_section.q" pattern="(HQExtrem)(\D.*)*"
-            to="LongitudinalSectionQ_HQExtrem" />
+            to="LongitudinalSectionQ_HQExtrem"/>
         <mapping from="longitudinal_section.q" pattern="(HQRZ)(\D.*)*"
-            to="LongitudinalSectionQ_HQRZ" />
+            to="LongitudinalSectionQ_HQRZ"/>
         <mapping from="longitudinal_section.q" pattern="(HSQ)(\D.*)*"
-            to="LongitudinalSectionQ_HSQ" />
+            to="LongitudinalSectionQ_HSQ"/>
         <mapping from="longitudinal_section.q" pattern="(MHQ)(\D.*)*"
-            to="LongitudinalSectionQ_MHQ" />
+            to="LongitudinalSectionQ_MHQ"/>
         <mapping from="longitudinal_section.q" pattern="(MNQ)(\D.*)*"
-            to="LongitudinalSectionQ_MNQ" />
+            to="LongitudinalSectionQ_MNQ"/>
         <mapping from="longitudinal_section.q" pattern="(MQ)(\D.*)*"
-            to="LongitudinalSectionQ_MQ" />
+            to="LongitudinalSectionQ_MQ"/>
         <mapping from="longitudinal_section.q" pattern="(NQ)(\D.*)*"
-            to="LongitudinalSectionQ_NQ" />
-        <mapping from="longitudinal_section.q" to="LongitudinalSection" />
-        <mapping from="discharge_longitudinal_section.q.infolding" to="LongitudinalSectionQInfolding" />
-        <mapping from="discharge_longitudinal_section.q.cutting" to="LongitudinalSectionQInfoldCut" />
+            to="LongitudinalSectionQ_NQ"/>
+        <mapping from="longitudinal_section.q" to="LongitudinalSection"/>
+        <mapping from="discharge_longitudinal_section.q.infolding" to="LongitudinalSectionQInfolding"/>
+        <mapping from="discharge_longitudinal_section.q.cutting" to="LongitudinalSectionQInfoldCut"/>
 
-        <mapping from="discharge_curve.curve" to="DischargeCurve" />
-        <mapping from="historical_discharge.historicalq" to="HistoricalDischargeCurveQ" />
-        <mapping from="historical_discharge.historicalq.diff" to="HistoricalDischargeCurveQDiff" />
-        <mapping from="historical_discharge.historicalw" to="HistoricalDischargeCurveW" />
-        <mapping from="historical_discharge.historicalw.diff" to="HistoricalDischargeCurveWDiff" />
-        <mapping from="historical_discharge.wq.curve" to="DischargeCurve" />
-        <mapping from="historical_discharge.wq.w" to="HistoricalDischargeWQW" />
-        <mapping from="historical_discharge.wq.q" to="HistoricalDischargeWQQ" />
-        <mapping from="cross_section" to="CrossSection" />
-        <mapping from="cross_section_water_line" to="CrossSectionWaterLine" />
-        <mapping from="computed_discharge_curve.q" to="DischargeCurve" />
-        <mapping from="duration_curve.w" to="DurationCurveW" />
-        <mapping from="duration_curve.q" to="DurationCurveQ" />
-        <mapping from="discharge_longitudinal_section.w" to="DischargeLongitudinalSectionW" />
-        <mapping from="discharge_longitudinal_section.c" to="DischargeLongitudinalSectionC" />
-        <mapping from="discharge_longitudinal_section.q" to="DischargeLongitudinalSectionQ" />
-        <mapping from="mainvalues.q" to="MainValuesQ" />
-        <mapping from="mainvalues.w" to="MainValuesW" />
-        <mapping from="longitudinal_section.annotations" to="Annotations" />
-        <mapping from="w_differences" to="Differences" />
-        <mapping from="w_differences.filtered" to="Differences" />
-        <mapping from="floodmap.wsplgen" to="WSPLGEN" />
-        <mapping from="floodmap.riveraxis" to="RiverAxis" />
-        <mapping from="floodmap.kms" to="Kms" />
-        <mapping from="floodmap.qps" to="Qps" />
-        <mapping from="floodmap.hws_lines" to="Hws" />
-        <mapping from="floodmap.hws_points" to="HwsPoints" />
-        <mapping from="floodmap.hydr_boundaries" to="HydrBoundariesLines" />
-        <mapping from="floodmap.hydr_boundaries_poly" to="HydrBoundariesPolys" />
-        <mapping from="floodmap.catchment" to="Catchment" />
-        <mapping from="floodmap.floodplain" to="Floodplains" />
-        <mapping from="floodmap.lines" to="FloodmapLines" />
-        <mapping from="floodmap.buildings" to="Buildings" />
-        <mapping from="floodmap.fixpoints" to="Fixpoints" />
-        <mapping from="floodmap.floodmarks" to="Floodmarks" />
-        <mapping from="floodmap.floodmaps" to="Floodmaps" />
-        <mapping from="floodmap.gauge_location" to="GaugeLocation" />
-        <mapping from="floodmap.jetties" to="Jetties" />
-        <mapping from="other.wq" to="WQPoints" />
-        <mapping from="other.wkms" to="WKms" />
-        <mapping from="other.delta_w" to="WKms" />
-        <mapping from="other.delta_w_cma" to="WKms" />
-        <mapping from="other.wkms.marks" to="WKmsAnnotation" />
-        <mapping from="other.wqkms" to="WQKmsHorizontal" masterAttr="calculation_mode==calc.discharge.curve" />
-        <mapping from="other.wqkms" to="WQKms" />
-        <mapping from="other.wqkms.w" to="WQKmsHorizontal" masterAttr="calculation_mode==calc.discharge.curve" />
-        <mapping from="other.wqkms.w" to="WQKms" />
-        <mapping from="other.wqkms.q" to="WQKms" />
-        <mapping from="other.w.interpol" to="MainValuesW" />
-        <mapping from="heightmarks_points" to="heightmarks_points" />
-        <mapping from="area" to="Area" />
-        <mapping from="cross_section.area" to="CrossSectionArea" />
-        <mapping from="hyk" to="Hyk" />
-        <mapping from="longitudinal_section.area" to="LongitudinalSectionArea" />
-        <mapping from="longitudinal_section.manualpoints" to="ManualPoints" />
-        <mapping from="cross_section.manualpoints" to="ManualPoints" />
-        <mapping from="cross_section.manualline" to="CrossSectionWaterLine" />
-        <mapping from="computed_discharge_curve.manualpoints" to="ManualPoints" />
-        <mapping from="duration_curve.manualpoints" to="ManualPoints" />
-        <mapping from="wdifferences.manualpoints" to="ManualPoints" />
+        <mapping from="discharge_curve.curve" to="DischargeCurve"/>
+        <mapping from="historical_discharge.historicalq" to="HistoricalDischargeCurveQ"/>
+        <mapping from="historical_discharge.historicalq.diff" to="HistoricalDischargeCurveQDiff"/>
+        <mapping from="historical_discharge.historicalw" to="HistoricalDischargeCurveW"/>
+        <mapping from="historical_discharge.historicalw.diff" to="HistoricalDischargeCurveWDiff"/>
+        <mapping from="historical_discharge.wq.curve" to="DischargeCurve"/>
+        <mapping from="historical_discharge.wq.w" to="HistoricalDischargeWQW"/>
+        <mapping from="historical_discharge.wq.q" to="HistoricalDischargeWQQ"/>
+        <mapping from="cross_section" to="CrossSection"/>
+        <mapping from="cross_section_water_line" to="CrossSectionWaterLine"/>
+        <mapping from="computed_discharge_curve.q" to="DischargeCurve"/>
+        <mapping from="duration_curve.w" to="DurationCurveW"/>
+        <mapping from="duration_curve.q" to="DurationCurveQ"/>
+        <mapping from="discharge_longitudinal_section.w" to="DischargeLongitudinalSectionW"/>
+        <mapping from="discharge_longitudinal_section.c" to="DischargeLongitudinalSectionC"/>
+        <mapping from="discharge_longitudinal_section.q" to="DischargeLongitudinalSectionQ"/>
+        <mapping from="mainvalues.q" to="MainValuesQ"/>
+        <mapping from="mainvalues.w" to="MainValuesW"/>
+        <mapping from="longitudinal_section.annotations" to="Annotations"/>
+        <mapping from="w_differences" to="Differences"/>
+        <mapping from="w_differences.filtered" to="Differences"/>
+        <mapping from="floodmap.wsplgen" to="WSPLGEN"/>
+        <mapping from="floodmap.riveraxis" to="RiverAxis"/>
+        <mapping from="floodmap.kms" to="Kms"/>
+        <mapping from="floodmap.qps" to="Qps"/>
+        <mapping from="floodmap.hws_lines" to="Hws"/>
+        <mapping from="floodmap.hws_points" to="HwsPoints"/>
+        <mapping from="floodmap.hydr_boundaries" to="HydrBoundariesLines"/>
+        <mapping from="floodmap.hydr_boundaries_poly" to="HydrBoundariesPolys"/>
+        <mapping from="floodmap.catchment" to="Catchment"/>
+        <mapping from="floodmap.floodplain" to="Floodplains"/>
+        <mapping from="floodmap.lines" to="FloodmapLines"/>
+        <mapping from="floodmap.buildings" to="Buildings"/>
+        <mapping from="floodmap.fixpoints" to="Fixpoints"/>
+        <mapping from="floodmap.floodmarks" to="Floodmarks"/>
+        <mapping from="floodmap.floodmaps" to="Floodmaps"/>
+        <mapping from="floodmap.gauge_location" to="GaugeLocation"/>
+        <mapping from="floodmap.jetties" to="Jetties"/>
+        <mapping from="other.wq" to="WQPoints"/>
+        <mapping from="other.wkms" to="WKms"/>
+        <mapping from="other.delta_w" to="WKms"/>
+        <mapping from="other.delta_w_cma" to="WKms"/>
+        <mapping from="other.wkms.marks" to="WKmsAnnotation"/>
+        <mapping from="other.wqkms" to="WQKmsHorizontal" masterAttr="calculation_mode==calc.discharge.curve"/>
+        <mapping from="other.wqkms" to="WQKms"/>
+        <mapping from="other.wqkms.w" to="WQKmsHorizontal" masterAttr="calculation_mode==calc.discharge.curve"/>
+        <mapping from="other.wqkms.w" to="WQKms"/>
+        <mapping from="other.wqkms.q" to="WQKms"/>
+        <mapping from="other.w.interpol" to="MainValuesW"/>
+        <mapping from="heightmarks_points" to="heightmarks_points"/>
+        <mapping from="area" to="Area"/>
+        <mapping from="cross_section.area" to="CrossSectionArea"/>
+        <mapping from="hyk" to="Hyk"/>
+        <mapping from="longitudinal_section.area" to="LongitudinalSectionArea"/>
+        <mapping from="longitudinal_section.manualpoints" to="ManualPoints"/>
+        <mapping from="cross_section.manualpoints" to="ManualPoints"/>
+        <mapping from="cross_section.manualline" to="CrossSectionWaterLine"/>
+        <mapping from="computed_discharge_curve.manualpoints" to="ManualPoints"/>
+        <mapping from="duration_curve.manualpoints" to="ManualPoints"/>
+        <mapping from="wdifferences.manualpoints" to="ManualPoints"/>
         <mapping from="discharge_longitudinal_section.manualpoints"
-            to="ManualPoints" />
-        <mapping from="discharge_curve.manualpoints" to="ManualPoints" />
-        <mapping from="reference_curve.manualpoints" to="ManualPoints" />
-        <mapping from="reference_curve_normalized.manualpoints" to="ManualPoints" />
-        <mapping from="historical_discharge.manualpoints" to="ManualPoints" />
-        <mapping from="manualpoints" to="ManualPoints" />
-        <mapping from="reference_curve" to="ReferenceCurve" />
-        <mapping from="reference_curve_normalized" to="ReferenceCurveNormalized" />
-        <mapping from="flow_velocity.totalchannel" to="FlowVelocityVTotalChannel" />
-        <mapping from="flow_velocity.mainchannel" to="FlowVelocityVMainChannel" />
-        <mapping from="flow_velocity.tau" to="FlowVelocityTau" />
-        <mapping from="flow_velocity.totalchannel.filtered" to="FlowVelocityVTotalChannel" />
-        <mapping from="flow_velocity.mainchannel.filtered" to="FlowVelocityVMainChannel" />
-        <mapping from="flow_velocity.tau.filtered" to="FlowVelocityTau" />
-        <mapping from="flow_velocity.discharge" to="FlowVelocityDischarge" />
-        <mapping from="flow_velocity.measurement" to="FlowVelocityDischarge" />
-        <mapping from="bedheight_middle.single" to="MiddleBedHeightSingle" />
-        <mapping from="bedheight_middle.manualpoints" to="ManualPoints" />
-        <mapping from="bed_longitudinal_section.porosity.toplayer.interpol" to="PorosityTopLines" />
-        <mapping from="bed_longitudinal_section.porosity.sublayer.interpol" to="PorositySubLines" />
-        <mapping from="bed_longitudinal_section.density.toplayer.interpol" to="DensityTopLines" />
-        <mapping from="bed_longitudinal_section.density.sublayer.interpol" to="DensitySubLines" />
-        <mapping from="bed_longitudinal_section.diameter.toplayer.interpol" to="BedDiameterTopLines" />
-        <mapping from="bed_longitudinal_section.diameter.sublayer.interpol" to="BedDiameterSubLines" />
-        <mapping from="bed_longitudinal_section.diameter.bedload.interpol" to="BedLoadDiameterLines" />
-        <mapping from="bed_longitudinal_section.porosity.toplayer" to="PorosityTopPoints" />
-        <mapping from="bed_longitudinal_section.porosity.sublayer" to="PorositySubPoints" />
-        <mapping from="bed_longitudinal_section.density.toplayer" to="DensityTopPoints" />
-        <mapping from="bed_longitudinal_section.density.sublayer" to="DensitySubPoints" />
-        <mapping from="bed_longitudinal_section.diameter.toplayer" to="BedDiameterTopPoints" />
-        <mapping from="bed_longitudinal_section.diameter.sublayer" to="BedDiameterSubPoints" />
-        <mapping from="bed_longitudinal_section.diameter.bedload" to="BedLoadDiameterPoints" />
+            to="ManualPoints"/>
+        <mapping from="discharge_curve.manualpoints" to="ManualPoints"/>
+        <mapping from="reference_curve.manualpoints" to="ManualPoints"/>
+        <mapping from="reference_curve_normalized.manualpoints" to="ManualPoints"/>
+        <mapping from="historical_discharge.manualpoints" to="ManualPoints"/>
+        <mapping from="manualpoints" to="ManualPoints"/>
+        <mapping from="reference_curve" to="ReferenceCurve"/>
+        <mapping from="reference_curve_normalized" to="ReferenceCurveNormalized"/>
+        <mapping from="flow_velocity.totalchannel" to="FlowVelocityVTotalChannel"/>
+        <mapping from="flow_velocity.mainchannel" to="FlowVelocityVMainChannel"/>
+        <mapping from="flow_velocity.tau" to="FlowVelocityTau"/>
+        <mapping from="flow_velocity.totalchannel.filtered" to="FlowVelocityVTotalChannel"/>
+        <mapping from="flow_velocity.mainchannel.filtered" to="FlowVelocityVMainChannel"/>
+        <mapping from="flow_velocity.tau.filtered" to="FlowVelocityTau"/>
+        <mapping from="flow_velocity.discharge" to="FlowVelocityDischarge"/>
+        <mapping from="flow_velocity.measurement" to="FlowVelocityDischarge"/>
+        <mapping from="bedheight_middle.single" to="MiddleBedHeightSingle"/>
+        <mapping from="bedheight_middle.manualpoints" to="ManualPoints"/>
+        <mapping from="bed_longitudinal_section.porosity.toplayer.interpol" to="PorosityTopLines"/>
+        <mapping from="bed_longitudinal_section.porosity.sublayer.interpol" to="PorositySubLines"/>
+        <mapping from="bed_longitudinal_section.density.toplayer.interpol" to="DensityTopLines"/>
+        <mapping from="bed_longitudinal_section.density.sublayer.interpol" to="DensitySubLines"/>
+        <mapping from="bed_longitudinal_section.diameter.toplayer.interpol" to="BedDiameterTopLines"/>
+        <mapping from="bed_longitudinal_section.diameter.sublayer.interpol" to="BedDiameterSubLines"/>
+        <mapping from="bed_longitudinal_section.diameter.bedload.interpol" to="BedLoadDiameterLines"/>
+        <mapping from="bed_longitudinal_section.porosity.toplayer" to="PorosityTopPoints"/>
+        <mapping from="bed_longitudinal_section.porosity.sublayer" to="PorositySubPoints"/>
+        <mapping from="bed_longitudinal_section.density.toplayer" to="DensityTopPoints"/>
+        <mapping from="bed_longitudinal_section.density.sublayer" to="DensitySubPoints"/>
+        <mapping from="bed_longitudinal_section.diameter.toplayer" to="BedDiameterTopPoints"/>
+        <mapping from="bed_longitudinal_section.diameter.sublayer" to="BedDiameterSubPoints"/>
+        <mapping from="bed_longitudinal_section.diameter.bedload" to="BedLoadDiameterPoints"/>
         <mapping from="bed_longitudinal_section.diameter.toplayer.data" to="BedDiameterDataTop"/>
         <mapping from="bed_longitudinal_section.diameter.sublayer.data" to="BedDiameterDataSub"/>
         <mapping from="bed_longitudinal_section.diameter.bedload.data" to="BedloadDiameterData"/>
@@ -246,252 +246,259 @@
         <mapping from="bedheight_difference.epoch.height2.filtered" to="BedheightDiffAbsHeight2"/>
         <mapping from="bedheight_difference.height_year.filtered" to="BedheightDiffHeightYear"/>
         <mapping from="morph-width" to="MorphologicWidth"/>
-        <mapping from="relativepoint" to="RelativePoint" />
+        <mapping from="relativepoint" to="RelativePoint"/>
 
-        <mapping from="sq_a_measurement" to="SQMeasurementsA" />
-        <mapping from="sq_a_outlier" to="SQOutliersA" />
-        <mapping from="sq_a_curve" to="SQCurveA" />
-        <mapping from="sq_a_outlier_curve" to="SQOutlierCurveA" />
-        <mapping from="sq_a_outlier_measurement" to="SQMeasurementsA" />
-        <mapping from="sq_b_measurement" to="SQMeasurementsB" />
-        <mapping from="sq_b_outlier" to="SQOutliersB" />
-        <mapping from="sq_b_curve" to="SQCurveB" />
-        <mapping from="sq_b_outlier_curve" to="SQOutlierCurveB" />
-        <mapping from="sq_b_outlier_measurement" to="SQMeasurementsB" />
-        <mapping from="sq_c_measurement" to="SQMeasurementsC" />
-        <mapping from="sq_c_outlier" to="SQOutliersC" />
-        <mapping from="sq_c_curve" to="SQCurveC" />
-        <mapping from="sq_c_outlier_curve" to="SQOutlierCurveC" />
-        <mapping from="sq_c_outlier_measurement" to="SQMeasurementsC" />
-        <mapping from="sq_d_measurement" to="SQMeasurementsD" />
-        <mapping from="sq_d_outlier" to="SQOutliersD" />
-        <mapping from="sq_d_curve" to="SQCurveD" />
-        <mapping from="sq_d_outlier_curve" to="SQOutlierCurveD" />
-        <mapping from="sq_d_outlier_measurement" to="SQMeasurementsD" />
-        <mapping from="sq_e_measurement" to="SQMeasurementsE" />
-        <mapping from="sq_e_outlier" to="SQOutliersE" />
-        <mapping from="sq_e_curve" to="SQCurveE" />
-        <mapping from="sq_e_outlier_curve" to="SQOutlierCurveE" />
-        <mapping from="sq_e_outlier_measurement" to="SQMeasurementsE" />
-        <mapping from="sq_f_measurement" to="SQMeasurementsF" />
-        <mapping from="sq_f_outlier" to="SQOutliersF" />
-        <mapping from="sq_f_curve" to="SQCurveF" />
-        <mapping from="sq_f_outlier_curve" to="SQOutlierCurveF" />
-        <mapping from="sq_f_outlier_measurement" to="SQMeasurementsF" />
-        <mapping from="sq_g_measurement" to="SQMeasurementsG" />
-        <mapping from="sq_g_outlier" to="SQOutliersG" />
-        <mapping from="sq_g_curve" to="SQCurveG" />
-        <mapping from="sq_g_outlier_curve" to="SQOutlierCurveG" />
-        <mapping from="sq_g_outlier_measurement" to="SQMeasurementsG" />
-        <mapping from="sq_a_measurement_overview" to="SQMeasurementsOverviewA" />
-        <mapping from="sq_a_outlier_overview" to="SQOutliersOverviewA" />
-        <mapping from="sq_a_curve_overview" to="SQCurveA" />
-        <mapping from="sq_a_outlier_curve_overview" to="SQOutlierCurveA" />
-        <mapping from="sq_a_outlier_measurement_overview" to="SQMeasurementsOverviewA" />
-        <mapping from="sq_b_measurement_overview" to="SQMeasurementsOverviewB" />
-        <mapping from="sq_b_outlier_overview" to="SQOutliersOverviewB" />
-        <mapping from="sq_b_curve_overview" to="SQCurveB" />
-        <mapping from="sq_b_outlier_curve_overview" to="SQOutlierCurveB" />
-        <mapping from="sq_b_outlier_measurement_overview" to="SQMeasurementsOverviewB" />
-        <mapping from="sq_c_measurement_overview" to="SQMeasurementsOverviewC" />
-        <mapping from="sq_c_outlier_overview" to="SQOutliersOverviewC" />
-        <mapping from="sq_c_curve_overview" to="SQCurveC" />
-        <mapping from="sq_c_outlier_curve_overview" to="SQOutlierCurveC" />
-        <mapping from="sq_c_outlier_measurement_overview" to="SQMeasurementsOverviewC" />
-        <mapping from="sq_d_measurement_overview" to="SQMeasurementsOverviewD" />
-        <mapping from="sq_d_outlier_overview" to="SQOutliersOverviewD" />
-        <mapping from="sq_d_curve_overview" to="SQCurveD" />
-        <mapping from="sq_d_outlier_curve_overview" to="SQOutlierCurveD" />
-        <mapping from="sq_d_outlier_measurement_overview" to="SQMeasurementsOverviewD" />
-        <mapping from="sq_e_measurement_overview" to="SQMeasurementsOverviewE" />
-        <mapping from="sq_e_outlier_overview" to="SQOutliersOverviewE" />
-        <mapping from="sq_e_curve_overview" to="SQCurveE" />
-        <mapping from="sq_e_outlier_curve_overview" to="SQOutlierCurveE" />
-        <mapping from="sq_e_outlier_measurement_overview" to="SQMeasurementsOverviewE" />
-        <mapping from="sq_f_measurement_overview" to="SQMeasurementsOverviewF" />
-        <mapping from="sq_f_outlier_overview" to="SQOutliersOverviewF" />
-        <mapping from="sq_f_curve_overview" to="SQCurveF" />
-        <mapping from="sq_f_outlier_curve_overview" to="SQOutlierCurveF" />
-        <mapping from="sq_f_outlier_measurement_overview" to="SQMeasurementsOverviewF" />
-        <mapping from="sq_g_measurement_overview" to="SQMeasurementsOverviewG" />
-        <mapping from="sq_g_outlier_overview" to="SQOutliersOverviewG" />
-        <mapping from="sq_g_curve_overview" to="SQCurveG" />
-        <mapping from="sq_g_outlier_curve_overview" to="SQOutlierCurveG" />
-        <mapping from="sq_g_outlier_measurement_overview" to="SQMeasurementsOverviewG" />
+        <mapping from="sq_a_measurement" to="SQMeasurementsA"/>
+        <mapping from="sq_a_outlier" to="SQOutliersA"/>
+        <mapping from="sq_a_curve" to="SQCurveA"/>
+        <mapping from="sq_a_outlier_curve" to="SQOutlierCurveA"/>
+        <mapping from="sq_a_outlier_measurement" to="SQMeasurementsA"/>
+        <mapping from="sq_b_measurement" to="SQMeasurementsB"/>
+        <mapping from="sq_b_outlier" to="SQOutliersB"/>
+        <mapping from="sq_b_curve" to="SQCurveB"/>
+        <mapping from="sq_b_outlier_curve" to="SQOutlierCurveB"/>
+        <mapping from="sq_b_outlier_measurement" to="SQMeasurementsB"/>
+        <mapping from="sq_c_measurement" to="SQMeasurementsC"/>
+        <mapping from="sq_c_outlier" to="SQOutliersC"/>
+        <mapping from="sq_c_curve" to="SQCurveC"/>
+        <mapping from="sq_c_outlier_curve" to="SQOutlierCurveC"/>
+        <mapping from="sq_c_outlier_measurement" to="SQMeasurementsC"/>
+        <mapping from="sq_d_measurement" to="SQMeasurementsD"/>
+        <mapping from="sq_d_outlier" to="SQOutliersD"/>
+        <mapping from="sq_d_curve" to="SQCurveD"/>
+        <mapping from="sq_d_outlier_curve" to="SQOutlierCurveD"/>
+        <mapping from="sq_d_outlier_measurement" to="SQMeasurementsD"/>
+        <mapping from="sq_e_measurement" to="SQMeasurementsE"/>
+        <mapping from="sq_e_outlier" to="SQOutliersE"/>
+        <mapping from="sq_e_curve" to="SQCurveE"/>
+        <mapping from="sq_e_outlier_curve" to="SQOutlierCurveE"/>
+        <mapping from="sq_e_outlier_measurement" to="SQMeasurementsE"/>
+        <mapping from="sq_f_measurement" to="SQMeasurementsF"/>
+        <mapping from="sq_f_outlier" to="SQOutliersF"/>
+        <mapping from="sq_f_curve" to="SQCurveF"/>
+        <mapping from="sq_f_outlier_curve" to="SQOutlierCurveF"/>
+        <mapping from="sq_f_outlier_measurement" to="SQMeasurementsF"/>
+        <mapping from="sq_g_measurement" to="SQMeasurementsG"/>
+        <mapping from="sq_g_outlier" to="SQOutliersG"/>
+        <mapping from="sq_g_curve" to="SQCurveG"/>
+        <mapping from="sq_g_outlier_curve" to="SQOutlierCurveG"/>
+        <mapping from="sq_g_outlier_measurement" to="SQMeasurementsG"/>
+        <mapping from="sq_a_measurement_overview" to="SQMeasurementsOverviewA"/>
+        <mapping from="sq_a_outlier_overview" to="SQOutliersOverviewA"/>
+        <mapping from="sq_a_curve_overview" to="SQCurveA"/>
+        <mapping from="sq_a_outlier_curve_overview" to="SQOutlierCurveA"/>
+        <mapping from="sq_a_outlier_measurement_overview" to="SQMeasurementsOverviewA"/>
+        <mapping from="sq_b_measurement_overview" to="SQMeasurementsOverviewB"/>
+        <mapping from="sq_b_outlier_overview" to="SQOutliersOverviewB"/>
+        <mapping from="sq_b_curve_overview" to="SQCurveB"/>
+        <mapping from="sq_b_outlier_curve_overview" to="SQOutlierCurveB"/>
+        <mapping from="sq_b_outlier_measurement_overview" to="SQMeasurementsOverviewB"/>
+        <mapping from="sq_c_measurement_overview" to="SQMeasurementsOverviewC"/>
+        <mapping from="sq_c_outlier_overview" to="SQOutliersOverviewC"/>
+        <mapping from="sq_c_curve_overview" to="SQCurveC"/>
+        <mapping from="sq_c_outlier_curve_overview" to="SQOutlierCurveC"/>
+        <mapping from="sq_c_outlier_measurement_overview" to="SQMeasurementsOverviewC"/>
+        <mapping from="sq_d_measurement_overview" to="SQMeasurementsOverviewD"/>
+        <mapping from="sq_d_outlier_overview" to="SQOutliersOverviewD"/>
+        <mapping from="sq_d_curve_overview" to="SQCurveD"/>
+        <mapping from="sq_d_outlier_curve_overview" to="SQOutlierCurveD"/>
+        <mapping from="sq_d_outlier_measurement_overview" to="SQMeasurementsOverviewD"/>
+        <mapping from="sq_e_measurement_overview" to="SQMeasurementsOverviewE"/>
+        <mapping from="sq_e_outlier_overview" to="SQOutliersOverviewE"/>
+        <mapping from="sq_e_curve_overview" to="SQCurveE"/>
+        <mapping from="sq_e_outlier_curve_overview" to="SQOutlierCurveE"/>
+        <mapping from="sq_e_outlier_measurement_overview" to="SQMeasurementsOverviewE"/>
+        <mapping from="sq_f_measurement_overview" to="SQMeasurementsOverviewF"/>
+        <mapping from="sq_f_outlier_overview" to="SQOutliersOverviewF"/>
+        <mapping from="sq_f_curve_overview" to="SQCurveF"/>
+        <mapping from="sq_f_outlier_curve_overview" to="SQOutlierCurveF"/>
+        <mapping from="sq_f_outlier_measurement_overview" to="SQMeasurementsOverviewF"/>
+        <mapping from="sq_g_measurement_overview" to="SQMeasurementsOverviewG"/>
+        <mapping from="sq_g_outlier_overview" to="SQOutliersOverviewG"/>
+        <mapping from="sq_g_curve_overview" to="SQCurveG"/>
+        <mapping from="sq_g_outlier_curve_overview" to="SQOutlierCurveG"/>
+        <mapping from="sq_g_outlier_measurement_overview" to="SQMeasurementsOverviewG"/>
 
-        <mapping from="fix_sector_average_wq_0" to="FixingSectorAverageWQ0" />
-        <mapping from="fix_sector_average_wq_1" to="FixingSectorAverageWQ1" />
-        <mapping from="fix_sector_average_wq_2" to="FixingSectorAverageWQ2" />
-        <mapping from="fix_sector_average_wq_3" to="FixingSectorAverageWQ3" />
-        <mapping from="fix_analysis_events_wq" to="FixingAnalysisEventsWQ" />
-        <mapping from="fix_wq_curve" to="FixingWQCurve" />
-        <mapping from="fix_wq_ls" to="FixingCalculatedPoint" />
-        <mapping from="fix_reference_events_wq" to="FixingReferenceEvents" />
-        <mapping from="fix_sector_average_dwt_0" to="FixingDeltaWtAverage0" />
-        <mapping from="fix_sector_average_dwt_1" to="FixingDeltaWtAverage1" />
-        <mapping from="fix_sector_average_dwt_2" to="FixingDeltaWtAverage2" />
-        <mapping from="fix_sector_average_dwt_3" to="FixingDeltaWtAverage3" />
-        <mapping from="fix_analysis_events_dwt" to="FixingDeltaWtAnalysis" />
-        <mapping from="fix_analysis_periods_dwt" to="FixingDeltaWtAnalysisPeriods" />
-        <mapping from="fix_reference_events_dwt" to="FixingReferenceEvents" />
-        <mapping from="fix_reference_period_dwt" to="FixingReferencePeriod" />
-        <mapping from="fix_sector_average_ls_deviation_0" to="FixingSectorDeviationLS0" />
-        <mapping from="fix_sector_average_ls_deviation_1" to="FixingSectorDeviationLS1" />
-        <mapping from="fix_sector_average_ls_deviation_2" to="FixingSectorDeviationLS2" />
-        <mapping from="fix_sector_average_ls_deviation_3" to="FixingSectorDeviationLS3" />
-        <mapping from="fix_sector_average_ls_0" to="FixingLSAverage0" />
-        <mapping from="fix_sector_average_ls_1" to="FixingLSAverage1" />
-        <mapping from="fix_sector_average_ls_2" to="FixingLSAverage2" />
-        <mapping from="fix_sector_average_ls_3" to="FixingLSAverage3" />
-        <mapping from="fix_deviation_ls" to="FixLSDeviation" />
-        <mapping from="fix_deviation_dwt" to="FixDeltaWtDeviation" />
-        <mapping from="fix_analysis_events_ls" to="FixLSAnalysis" />
-        <mapping from="fix_reference_events_ls" to="FixLSReference" />
-        <mapping from="fix_derivate_curve" to="FixingDerivedCurve" />
-        <mapping from="fix_derivate_curve.manualpoints" to="ManualPoints" />
-        <mapping from="fix_deltawt_curve.manualpoints" to="ManualPoints" />
-        <mapping from="fix_events_wqkms" to="FixPoints" />
-        <mapping from="qsectors" to="QSectors" />
-        <mapping from="gauge_discharge_curve" to="DischargeCurve" />
-        <mapping from="extreme_wq_curve" to="ExtremeWQCurve" />
-        <mapping from="extreme_wq_curve_base" to="ExtremeWQBaseCurve" />
+        <mapping from="fix_sector_average_wq_0" to="FixingSectorAverageWQ0"/>
+        <mapping from="fix_sector_average_wq_1" to="FixingSectorAverageWQ1"/>
+        <mapping from="fix_sector_average_wq_2" to="FixingSectorAverageWQ2"/>
+        <mapping from="fix_sector_average_wq_3" to="FixingSectorAverageWQ3"/>
+        <mapping from="fix_analysis_events_wq" to="FixingAnalysisEventsWQ"/>
+        <mapping from="fix_wq_curve" to="FixingWQCurve"/>
+        <mapping from="fix_wq_ls" to="FixingCalculatedPoint"/>
+        <mapping from="fix_reference_events_wq" to="FixingReferenceEvents"/>
+        <mapping from="fix_sector_average_dwt_0" to="FixingDeltaWtAverage0"/>
+        <mapping from="fix_sector_average_dwt_1" to="FixingDeltaWtAverage1"/>
+        <mapping from="fix_sector_average_dwt_2" to="FixingDeltaWtAverage2"/>
+        <mapping from="fix_sector_average_dwt_3" to="FixingDeltaWtAverage3"/>
+        <mapping from="fix_analysis_events_dwt" to="FixingDeltaWtAnalysis"/>
+        <mapping from="fix_analysis_periods_dwt" to="FixingDeltaWtAnalysisPeriods"/>
+        <mapping from="fix_reference_events_dwt" to="FixingReferenceEvents"/>
+        <mapping from="fix_reference_period_dwt" to="FixingReferencePeriod"/>
+        <mapping from="fix_sector_average_ls_deviation_0" to="FixingSectorDeviationLS0"/>
+        <mapping from="fix_sector_average_ls_deviation_1" to="FixingSectorDeviationLS1"/>
+        <mapping from="fix_sector_average_ls_deviation_2" to="FixingSectorDeviationLS2"/>
+        <mapping from="fix_sector_average_ls_deviation_3" to="FixingSectorDeviationLS3"/>
+        <mapping from="fix_sector_average_ls_0" to="FixingLSAverage0"/>
+        <mapping from="fix_sector_average_ls_1" to="FixingLSAverage1"/>
+        <mapping from="fix_sector_average_ls_2" to="FixingLSAverage2"/>
+        <mapping from="fix_sector_average_ls_3" to="FixingLSAverage3"/>
+        <mapping from="fix_deviation_ls" to="FixLSDeviation"/>
+        <mapping from="fix_deviation_dwt" to="FixDeltaWtDeviation"/>
+        <mapping from="fix_analysis_events_ls" to="FixLSAnalysis"/>
+        <mapping from="fix_reference_events_ls" to="FixLSReference"/>
+        <mapping from="fix_derivate_curve" to="FixingDerivedCurve"/>
+        <mapping from="fix_derivate_curve.manualpoints" to="ManualPoints"/>
+        <mapping from="fix_deltawt_curve.manualpoints" to="ManualPoints"/>
+        <mapping from="fix_events_wqkms" to="FixPoints"/>
+        <mapping from="qsectors" to="QSectors"/>
+        <mapping from="gauge_discharge_curve" to="DischargeCurve"/>
+        <mapping from="extreme_wq_curve" to="ExtremeWQCurve"/>
+        <mapping from="extreme_wq_curve_base" to="ExtremeWQBaseCurve"/>
 
         <!-- Mappings for sediment load -->
-        <mapping from="sedimentload.ls.ta.coarse" to="SedimentLoadLSTACoarse" />
-        <mapping from="sedimentload.ls.ta.fine_middle" to="SedimentLoadLSTAFineMid" />
-        <mapping from="sedimentload.ls.ta.sand" to="SedimentLoadLSTASand" />
-        <mapping from="sedimentload.ls.ta.susp_sand" to="SedimentLoadLSTASuspSand" />
-        <mapping from="sedimentload.ls.ta.susp_sand_bed" to="SedimentLoadLSTASuspSandBed" />
-        <mapping from="sedimentload.ls.ta.suspended_sediment" to="SedimentLoadLSTASediment" />
-        <mapping from="sedimentload.ls.ta.suspended_load" to="SedimentLoadLSTASusp" />
-        <mapping from="sedimentload.ls.ta.total" to="SedimentLoadLSTATotal" />
-        <mapping from="sedimentload.ls.ta.bed_load" to="SedimentLoadLSTABed" />
-        <mapping from="sedimentload.ls.ta.bed_load_susp_sand" to="SedimentLoadLSTABedSusp" />
+        <mapping from="sedimentload.ls.ta.coarse" to="SedimentLoadLSTACoarse"/>
+        <mapping from="sedimentload.ls.ta.fine_middle" to="SedimentLoadLSTAFineMid"/>
+        <mapping from="sedimentload.ls.ta.sand" to="SedimentLoadLSTASand"/>
+        <mapping from="sedimentload.ls.ta.susp_sand" to="SedimentLoadLSTASuspSand"/>
+        <mapping from="sedimentload.ls.ta.susp_sand_bed" to="SedimentLoadLSTASuspSandBed"/>
+        <mapping from="sedimentload.ls.ta.suspended_sediment" to="SedimentLoadLSTASediment"/>
+        <mapping from="sedimentload.ls.ta.suspended_load" to="SedimentLoadLSTASusp"/>
+        <mapping from="sedimentload.ls.ta.total" to="SedimentLoadLSTATotal"/>
+        <mapping from="sedimentload.ls.ta.bed_load" to="SedimentLoadLSTABed"/>
+        <mapping from="sedimentload.ls.ta.bed_load_susp_sand" to="SedimentLoadLSTABedSusp"/>
 
-        <mapping from="sedimentload.ls.m3a.coarse" to="SedimentLoadLSM3ACoarse" />
-        <mapping from="sedimentload.ls.m3a.fine_middle" to="SedimentLoadLSM3AFineMid" />
-        <mapping from="sedimentload.ls.m3a.sand" to="SedimentLoadLSM3ASand" />
-        <mapping from="sedimentload.ls.m3a.susp_sand" to="SedimentLoadLSM3ASuspSand" />
-        <mapping from="sedimentload.ls.m3a.susp_sand_bed" to="SedimentLoadLSM3ASuspSandBed" />
-        <mapping from="sedimentload.ls.m3a.suspended_sediment" to="SedimentLoadLSM3ASediment" />
-        <mapping from="sedimentload.ls.m3a.suspended_load" to="SedimentLoadLSM3ASusp" />
-        <mapping from="sedimentload.ls.m3a.total" to="SedimentLoadLSM3ATotal" />
-        <mapping from="sedimentload.ls.m3a.bed_load" to="SedimentLoadLSM3ABed" />
-        <mapping from="sedimentload.ls.m3a.bed_load_susp_sand" to="SedimentLoadLSM3ABedSusp" />
+        <mapping from="sedimentload.ls.m3a.coarse" to="SedimentLoadLSM3ACoarse"/>
+        <mapping from="sedimentload.ls.m3a.fine_middle" to="SedimentLoadLSM3AFineMid"/>
+        <mapping from="sedimentload.ls.m3a.sand" to="SedimentLoadLSM3ASand"/>
+        <mapping from="sedimentload.ls.m3a.susp_sand" to="SedimentLoadLSM3ASuspSand"/>
+        <mapping from="sedimentload.ls.m3a.susp_sand_bed" to="SedimentLoadLSM3ASuspSandBed"/>
+        <mapping from="sedimentload.ls.m3a.suspended_sediment" to="SedimentLoadLSM3ASediment"/>
+        <mapping from="sedimentload.ls.m3a.suspended_load" to="SedimentLoadLSM3ASusp"/>
+        <mapping from="sedimentload.ls.m3a.total" to="SedimentLoadLSM3ATotal"/>
+        <mapping from="sedimentload.ls.m3a.bed_load" to="SedimentLoadLSM3ABed"/>
+        <mapping from="sedimentload.ls.m3a.bed_load_susp_sand" to="SedimentLoadLSM3ABedSusp"/>
 
-        <mapping from="sedimentload.ta.coarse" to="SedimentLoadTACoarse" />
-        <mapping from="sedimentload.ta.fine_middle" to="SedimentLoadTAFineMid" />
-        <mapping from="sedimentload.ta.sand" to="SedimentLoadTASand" />
-        <mapping from="sedimentload.ta.susp_sand" to="SedimentLoadTASuspSand" />
-        <mapping from="sedimentload.ta.susp_sand_bed" to="SedimentLoadTASuspSandBed" />
-        <mapping from="sedimentload.ta.suspended_sediment" to="SedimentLoadTASediment" />
-        <mapping from="sedimentload.ta.suspended_load" to="SedimentLoadTASusp" />
-        <mapping from="sedimentload.ta.total" to="SedimentLoadTATotal" />
-        <mapping from="sedimentload.ta.bed_load" to="SedimentLoadTABed" />
-        <mapping from="sedimentload.ta.bed_load_susp_sand" to="SedimentLoadTABedSusp" />
+        <mapping from="sedimentload.ta.coarse" to="SedimentLoadTACoarse"/>
+        <mapping from="sedimentload.ta.fine_middle" to="SedimentLoadTAFineMid"/>
+        <mapping from="sedimentload.ta.sand" to="SedimentLoadTASand"/>
+        <mapping from="sedimentload.ta.susp_sand" to="SedimentLoadTASuspSand"/>
+        <mapping from="sedimentload.ta.susp_sand_bed" to="SedimentLoadTASuspSandBed"/>
+        <mapping from="sedimentload.ta.suspended_sediment" to="SedimentLoadTASediment"/>
+        <mapping from="sedimentload.ta.suspended_load" to="SedimentLoadTASusp"/>
+        <mapping from="sedimentload.ta.total" to="SedimentLoadTATotal"/>
+        <mapping from="sedimentload.ta.bed_load" to="SedimentLoadTABed"/>
+        <mapping from="sedimentload.ta.bed_load_susp_sand" to="SedimentLoadTABedSusp"/>
 
-        <mapping from="sedimentload.m3a.coarse" to="SedimentLoadM3ACoarse" />
-        <mapping from="sedimentload.m3a.fine_middle" to="SedimentLoadM3AFineMid" />
-        <mapping from="sedimentload.m3a.sand" to="SedimentLoadM3ASand" />
-        <mapping from="sedimentload.m3a.susp_sand" to="SedimentLoadM3ASuspSand" />
-        <mapping from="sedimentload.m3a.susp_sand_bed" to="SedimentLoadM3ASuspSandBed" />
-        <mapping from="sedimentload.m3a.suspended_sediment" to="SedimentLoadM3ASediment" />
-        <mapping from="sedimentload.m3a.suspended_load" to="SedimentLoadM3ASusp" />
-        <mapping from="sedimentload.m3a.total" to="SedimentLoadM3ATotal" />
-        <mapping from="sedimentload.m3a.bed_load" to="SedimentLoadM3ABed" />
-        <mapping from="sedimentload.m3a.bed_load_susp_sand" to="SedimentLoadM3ABedSusp" />
+        <mapping from="sedimentload.m3a.coarse" to="SedimentLoadM3ACoarse"/>
+        <mapping from="sedimentload.m3a.fine_middle" to="SedimentLoadM3AFineMid"/>
+        <mapping from="sedimentload.m3a.sand" to="SedimentLoadM3ASand"/>
+        <mapping from="sedimentload.m3a.susp_sand" to="SedimentLoadM3ASuspSand"/>
+        <mapping from="sedimentload.m3a.susp_sand_bed" to="SedimentLoadM3ASuspSandBed"/>
+        <mapping from="sedimentload.m3a.suspended_sediment" to="SedimentLoadM3ASediment"/>
+        <mapping from="sedimentload.m3a.suspended_load" to="SedimentLoadM3ASusp"/>
+        <mapping from="sedimentload.m3a.total" to="SedimentLoadM3ATotal"/>
+        <mapping from="sedimentload.m3a.bed_load" to="SedimentLoadM3ABed"/>
+        <mapping from="sedimentload.m3a.bed_load_susp_sand" to="SedimentLoadM3ABedSusp"/>
 
         <!-- Mappings for porosity from backend-DB -->
-        <mapping from="porosity" to="Porosity" />
+        <mapping from="porosity" to="Porosity"/>
 
         <!--  Mappings for S-INFO -->
-        <mapping from="bedheight_min" to="SInfoBedHeightMin" />
-        <mapping from="bedheight_max" to="SInfoBedHeightMax" />
-        
-        <mapping from="sinfo_facet_flow_depth" to="SInfoFlowDepth" />
-        <mapping from="sinfo_facet_flow_depth.filtered" to="SInfoFlowDepth" />
-        <mapping from="sinfo_facet_flow_depth_with_tkh" to="SInfoFlowDepthWithTkh" />
-        <mapping from="sinfo_facet_flow_depth_with_tkh.filtered" to="SInfoFlowDepthWithTkh" />
-        <mapping from="sinfo_facet_flow_depth_min" to="SInfoFlowDepthMin" />
-        <mapping from="sinfo_facet_flow_depth_min.filtered" to="SInfoFlowDepthMin" />
-        <mapping from="sinfo_facet_flow_depth_max" to="SInfoFlowDepthMax" />
-        <mapping from="sinfo_facet_flow_depth_max.filtered" to="SInfoFlowDepthMax" />
-
-        <mapping from="sinfo_facet_flow_depth_current" to="SInfoFlowDepthCurrent" />
-        <mapping from="sinfo_facet_flow_depth_current.filtered" to="SInfoFlowDepthCurrent" />
-        <mapping from="sinfo_facet_flow_depth_historical" to="SInfoFlowDepthHistorical" />
-        <mapping from="sinfo_facet_flow_depth_historical.filtered" to="SInfoFlowDepthHistorical" />
-
-        <mapping from="sinfo_facet_tkh" to="SInfoTkh" />
-
-        <mapping from="sinfo_facet_d50" to="BedDiameterTopLines" />
-        <mapping from="sinfo_facet_tau" to="FlowVelocityTau" />
-        <mapping from="sinfo_facet_velocity" to="FlowVelocityVMainChannel" />
-
-        <mapping from="sinfo_facet_flow_depth_current" to="FlowVelocityVMainChannel" />
-        <mapping from="sinfo_facet_flow_depth_current.filtered" to="FlowVelocityVMainChannel" />
-        <mapping from="sinfo_facet_flow_depth_historical" to="FlowVelocityVMainChannel" />
-        <mapping from="sinfo_facet_flow_depth_historical.filtered" to="FlowVelocityVMainChannel" />
-
-        <mapping from="sinfo_facet_flow_depth_development" to="SInfoFlowDepthDevelopment" />
-        <mapping from="sinfo_facet_flow_depth_development.filtered" to="SInfoFlowDepthDevelopment" />
-        <mapping from="sinfo_facet_flow_depth_development_per_year" to="SInfoFlowDepthDevelopmentPerYear" />
-        <mapping from="sinfo_facet_flow_depth_development_per_year.filtered" to="SInfoFlowDepthDevelopmentPerYear" />
-        <mapping from="sinfo_facet_waterlevel_difference.filtered" to="SInfoWaterlevelDifference" />
-        <mapping from="sinfo_facet_bedheight_difference.filtered" to="SInfoBedHeightDifference" />
-        
-        <mapping from="sinfo_facet_collision_calc_count" to="SInfoCollisionCount" />
-        <mapping from="sinfo_facet_collision_calc_count.2" to="SInfoCollisionCount2" />
-        <mapping from="sinfo_facet_collision_calc_count.3" to="SInfoCollisionCount3" />
+        <mapping from="bedheight_min" to="SInfoBedHeightMin"/>
+        <mapping from="bedheight_max" to="SInfoBedHeightMax"/>
         
-        <mapping from="sinfo_facet_flood_duration.left" to="SInfoFloodDurationLeft" />
-        <mapping from="sinfo_facet_flood_duration.right" to="SInfoFloodDurationRight" />
-        <mapping from="mainvalue.duration" to="SInfoMainValues" /> 
-        <mapping from="sinfo_facet_flood_height.left" to="SInfoInfrastructureHeightLeft" />
-        <mapping from="sinfo_facet_flood_height.right" to="SInfoInfrastructureHeightRight" />
-        <mapping from="mainvalue.w" to="SInfoMainValues" />
-        <mapping from="sinfo.mainvalues.q" to="SInfoMainValuesQ" />
-        <mapping from="sinfo.mainvalues.w" to="SInfoMainValuesW" />
-        <mapping from="infrastructure.w.left" to="InfrastructureWLeft" />
-        <mapping from="infrastructure.w.right" to="InfrastructureWRight" />
-        <mapping from="infrastructure.q.left" to="InfrastructureQLeft" />
-        <mapping from="infrastructure.q.right" to="InfrastructureQRight" />
-        
-        <mapping from="sinfo_facet_predefined_channel_width" to="SInfoPredefinedChannelWidth" />
-        <mapping from="sinfo_facet_predefined_channel_depth" to="SInfoPredefinedChannelDepth" />
-        <mapping from="sinfo_facet_predefined_tkh" to="SInfoPredefinedTkh" />
-        <mapping from="sinfo_facet_predefined_depthevol" to="SInfoPredefinedDepthEvol" />
-        <mapping from="sinfo_facet_predefined_depthevol_per_year" to="SInfoPredefinedDepthEvolPerYear" />
-        <mapping from="sinfo_facet_predefined_flowdepth" to="SInfoPredefinedFlowDepth" />
-        <mapping from="sinfo_facet_infrastructure_height" to="SInfoInfrastructureHeight" />
-        <mapping from="sinfo_facet_collision_count" to="SInfoCollisionCount" />
+        <mapping from="sinfo_facet_flow_depth" to="SInfoFlowDepth"/>
+        <mapping from="sinfo_facet_flow_depth.filtered" to="SInfoFlowDepth"/>
+        <mapping from="sinfo_facet_flow_depth_with_tkh" to="SInfoFlowDepthWithTkh"/>
+        <mapping from="sinfo_facet_flow_depth_with_tkh.filtered" to="SInfoFlowDepthWithTkh"/>
+        <mapping from="sinfo_facet_flow_depth_min" to="SInfoFlowDepthMin"/>
+        <mapping from="sinfo_facet_flow_depth_min.filtered" to="SInfoFlowDepthMin"/>
+        <mapping from="sinfo_facet_flow_depth_max" to="SInfoFlowDepthMax"/>
+        <mapping from="sinfo_facet_flow_depth_max.filtered" to="SInfoFlowDepthMax"/>
 
-        <mapping from="sinfo_flow_depth.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_flow_depth_minmax.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_flow_depth_development.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_flow_depth_development_peryear.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_tkk.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_collision.manualpoints" to="ManualPoints" />
+        <mapping from="sinfo_facet_flow_depth_current" to="SInfoFlowDepthCurrent"/>
+        <mapping from="sinfo_facet_flow_depth_current.filtered" to="SInfoFlowDepthCurrent"/>
+        <mapping from="sinfo_facet_flow_depth_historical" to="SInfoFlowDepthHistorical"/>
+        <mapping from="sinfo_facet_flow_depth_historical.filtered" to="SInfoFlowDepthHistorical"/>
 
-        <mapping from="sinfo_flood_duration.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_flood_height.manualpoints" to="ManualPoints" />
-        <mapping from="sinfo_floodduration_curve.manualpoints" to="ManualPoints" />
+        <mapping from="sinfo_facet_tkh" to="SInfoTkh"/>
+
+        <mapping from="sinfo_facet_d50" to="BedDiameterTopLines"/>
+        <mapping from="sinfo_facet_tau" to="FlowVelocityTau"/>
+        <mapping from="sinfo_facet_velocity" to="FlowVelocityVMainChannel"/>
+
+        <mapping from="sinfo_facet_flow_depth_current" to="FlowVelocityVMainChannel"/>
+        <mapping from="sinfo_facet_flow_depth_current.filtered" to="FlowVelocityVMainChannel"/>
+        <mapping from="sinfo_facet_flow_depth_historical" to="FlowVelocityVMainChannel"/>
+        <mapping from="sinfo_facet_flow_depth_historical.filtered" to="FlowVelocityVMainChannel"/>
+
+        <mapping from="sinfo_facet_flow_depth_development" to="SInfoFlowDepthDevelopment"/>
+        <mapping from="sinfo_facet_flow_depth_development.filtered" to="SInfoFlowDepthDevelopment"/>
+        <mapping from="sinfo_facet_flow_depth_development_per_year" to="SInfoFlowDepthDevelopmentPerYear"/>
+        <mapping from="sinfo_facet_flow_depth_development_per_year.filtered" to="SInfoFlowDepthDevelopmentPerYear"/>
+        <mapping from="sinfo_facet_waterlevel_difference.filtered" to="SInfoWaterlevelDifference"/>
+        <mapping from="sinfo_facet_bedheight_difference.filtered" to="SInfoBedHeightDifference"/>
         
-        <mapping from="uinfo_facet_salix_line" to="UInfoSalixLine" />
-        <mapping from="uinfo_facet_salix_line.filtered" to="UInfoSalixLine" />
-        <mapping from="uinfo_facet_salix_mnwmw" to="UInfoSalixMnwMw" />
-        <mapping from="uinfo_facet_salix_mnwmw.filtered" to="UInfoSalixMnwMw" />
-        <mapping from="uinfo_facet_salix_scenario" to="UInfoSalixScenario" />
-        <mapping from="uinfo_facet_salix_scenario.filtered" to="UInfoSalixScenario" />
-        <mapping from="uinfo_facet_salix_rank" to="UInfoSalixRank" />
+        <mapping from="sinfo_facet_collision_calc_count" to="SInfoCollisionCount"/>
+        <mapping from="sinfo_facet_collision_calc_count.2" to="SInfoCollisionCount2"/>
+        <mapping from="sinfo_facet_collision_calc_count.3" to="SInfoCollisionCount3"/>
+        
+        <mapping from="sinfo_facet_flood_duration.left" to="SInfoFloodDurationLeft"/>
+        <mapping from="sinfo_facet_flood_duration.right" to="SInfoFloodDurationRight"/>
+        <mapping from="mainvalue.duration" to="SInfoMainValues"/> 
+        <mapping from="sinfo_facet_flood_height.left" to="SInfoInfrastructureHeightLeft"/>
+        <mapping from="sinfo_facet_flood_height.right" to="SInfoInfrastructureHeightRight"/>
+        <mapping from="mainvalue.w" to="SInfoMainValues"/>
+        <mapping from="sinfo.mainvalues.q" to="SInfoMainValuesQ"/>
+        <mapping from="sinfo.mainvalues.w" to="SInfoMainValuesW"/>
+        <mapping from="infrastructure.w.left" to="InfrastructureWLeft"/>
+        <mapping from="infrastructure.w.right" to="InfrastructureWRight"/>
+        <mapping from="infrastructure.q.left" to="InfrastructureQLeft"/>
+        <mapping from="infrastructure.q.right" to="InfrastructureQRight"/>
+        
+        <mapping from="sinfo_facet_predefined_channel_width" to="SInfoPredefinedChannelWidth"/>
+        <mapping from="sinfo_facet_predefined_channel_depth" to="SInfoPredefinedChannelDepth"/>
+        <mapping from="sinfo_facet_predefined_tkh" to="SInfoPredefinedTkh"/>
+        <mapping from="sinfo_facet_predefined_depthevol" to="SInfoPredefinedDepthEvol"/>
+        <mapping from="sinfo_facet_predefined_depthevol_per_year" to="SInfoPredefinedDepthEvolPerYear"/>
+        <mapping from="sinfo_facet_predefined_flowdepth" to="SInfoPredefinedFlowDepth"/>
+        <mapping from="sinfo_facet_infrastructure_height" to="SInfoInfrastructureHeight"/>
+        <mapping from="sinfo_facet_collision_count" to="SInfoCollisionCount"/>
 
-        <mapping from="uinfo_facet_salix_line_cross_section_water_line" to="UInfoSalixCrossSectionWaterLine" />
-        <mapping from="uinfo_facet_salix_scenario_cross_section_water_line" to="UInfoSalixScenarioCrossSectionWaterLine" />
-        <mapping from="uinfo_facet_salix_waterlevel_mnw_cross_section_water_line" to="UInfoSalixMNWCrossSectionWaterLine" />
-        <mapping from="uinfo_facet_salix_waterlevel_mw_cross_section_water_line" to="UInfoSalixMWCrossSectionWaterLine" />
-        <mapping from="uinfo_facet_salix_waterlevel_mhw_cross_section_water_line" to="UInfoSalixMHWCrossSectionWaterLine" />
-        <mapping from="uinfo_facet_salix_waterlevel_mh5_cross_section_water_line" to="UInfoSalixMH5CrossSectionWaterLine" />
+        <mapping from="sinfo_flow_depth.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_flow_depth_minmax.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_flow_depth_development.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_flow_depth_development_peryear.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_tkk.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_collision.manualpoints" to="ManualPoints"/>
+
+        <mapping from="sinfo_flood_duration.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_flood_height.manualpoints" to="ManualPoints"/>
+        <mapping from="sinfo_floodduration_curve.manualpoints" to="ManualPoints"/>
         
-        <mapping from="uinfo_salix_line.manualpoints" to="ManualPoints" />
+        <mapping from="uinfo_facet_salix_line" to="UInfoSalixLine"/>
+        <mapping from="uinfo_facet_salix_line.filtered" to="UInfoSalixLine"/>
+        <mapping from="uinfo_facet_salix_mnwmw" to="UInfoSalixMnwMw"/>
+        <mapping from="uinfo_facet_salix_mnwmw.filtered" to="UInfoSalixMnwMw"/>
+        <mapping from="uinfo_facet_salix_scenario" to="UInfoSalixScenario"/>
+        <mapping from="uinfo_facet_salix_scenario.filtered" to="UInfoSalixScenario"/>
+        <mapping from="uinfo_facet_salix_rank" to="UInfoSalixRank"/>
+
+        <mapping from="uinfo_facet_salix_line_cross_section_water_line" to="UInfoSalixCrossSectionWaterLine"/>
+        <mapping from="uinfo_facet_salix_scenario_cross_section_water_line" to="UInfoSalixScenarioCrossSectionWaterLine"/>
+        <mapping from="uinfo_facet_salix_waterlevel_mnw_cross_section_water_line" to="UInfoSalixMNWCrossSectionWaterLine"/>
+        <mapping from="uinfo_facet_salix_waterlevel_mw_cross_section_water_line" to="UInfoSalixMWCrossSectionWaterLine"/>
+        <mapping from="uinfo_facet_salix_waterlevel_mhw_cross_section_water_line" to="UInfoSalixMHWCrossSectionWaterLine"/>
+        <mapping from="uinfo_facet_salix_waterlevel_hw5_cross_section_water_line" to="UInfoSalixMH5CrossSectionWaterLine"/>
+        
+        <mapping from="uinfo_salix_line.manualpoints" to="ManualPoints"/>
+
+        <mapping from="bundu_facet_w" to="LongitudinalSectionW"/>
+        <mapping from="bundu_facet_channelmin" to="BunduChannel"/>
+        <mapping from="bundu_facet_bedheight" to="BunduBed"/>
+        <mapping from="bundu_facet_q" to="LongitudinalSection"/>
+        <mapping from="bundu_facet_flowdepth.filtered" to="BunduBed"/>
+        <mapping from="bundu_facet_channeldepth" to="BunduChannel"/>
     </mappings>
 </themes>
\ No newline at end of file
--- a/artifacts/doc/conf/themes/default.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/themes/default.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -2129,26 +2129,26 @@
   <theme name="HistoricalDischargeWQW">
     <!-- the facet has no styling...
       <inherits>
-      <inherit from="HistoricalDischargeCurve" />
-      <inherit from="Label" />
+      <inherit from="HistoricalDischargeCurve"/>
+      <inherit from="Label"/>
       </inherits>
       <fields>
       <field name="linecolor" type="Color" display="Linienfarbe"
-      default="0, 0, 255" />
+      default="0, 0, 255"/>
       <field name="linesize" type="int" display="Liniendicke"
-      default="1" />
+      default="1"/>
       <field name="linetype" type="Dash" display="Linienart"
-      default="10" />
+      default="10"/>
       <field name="showlines" type="boolean" display="Linie anzeigen"
-      default="true" hints="hidden" />
+      default="true" hints="hidden"/>
       <field name="showpoints" type="boolean" display="Datenpunkte anzeigen"
-      default="false" />
+      default="false"/>
       <field name="pointsize" type="int" display="Punktdicke"
-      default="3" />
+      default="3"/>
       <field name="showlinelabel" type="boolean"
-      display="Beschriftung anzeigen" default="false" />
+      display="Beschriftung anzeigen" default="false"/>
       <field name="showpointlabel" type="boolean"
-      display="Beschriftung anzeigen" default="false" hints="hidden" />
+      display="Beschriftung anzeigen" default="false" hints="hidden"/>
       </fields> -->
   </theme>
 
@@ -3030,4 +3030,20 @@
       <field name="linecolor" type="Color" display="Linienfarbe" default="255, 0, 0"/>
     </fields>
   </theme>
+  <theme name="BunduChannel">
+    <inherits>
+      <inherit from="LongitudinalSectionW"/>
+    </inherits>
+    <fields>
+      <field name="linecolor" type="Color" display="Linienfarbe" default="0, 192, 32"/>
+    </fields>
+  </theme>
+  <theme name="BunduBed">
+    <inherits>
+      <inherit from="LongitudinalSectionW"/>
+    </inherits>
+    <fields>
+      <field name="linecolor" type="Color" display="Linienfarbe" default="224, 0, 0"/>
+    </fields>
+  </theme>
 </themegroup>
\ No newline at end of file
--- a/artifacts/doc/conf/themes/second.xml	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/doc/conf/themes/second.xml	Mon Aug 20 10:17:00 2018 +0200
@@ -2129,26 +2129,26 @@
   <theme name="HistoricalDischargeWQW">
     <!-- the facet has no styling...
       <inherits>
-      <inherit from="HistoricalDischargeCurve" />
-      <inherit from="Label" />
+      <inherit from="HistoricalDischargeCurve"/>
+      <inherit from="Label"/>
       </inherits>
       <fields>
       <field name="linecolor" type="Color" display="Linienfarbe"
-      default="0, 0, 255" />
+      default="0, 0, 255"/>
       <field name="linesize" type="int" display="Liniendicke"
-      default="1" />
+      default="1"/>
       <field name="linetype" type="Dash" display="Linienart"
-      default="10" />
+      default="10"/>
       <field name="showlines" type="boolean" display="Linie anzeigen"
-      default="true" hints="hidden" />
+      default="true" hints="hidden"/>
       <field name="showpoints" type="boolean" display="Datenpunkte anzeigen"
-      default="false" />
+      default="false"/>
       <field name="pointsize" type="int" display="Punktdicke"
-      default="3" />
+      default="3"/>
       <field name="showlinelabel" type="boolean"
-      display="Beschriftung anzeigen" default="false" />
+      display="Beschriftung anzeigen" default="false"/>
       <field name="showpointlabel" type="boolean"
-      display="Beschriftung anzeigen" default="false" hints="hidden" />
+      display="Beschriftung anzeigen" default="false" hints="hidden"/>
       </fields> -->
   </theme>
 
@@ -3018,4 +3018,20 @@
       <field name="linecolor" type="Color" display="Linienfarbe" default="255, 0, 0"/>
     </fields>
   </theme>
+  <theme name="BunduChannel">
+    <inherits>
+      <inherit from="LongitudinalSectionW"/>
+    </inherits>
+    <fields>
+      <field name="linecolor" type="Color" display="Linienfarbe" default="0, 192, 32"/>
+    </fields>
+  </theme>
+  <theme name="BunduBed">
+    <inherits>
+      <inherit from="LongitudinalSectionW"/>
+    </inherits>
+    <fields>
+      <field name="linecolor" type="Color" display="Linienfarbe" default="224, 0, 0"/>
+    </fields>
+  </theme>
 </themegroup>
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BUNDUArtifact.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BUNDUArtifact.java	Mon Aug 20 10:17:00 2018 +0200
@@ -14,6 +14,7 @@
 import org.dive4elements.artifactdatabase.state.FacetActivity;
 import org.dive4elements.artifacts.Artifact;
 import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.model.FacetTypes;
 
 /**
  * The default BUNDU artifact.
@@ -41,11 +42,17 @@
 
     static {
         // Active/deactivate facets.
-        // BEWARE: we can only define one activity for "sinfo", so we use the artifact
+        // BEWARE: we can only define one activity for "bundu", so we use the artifact
         // as place for this
         FacetActivity.Registry.getInstance().register(ARTIFACT_NAME, new FacetActivity() {
             @Override
             public Boolean isInitialActive(final Artifact artifact, final Facet facet, final String output) {
+
+                final String name = facet.getName();
+
+                if (FacetTypes.LONGITUDINAL_Q.equals(name))
+                    return Boolean.FALSE;
+
                 return null;
             }
         });
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BunduResultType.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BunduResultType.java	Mon Aug 20 10:17:00 2018 +0200
@@ -33,8 +33,8 @@
     private static final long serialVersionUID = 1L;
 
     public static final BunduResultType bezugswst = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.wst.export.csv.meta.header.bezugswst",
-            "bundu.wst.export.pdf.meta.header.bezugswst") { // Unit
-                                                            // dynamic
+            "bundu.wst.export.pdf.meta.header.bezugswst") { // Unit dynamic
+
         private static final long serialVersionUID = 1L;
 
         @Override
@@ -45,11 +45,12 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getFlowDepth(context); // REMARK same as SInfoResultType.waterlevel
         }
     };
 
     public static final BunduResultType sounding = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.sounding") {
+
         private static final long serialVersionUID = 1L;
 
         @Override
@@ -65,6 +66,7 @@
 
     public static final BunduResultType channelLowerEdge = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.channel.lower_edge",
             "bundu.export.bezugswst.pdf.meta.miss.channel.lower_edge") { // Unit dynamic
+
         private static final long serialVersionUID = 1L;
 
         @Override
@@ -75,12 +77,13 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getFlowDepth(context); // REMARK same as SInfoResultType.waterlevel
         }
     };
 
-    public static final BunduResultType channelMinDepth = new BunduResultType(I18NStrings.UNIT_M, "bundu.export.bezugswst.csv.meta.miss.channel.min_depth",
+    public static final BunduResultType channelDepth = new BunduResultType(I18NStrings.UNIT_M, "bundu.export.bezugswst.csv.meta.miss.channel.min_depth",
             "bundu.export.bezugswst.pdf.meta.miss.channel.min_depth") {
+
         private static final long serialVersionUID = 1L;
 
         @Override
@@ -109,7 +112,7 @@
             throw new UnsupportedOperationException();
         }
     };
-    public static final BunduResultType missVolume = new BunduResultType(I18NStrings.UNIT_CUBIC_M, "bundu.export.bezugswst.csv.meta.miss.volume") {
+    public static final BunduResultType missVolumeTotal = new BunduResultType(I18NStrings.UNIT_CUBIC_M, "bundu.export.bezugswst.csv.meta.miss.volume.total") {
         private static final long serialVersionUID = 1L;
 
         @Override
@@ -120,11 +123,11 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getIntegerFormatter(context);
         }
     };
 
-    public static final BunduResultType missMass = new BunduResultType(I18NStrings.UNIT_TON, "bundu.export.bezugswst.csv.meta.miss.mass",
+    public static final BunduResultType missMassTotal = new BunduResultType(I18NStrings.UNIT_TON, "bundu.export.bezugswst.csv.meta.miss.mass.total",
             "bundu.export.bezugswst.csv.meta.miss.mass") {
         private static final long serialVersionUID = 1L;
 
@@ -136,7 +139,7 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getMassFormat(context);
         }
     };
 
@@ -152,7 +155,7 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getIntegerFormatter(context);
         }
     };
 
@@ -168,7 +171,7 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getCurrencyFormat(context);
         }
     };
 
@@ -184,7 +187,7 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getChannelWidth(context);
         }
     };
 
@@ -200,13 +203,76 @@
 
         @Override
         protected NumberFormat createFormatter(final CallContext context) {
-            return Formatter.getWaterlevelQ(context); // Richtiges Format? TODO check!
+            return Formatter.getDensityFormat(context);
         }
     };
 
-    public static final BunduResultType meanBedheight = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.mean_bedheight") {
-        private static final long serialVersionUID = 1L; // unit steht in der zelle jedesmal: z.B. 1125 [m³] / 1912.5 [t] (Dezimaltrennzeichen bwt)
+    public static final BunduResultType missVolumeMeanBed = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.volume.mean_bed") {
 
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public String exportValue(final CallContext context, final Object value) {
+            final double doubleValue = asDouble(value);
+            return exportDoubleValue(context, doubleValue);
+        }
+
+        @Override
+        protected NumberFormat createFormatter(final CallContext context) {
+            return Formatter.getIntegerFormatter(context);
+        }
+    };
+
+    public static final BunduResultType missMassMeanBed = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.mass.mean_bed") {
+
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public String exportValue(final CallContext context, final Object value) {
+            final double doubleValue = asDouble(value);
+            return exportDoubleValue(context, doubleValue);
+        }
+
+        @Override
+        protected NumberFormat createFormatter(final CallContext context) {
+            return Formatter.getIntegerFormatter(context);
+        }
+    };
+
+    // RESULT TYPE FIELDS
+    public static final BunduResultType missVolumeFields = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.volume.field") {
+
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public String exportValue(final CallContext context, final Object value) {
+            final double doubleValue = asDouble(value);
+            return exportDoubleValue(context, doubleValue);
+        }
+
+        @Override
+        protected NumberFormat createFormatter(final CallContext context) {
+            return Formatter.getMassFormat(context);
+        }
+    };
+
+    public static final BunduResultType missMassfields = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.mass.field") {
+
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public String exportValue(final CallContext context, final Object value) {
+            final double doubleValue = asDouble(value);
+            return exportDoubleValue(context, doubleValue);
+        }
+
+        @Override
+        protected NumberFormat createFormatter(final CallContext context) {
+            return Formatter.getMassFormat(context);
+        }
+    };
+
+    public static final BunduResultType missStationRange = new BunduResultType(I18NStrings.UNIT_KM, I18NStrings.CSV_KM_HEADER) {
         @Override
         public String exportValue(final CallContext context, final Object value) {
             return exportStringValue(value);
@@ -218,31 +284,4 @@
         }
     };
 
-    // RESULT TYPE FIELDS
-    public static final BunduResultType fields = new BunduResultType(I18NStrings.UNIT_NONE, "bundu.export.bezugswst.csv.meta.miss.field") {
-        private static final long serialVersionUID = 1L; // unit steht in der zelle jedesmal: z.B. 1125 [m³] / 1912.5 [t] (Dezimaltrennzeichen bwt)
-
-        @Override
-        public String exportValue(final CallContext context, final Object value) {
-            return exportStringValue(value);
-        }
-
-        @Override
-        protected NumberFormat createFormatter(final CallContext context) {
-            throw new UnsupportedOperationException();
-        }
-    };
-
-    public static final BunduResultType stationForMiss = new BunduResultType(I18NStrings.UNIT_KM, I18NStrings.CSV_KM_HEADER) {
-        @Override
-        public String exportValue(final CallContext context, final Object value) {
-            return exportStringValue(value); // leider doof...
-        }
-
-        @Override
-        protected NumberFormat createFormatter(final CallContext context) {
-            throw new UnsupportedOperationException();
-        }
-    };
-
 }
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstCalculation.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstCalculation.java	Mon Aug 20 10:17:00 2018 +0200
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
  * Software engineering by
  *  Björnsen Beratende Ingenieure GmbH
  *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
@@ -7,28 +7,39 @@
  * and comes with ABSOLUTELY NO WARRANTY! Check out the
  * documentation coming with Dive4Elements River for details.
  */
+
 package org.dive4elements.river.artifacts.bundu.bezugswst;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.dive4elements.artifacts.CallContext;
-import org.dive4elements.artifacts.CallMeta;
+import org.dive4elements.river.artifacts.access.FixRealizingAccess;
 import org.dive4elements.river.artifacts.bundu.BUNDUArtifact;
 import org.dive4elements.river.artifacts.bundu.BunduResultType;
 import org.dive4elements.river.artifacts.common.GeneralResultType;
 import org.dive4elements.river.artifacts.common.ResultRow;
+import org.dive4elements.river.artifacts.model.Calculation;
+import org.dive4elements.river.artifacts.model.Calculation.Problem;
 import org.dive4elements.river.artifacts.model.CalculationResult;
+import org.dive4elements.river.artifacts.model.WQKms;
+import org.dive4elements.river.artifacts.model.fixings.FixRealizingCalculation;
+import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
 import org.dive4elements.river.artifacts.resources.Resources;
-import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo;
+import org.dive4elements.river.artifacts.sinfo.common.RiverInfoProvider;
+import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
+import org.dive4elements.river.artifacts.sinfo.tkhstate.BedHeightsFinder;
+import org.dive4elements.river.artifacts.sinfo.tkhstate.WinfoArtifactWrapper;
 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils;
 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
+import org.dive4elements.river.exports.WaterlevelDescriptionBuilder;
 import org.dive4elements.river.model.River;
+import org.dive4elements.river.utils.Formatter;
 
 class BezugswstCalculation {
 
-    // private static Logger log = Logger.getLogger(FloodDurationCalculation.class);
+    // private static Logger log = Logger.getLogger(BezugswstCalculation.class);
 
     private final CallContext context;
 
@@ -36,122 +47,182 @@
         this.context = context;
     }
 
+    /**
+     * Calculates the result rows of a bundu bzws workflow
+     */
     public CalculationResult calculate(final BUNDUArtifact bunduartifact) {
 
+        // Get input data
         final String user = CalculationUtils.findArtifactUser(this.context, bunduartifact);
-        final CallMeta m = this.context.getMeta();
-        /* access input data */
         final BunduAccess access = new BunduAccess(bunduartifact);
-
         final River river = access.getRiver();
         final RiverInfo riverInfo = new RiverInfo(river);
-        final String calcModeLabel = Resources.getMsg(m, "bundu_bezugswst");
-        final BezugswstCalculationResults results = new BezugswstCalculationResults(calcModeLabel, user, riverInfo, access.getRange());
-
-        // TODO: get wst, sounding for river
-        final WstInfo wstInfo = null;
-        final BedHeightInfo sounding = null;
-        // final int wspYear = waterlevel.getYear();
-        // final WstInfo wstInfo = new WstInfo(wspLabel, wspYear, riverInfo.getReferenceGauge());
-        final String function = access.getFunction();
-        final boolean preprocessing = access.getPreprocessing();// nullpointer dürfen nicht entstehen; Fehler läge woanders
+        final String calcModeLabel = Resources.getMsg(this.context.getMeta(), "bundu_bezugswst");
+        final boolean preprocessing = access.getPreprocessing();
         final int startYear = access.getStartYear();
         final int endYear = access.getBezugsJahr();
         final Integer ud = access.getUd();
-        final double[] qs = access.getQs();// funktioniert so nicht.
         final Double missingVolFrom = access.getMissingVolFrom();
         final Double missingVolTo = access.getMissingVolTo();
 
-        final List<ResultRow> list = new ArrayList<>();
-        final ResultRow row = ResultRow.create();
-        row.putValue(GeneralResultType.station, 666.666);
-        row.putValue(BunduResultType.bezugswst, 22.15);
-        row.putValue(GeneralResultType.dischargeQwithUnit, 77.666);
-        row.putValue(GeneralResultType.waterlevelLabel, "GLQ");
-        row.putValue(GeneralResultType.gaugeLabel, "Bonn");
-        row.putValue(GeneralResultType.location, "keine Lage");
-        list.add(row);
-
-        final BezugswstMainCalculationResult result = new BezugswstMainCalculationResult("label? was fürn label?", list, sounding, wstInfo, function,
-                preprocessing, startYear, endYear, ud, qs, missingVolFrom, missingVolTo);
-        results.addResult(result, null);
-
-        // missing volume calculation
-        if (access.getMissingVolFrom() != null) {
-            /// FIRST RESULT
-            final List<ResultRow> listResult1 = new ArrayList<>();
-            final ResultRow rowResult1 = ResultRow.create();
-            rowResult1.putValue(BunduResultType.bezugswst, 45.15);
-            rowResult1.putValue(GeneralResultType.dischargeQwithUnit, 890);
-            rowResult1.putValue(GeneralResultType.waterlevelLabel, "GLQ");
-            rowResult1.putValue(GeneralResultType.gaugeLabel, "Bonn");
-
-            rowResult1.putValue(BunduResultType.sounding, "NIEDERRHEIN_QP-2002");
-            rowResult1.putValue(BunduResultType.channelLowerEdge, 42.65);
-            rowResult1.putValue(BunduResultType.channelMinDepth, 2.5);
-            rowResult1.putValue(BunduResultType.hasMissingDepth, Resources.getMsg(m, "true"));
-            rowResult1.putValue(BunduResultType.missVolume, 2250);
-            rowResult1.putValue(BunduResultType.missMass, 3897);
-            rowResult1.putValue(BunduResultType.excavationVolume, 2475);
-            rowResult1.putValue(BunduResultType.excavationCosts, 999.99);
-            rowResult1.putValue(BunduResultType.channelWidth, 150);
-            rowResult1.putValue(BunduResultType.density, 1732);
-
-            rowResult1.putValue(GeneralResultType.location, "Spitzenlage");
-            listResult1.add(rowResult1);
+        final BezugswstCalculationResults results = new BezugswstCalculationResults(calcModeLabel, user, riverInfo, access.getRange());
 
-            final BezugswstMissVolCalculationResult1 r1 = new BezugswstMissVolCalculationResult1(
-                    Resources.getMsg(m, "bundu.export.csv.title.bezugswst.result1"), listResult1);
-            results.addResult(r1, null);
-
-            // SECOND RESULT
-            final List<ResultRow> listResult2 = new ArrayList<>();
-            final ResultRow rowResult2 = ResultRow.create();
+        final Calculation problems = new Calculation();
 
-            rowResult2.putValue(GeneralResultType.station, 890);
-            final List<String> fieldValues = new ArrayList<>();
-            fieldValues.add("444 [m³] / 765 [t]");
-            fieldValues.add("4.444 [m³] / 1.765 [t]");
-            fieldValues.add("444 [m³] / 765 [t]");
-            fieldValues.add("");
-            fieldValues.add("");
-            fieldValues.add("");
-            fieldValues.add("");
-            fieldValues.add("");
-            fieldValues.add("");
-            fieldValues.add("444 [m³] / 765 [t]");
-            rowResult2.putValue(BunduResultType.fields, fieldValues);
-            rowResult2.putValue(BunduResultType.meanBedheight, "9.444 [m³] / 8.765 [t]");
-
-            listResult2.add(rowResult2);
+        // Calculate the wspl for the selected river range as in fixa awspl
+        bunduartifact.addStringData("wq_isq", "true");
+        final WinfoArtifactWrapper winfo = new WinfoArtifactWrapper(bunduartifact);
+        final RiverInfoProvider riverInfoProvider = RiverInfoProvider.forRange(this.context, river, access.getRange(), true);
+        final WQKms wqkms = calculateWspl(bunduartifact, problems);
+        if (wqkms == null)
+            return new CalculationResult(results, problems);
+        final WstInfo wstInfo = new WstInfo(wqkms.getName(), 0, riverInfoProvider.getReferenceGauge(), true);
 
-            final BezugswstMissVolCalculationResult2 r2 = new BezugswstMissVolCalculationResult2(
-                    Resources.getMsg(m, "bundu.export.csv.title.bezugswst.result2"), listResult2);
-            results.addResult(r2, null);
-
-            // Third RESULT
-            final List<ResultRow> listResult3 = new ArrayList<>();
-            final ResultRow rowResult3 = ResultRow.create();
+        // Fetch the bed heights of the selected sounding
+        final int bedHeightId = access.getBedHeightID();
+        final BedHeightsFinder bedHeightsFinder = BedHeightsFinder.forId(problems, bedHeightId, access.getRange());
+        if (bedHeightsFinder == null)
+            return new CalculationResult(results, problems);
 
-            rowResult3.putValue(BunduResultType.stationForMiss, "650 - 651");
-            rowResult3.putValue(BunduResultType.missVolume, 52950);
-            rowResult3.putValue(BunduResultType.missMass, 91491);
+        // Fetch the river channel data
+        final ChannelFinder channelFinder = ChannelFinder.loadValues(problems, river, access.getBezugsJahr());
+        if (channelFinder == null)
+            return new CalculationResult(results, problems);
 
-            listResult3.add(rowResult3);
-
-            final BezugswstMissVolCalculationResult3 r3 = new BezugswstMissVolCalculationResult3(
-                    Resources.getMsg(m, "bundu.export.csv.title.bezugswst.result3"), listResult3);
-            results.addResult(r3, null);
-
+        // Calculate the result rows
+        final List<ResultRow> rows = new ArrayList<>();
+        for (int i = 0; i <= wqkms.size() - 1; i++) {
+            rows.add(createRow(wqkms.getKm(i), wqkms.getW(i), wqkms.getQ(i), bedHeightsFinder, channelFinder, riverInfoProvider, wstInfo));
         }
 
-        return new CalculationResult(results, null);// problems);
+        // Add the result to the results collection
+        final WaterlevelDescriptionBuilder descBuilder = new WaterlevelDescriptionBuilder(winfo, this.context);
+        final String qtext = descBuilder.getMetadataQ();
+        final BezugswstMainCalculationResult result = new BezugswstMainCalculationResult("bundu-bzws", rows, bedHeightsFinder.getInfo(),
+                wstInfo, access.getFunction(), preprocessing, startYear, endYear, ud, qtext, missingVolFrom, missingVolTo);
+        results.addResult(result, problems);
+
+        // // missing volume calculation
+        // if (access.getMissingVolFrom() != null) {
+        // /// FIRST RESULT
+        // final List<ResultRow> listResult1 = new ArrayList<>();
+        // final ResultRow rowResult1 = ResultRow.create();
+        // rowResult1.putValue(BunduResultType.bezugswst, 45.15);
+        // rowResult1.putValue(GeneralResultType.dischargeQwithUnit, 890);
+        // rowResult1.putValue(GeneralResultType.waterlevelLabel, "GLQ");
+        // rowResult1.putValue(GeneralResultType.gaugeLabel, "Bonn");
+        //
+        // rowResult1.putValue(BunduResultType.sounding, "NIEDERRHEIN_QP-2002");
+        // rowResult1.putValue(BunduResultType.channelLowerEdge, 42.65);
+        // rowResult1.putValue(BunduResultType.channelMinDepth, 2.5);
+        // rowResult1.putValue(BunduResultType.hasMissingDepth, Resources.getMsg(meta, "true"));
+        // rowResult1.putValue(BunduResultType.missVolume, 2250);
+        // rowResult1.putValue(BunduResultType.missMass, 3897);
+        // rowResult1.putValue(BunduResultType.excavationVolume, 2475);
+        // rowResult1.putValue(BunduResultType.excavationCosts, 999.99);
+        // rowResult1.putValue(BunduResultType.channelWidth, 150);
+        // rowResult1.putValue(BunduResultType.density, 1732);
+        //
+        // rowResult1.putValue(GeneralResultType.location, "Spitzenlage");
+        // listResult1.add(rowResult1);
+        //
+        // final BezugswstMissVolCalculationResult1 r1 = new BezugswstMissVolCalculationResult1(
+        // Resources.getMsg(meta, "bundu.export.csv.title.bezugswst.result1"), listResult1);
+        // results.addResult(r1, null);
+        //
+        // // SECOND RESULT
+        // final List<ResultRow> listResult2 = new ArrayList<>();
+        // final ResultRow rowResult2 = ResultRow.create();
+        //
+        // rowResult2.putValue(GeneralResultType.station, 890);
+        // final List<String> fieldValues = new ArrayList<>();
+        // fieldValues.add("444 [m³] / 765 [t]");
+        // fieldValues.add("4.444 [m³] / 1.765 [t]");
+        // fieldValues.add("444 [m³] / 765 [t]");
+        // fieldValues.add("");
+        // fieldValues.add("");
+        // fieldValues.add("");
+        // fieldValues.add("");
+        // fieldValues.add("");
+        // fieldValues.add("");
+        // fieldValues.add("444 [m³] / 765 [t]");
+        // rowResult2.putValue(BunduResultType.fields, fieldValues);
+        // rowResult2.putValue(BunduResultType.meanBedheight, "9.444 [m³] / 8.765 [t]");
+        //
+        // listResult2.add(rowResult2);
+        //
+        // final BezugswstMissVolCalculationResult2 r2 = new BezugswstMissVolCalculationResult2(
+        // Resources.getMsg(meta, "bundu.export.csv.title.bezugswst.result2"), listResult2);
+        // results.addResult(r2, null);
+        //
+        // // Third RESULT
+        // final List<ResultRow> listResult3 = new ArrayList<>();
+        // final ResultRow rowResult3 = ResultRow.create();
+        //
+        // rowResult3.putValue(BunduResultType.stationForMiss, "650 - 651");
+        // rowResult3.putValue(BunduResultType.missVolume, 52950);
+        // rowResult3.putValue(BunduResultType.missMass, 91491);
+        //
+        // listResult3.add(rowResult3);
+        //
+        // final BezugswstMissVolCalculationResult3 r3 = new BezugswstMissVolCalculationResult3(
+        // Resources.getMsg(meta, "bundu.export.csv.title.bezugswst.result3"), listResult3);
+        // results.addResult(r3, null);
+        //
+        // }
+
+        return new CalculationResult(results, problems);
     }
 
     /**
-     * Calculates one W-MSH differences pair.
-     *
-     * @param infoProvider
+     * Calculates a w-q-longitudinal section for a river range and Q specified in an artifact
      */
+    private WQKms calculateWspl(final BUNDUArtifact bundu, final Calculation problems) {
 
+        final FixRealizingAccess access = new FixRealizingAccess(bundu);
+        final FixRealizingCalculation calc = new FixRealizingCalculation(access);
+
+        final CalculationResult res = calc.calculate();
+
+        final FixRealizingResult fixRes = (FixRealizingResult) res.getData();
+        final WQKms[] wqkms = (fixRes != null) ? fixRes.getWQKms() : new WQKms[0];
+
+        final List<Problem> problems2 = res.getReport().getProblems();
+        if (problems2 != null) {
+            for (final Problem problem : problems2) {
+                problems.addProblem(problem);
+            }
+        }
+        if (wqkms.length >= 1)
+            return wqkms[0];
+        return null;
+    }
+
+    /**
+     * Create a result row for a station
+     */
+    private ResultRow createRow(final double station, final double w, final double q, final BedHeightsFinder bedHeightsFinder,
+            final ChannelFinder channelFinder, final RiverInfoProvider riverInfoProv, final WstInfo wstInfo) {
+
+        final ResultRow row = ResultRow.create();
+        row.putValue(GeneralResultType.station, station);
+        row.putValue(BunduResultType.bezugswst, w);
+        row.putValue(GeneralResultType.dischargeQwithUnit, q);
+        row.putValue(GeneralResultType.waterlevelLabel, wstInfo.getLabel());
+        row.putValue(GeneralResultType.gaugeLabel, riverInfoProv.findGauge(station));
+        row.putValue(GeneralResultType.location, riverInfoProv.getLocation(station));
+        final double msh = bedHeightsFinder.getMeanBedHeight(station);
+        row.putValue(SInfoResultType.meanBedHeight, msh);
+        if (!Double.isNaN(w) && !Double.isNaN(msh))
+            row.putValue(SInfoResultType.flowdepth, Formatter.roundFlowDepth(w).subtract(Formatter.roundFlowDepth(msh)).doubleValue());
+        else
+            row.putValue(SInfoResultType.flowdepth, Double.NaN);
+        final double channelDepth = channelFinder.getDepth(station);
+        row.putValue(BunduResultType.channelDepth, channelDepth);
+        if (!Double.isNaN(w) && !Double.isNaN(channelDepth))
+            row.putValue(BunduResultType.channelLowerEdge, Formatter.roundFlowDepth(w).subtract(Formatter.roundFlowDepth(channelDepth)).doubleValue());
+        else
+            row.putValue(BunduResultType.channelLowerEdge, Double.NaN);
+        return row;
+    }
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstDepthProcessor.java	Mon Aug 20 10:17:00 2018 +0200
@@ -0,0 +1,86 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * 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)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.artifacts.bundu.bezugswst;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
+import org.dive4elements.artifactdatabase.state.Facet;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.bundu.BunduResultType;
+import org.dive4elements.river.artifacts.common.AbstractProcessor;
+import org.dive4elements.river.artifacts.common.AbstractResultType;
+import org.dive4elements.river.artifacts.resources.Resources;
+import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
+import org.dive4elements.river.exports.DiagramGenerator;
+import org.dive4elements.river.themes.ThemeDocument;
+
+/**
+ * Processor to generate the facets and data series of a bundu bezugswst depth longitudinal section
+ *
+ * @author Matthias Schäfer
+ *
+ */
+public final class BezugswstDepthProcessor extends AbstractProcessor {
+
+    private static final String FACET_FLOWDEPTH_FILTERED = "bundu_facet_flowdepth.filtered";
+
+    private static final String FACET_FLOWDEPTH_FILTERED_DESCRIPTION = "bundu_facet_flowdepth.filtered.description";
+
+    public static final String FACET_CHANNELDEPTH = "bundu_facet_channeldepth";
+
+    private static final String FACET_CHANNELDEPTH_DESCRIPTION = "bundu_facet_channeldepth.description";
+
+    private static final String AXIS_LABEL = "sinfo.chart.flow_depth.section.yaxis.label";
+
+    private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
+
+    static {
+        HANDLED_FACET_TYPES.add(FACET_FLOWDEPTH_FILTERED);
+        HANDLED_FACET_TYPES.add(FACET_CHANNELDEPTH);
+    }
+
+    public BezugswstDepthProcessor() {
+        super(AXIS_LABEL, HANDLED_FACET_TYPES);
+    }
+
+    public static Facet createFlowdepthFilteredFacet(final CallContext context, final String hash, final String id, final int facetIndex,
+            final int resultIndex, final String seriesName) {
+
+        final String description = Resources.getMsg(context.getMeta(), FACET_FLOWDEPTH_FILTERED_DESCRIPTION, FACET_FLOWDEPTH_FILTERED_DESCRIPTION, seriesName);
+        return new BezugswstResultFacet(facetIndex, resultIndex, FACET_FLOWDEPTH_FILTERED, description, AXIS_LABEL, id, hash);
+    }
+
+    public static Facet createChanneldepthFacet(final CallContext context, final String hash, final String id, final int facetIndex,
+            final int resultIndex) {
+
+        final String description = Resources.getMsg(context.getMeta(), FACET_CHANNELDEPTH_DESCRIPTION, FACET_CHANNELDEPTH_DESCRIPTION);
+        return new BezugswstResultFacet(facetIndex, resultIndex, FACET_CHANNELDEPTH, description, AXIS_LABEL, id, hash);
+    }
+
+    @Override
+    protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
+
+        return buildSeriesForType(generator, bundle, theme, visible, doGetType(bundle.getFacetName()), GAP_DISTANCE);
+    }
+
+    protected AbstractResultType doGetType(final String facetName) {
+
+        if (FACET_FLOWDEPTH_FILTERED.contentEquals(facetName))
+            return SInfoResultType.flowdepth;
+        if (FACET_CHANNELDEPTH.contentEquals(facetName))
+            return BunduResultType.channelDepth;
+
+        final String error = String.format("Unknown facet name: %s", facetName);
+        throw new UnsupportedOperationException(error);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstHeightProcessor.java	Mon Aug 20 10:17:00 2018 +0200
@@ -0,0 +1,111 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * 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)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.artifacts.bundu.bezugswst;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
+import org.dive4elements.artifactdatabase.state.Facet;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.bundu.BunduResultType;
+import org.dive4elements.river.artifacts.common.AbstractProcessor;
+import org.dive4elements.river.artifacts.common.AbstractResultType;
+import org.dive4elements.river.artifacts.common.GeneralResultType;
+import org.dive4elements.river.artifacts.resources.Resources;
+import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
+import org.dive4elements.river.exports.DiagramGenerator;
+import org.dive4elements.river.exports.LongitudinalSectionGenerator;
+import org.dive4elements.river.themes.ThemeDocument;
+
+/**
+ * Processor to generate the facets and data series of a bundu bezugswst depth longitudinal section
+ *
+ * @author Matthias Schäfer
+ *
+ */
+public final class BezugswstHeightProcessor extends AbstractProcessor {
+
+    private static final String FACET_W = "bundu_facet_w";
+
+    private static final String FACET_W_DESCRIPTION = "bundu_facet_w.description";
+
+    private static final String FACET_CHANNELMIN = "bundu_facet_channelmin";
+
+    private static final String FACET_CHANNELMIN_DESCRIPTION = "bundu_facet_channelmin.description";
+
+    private static final String FACET_BEDHEIGHT = "bundu_facet_bedheight";
+
+    private static final String FACET_BEDHEIGHT_DESCRIPTION = "bundu_facet_bedheight.description";
+
+    public static final String FACET_Q = "bundu_facet_q";
+
+    private static final String FACET_Q_DESCRIPTION = "bundu_facet_q.description";
+
+    private static final String AXIS_LABEL = LongitudinalSectionGenerator.I18N_YAXIS_LABEL;
+
+    private static final String Q_AXIS_LABEL = LongitudinalSectionGenerator.I18N_2YAXIS_LABEL;
+
+    private static final Set<String> HANDLED_FACET_TYPES = new HashSet<>();
+
+    static {
+        HANDLED_FACET_TYPES.add(FACET_W);
+        HANDLED_FACET_TYPES.add(FACET_CHANNELMIN);
+        HANDLED_FACET_TYPES.add(FACET_BEDHEIGHT);
+        HANDLED_FACET_TYPES.add(FACET_Q);
+    }
+
+    public BezugswstHeightProcessor() {
+        super(AXIS_LABEL, HANDLED_FACET_TYPES);
+    }
+
+    public static Facet createWFacet(final CallContext context, final String hash, final String id, final int facetIndex,
+            final int resultIndex, final String seriesName) {
+
+        final String description = Resources.getMsg(context.getMeta(), FACET_W_DESCRIPTION, FACET_W_DESCRIPTION, seriesName);
+        return new BezugswstResultFacet(facetIndex, resultIndex, FACET_W, description, AXIS_LABEL, id, hash);
+    }
+
+    public static Facet createChannelminFacet(final CallContext context, final String hash, final String id, final int facetIndex,
+            final int resultIndex) {
+
+        final String description = Resources.getMsg(context.getMeta(), FACET_CHANNELMIN_DESCRIPTION, FACET_CHANNELMIN_DESCRIPTION);
+        return new BezugswstResultFacet(facetIndex, resultIndex, FACET_CHANNELMIN, description, AXIS_LABEL, id, hash);
+    }
+
+    public static Facet createBedheightFacet(final CallContext context, final String hash, final String id, final int facetIndex,
+            final int resultIndex, final String seriesName) {
+
+        final String description = Resources.getMsg(context.getMeta(), FACET_BEDHEIGHT_DESCRIPTION, FACET_BEDHEIGHT_DESCRIPTION, seriesName);
+        return new BezugswstResultFacet(facetIndex, resultIndex, FACET_BEDHEIGHT, description, AXIS_LABEL, id, hash);
+    }
+
+    @Override
+    protected String generateSeries(final DiagramGenerator generator, final ArtifactAndFacet bundle, final ThemeDocument theme, final boolean visible) {
+
+        return buildSeriesForType(generator, bundle, theme, visible, doGetType(bundle.getFacetName()), GAP_DISTANCE);
+    }
+
+    protected AbstractResultType doGetType(final String facetName) {
+
+        if (FACET_W.contentEquals(facetName))
+            return BunduResultType.bezugswst;
+        if (FACET_CHANNELMIN.contentEquals(facetName))
+            return BunduResultType.channelLowerEdge;
+        if (FACET_BEDHEIGHT.contentEquals(facetName))
+            return SInfoResultType.meanBedHeight;
+        if (FACET_Q.contentEquals(facetName))
+            return GeneralResultType.dischargeQwithUnit;
+
+        final String error = String.format("Unknown facet name: %s", facetName);
+        throw new UnsupportedOperationException(error);
+    }
+}
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMainCalculationResult.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMainCalculationResult.java	Mon Aug 20 10:17:00 2018 +0200
@@ -44,10 +44,10 @@
     private final Double missingVolumeFrom;
     private final Double missingVolumeTo;
     private final Integer ud;
-    private final double[] qOfGauges;
+    private final String qOfGauges;
 
     public BezugswstMainCalculationResult(final String label, final Collection<ResultRow> rows, final BedHeightInfo sounding, final WstInfo wst,
-            final String function, final boolean preprocessing, final int startYear, final int endYear, final Integer ud, final double[] qOfGauges,
+            final String function, final boolean preprocessing, final int startYear, final int endYear, final Integer ud, final String qOfGauges,
             final Double missingVolumeFrom, final Double missingVolumeTo) {
         super(label, rows);
         this.wst = wst;
@@ -62,13 +62,28 @@
         this.qOfGauges = qOfGauges;
     }
 
+    public String getWstLabel() {
+        if (this.ud != null)
+            return Integer.toString(this.endYear) + "; UD=" + Integer.toString(this.ud); // FIXME per WaterlevelDescriptionBuilder o.ä. zentralisieren
+        return Integer.toString(this.endYear) + "; " + this.wst.getLabel();
+    }
+
+    public String getBedHeightLabel() {
+        if (this.sounding != null)
+            return this.sounding.getDescription();
+        return "";
+    }
+
+    public boolean getIsMissingVolume() {
+        return !Double.isNaN(this.missingVolumeFrom);
+    }
+
     @Override
     protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) {
 
-        // TODO: wenn wst und peilung vorhanden sind, sollte dieser Teil wieder einkommentiert werden
-        // exportContextCSV.writeCSVWaterlevelMetadata(wst);
-        // exportContextCSV.writeBlankLine();
-        // exportContextCSV.writeCSVSoundingMetadata(this.sounding, " ");
+        exportContextCSV.writeCSVWaterlevelMetadata(this.wst);
+        exportContextCSV.writeBlankLine();
+        exportContextCSV.writeCSVSoundingMetadata(this.sounding, " ");
 
         // Reihenfolge in der LV anders; ich finde sie aber so sinnvoller
         exportContextCSV.writeCSVMetaEntry("bundu.export.bezugswst.csv.meta.function", this.function);
@@ -77,7 +92,7 @@
         if (this.ud != null)
             exportContextCSV.writeCSVMetaEntry("bundu.export.bezugswst.csv.meta.ud", this.ud);
         else if (this.qOfGauges != null)
-            exportContextCSV.writeCSVMetaEntry("common.export.waterlevel.csv.meta.q", this.qOfGauges); // was auch immer dieser String beinhalten mag
+            exportContextCSV.writeCSVMetaEntry("common.export.waterlevel.csv.meta.q", this.qOfGauges);
 
         if (this.missingVolumeFrom != null && this.missingVolumeTo != null)
             exportContextCSV.writeCSVMetaEntry("bundu.export.bezugswst.csv.meta.missing_volume_range", this.missingVolumeFrom, this.missingVolumeTo);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult1.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult1.java	Mon Aug 20 10:17:00 2018 +0200
@@ -59,10 +59,10 @@
 
         lines.add(exportContext.formatRowValue(row, BunduResultType.sounding));
         lines.add(exportContext.formatRowValue(row, BunduResultType.channelLowerEdge));
-        lines.add(exportContext.formatRowValue(row, BunduResultType.channelMinDepth));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.channelDepth));
         lines.add(exportContext.formatRowValue(row, BunduResultType.hasMissingDepth));
-        lines.add(exportContext.formatRowValue(row, BunduResultType.missVolume));
-        lines.add(exportContext.formatRowValue(row, BunduResultType.missMass));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missVolumeTotal));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missMassTotal));
         lines.add(exportContext.formatRowValue(row, BunduResultType.excavationVolume));
         lines.add(exportContext.formatRowValue(row, BunduResultType.excavationCosts));
         lines.add(exportContext.formatRowValue(row, BunduResultType.channelWidth));
@@ -89,10 +89,10 @@
         header.add(exportContextCSV.formatCsvHeader(BunduResultType.channelLowerEdge) + " [" + river.getWstUnit() + "]"); // Args wäre hier auch gegangen...;
                                                                                                                           // beim pdf ist es ohne args deutlich
                                                                                                                           // einfacher, deshalb...
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.channelMinDepth));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.channelDepth));
         header.add(exportContextCSV.formatCsvHeader(BunduResultType.hasMissingDepth));
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missVolume));
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missMass));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missVolumeTotal));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missMassTotal));
         header.add(exportContextCSV.formatCsvHeader(BunduResultType.excavationVolume));
         header.add(exportContextCSV.formatCsvHeader(BunduResultType.excavationCosts));
         header.add(exportContextCSV.formatCsvHeader(BunduResultType.channelWidth));
@@ -127,10 +127,10 @@
 
         exportContextPDF.addJRMetadata(source, "sounding_header", BunduResultType.sounding);
         exportContextPDF.addJRMetadata(source, "channel_lower_edge_header", BunduResultType.channelLowerEdge);
-        exportContextPDF.addJRMetadata(source, "channel_min_depth_header", BunduResultType.channelMinDepth);
+        exportContextPDF.addJRMetadata(source, "channel_min_depth_header", BunduResultType.channelDepth);
         exportContextPDF.addJRMetadata(source, "channel_miss_depth_header", BunduResultType.hasMissingDepth);
-        exportContextPDF.addJRMetadata(source, "channel_miss_volume_header", BunduResultType.missVolume);
-        exportContextPDF.addJRMetadata(source, "channel_miss_mass_header", BunduResultType.missMass);
+        exportContextPDF.addJRMetadata(source, "channel_miss_volume_header", BunduResultType.missVolumeTotal);
+        exportContextPDF.addJRMetadata(source, "channel_miss_mass_header", BunduResultType.missMassTotal);
         exportContextPDF.addJRMetadata(source, "excavation_volume_header", BunduResultType.excavationVolume);
         exportContextPDF.addJRMetadata(source, "excavation_costs_header", BunduResultType.excavationCosts);
         exportContextPDF.addJRMetadata(source, "channel_width_header", BunduResultType.channelWidth);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java	Mon Aug 20 10:17:00 2018 +0200
@@ -56,12 +56,13 @@
         final Collection<String> lines = new ArrayList<>(20);
 
         lines.add(exportContext.formatRowValue(row, GeneralResultType.station));
-        final List<String> fields = (List<String>) row.getValue(BunduResultType.fields);
+        final List<String> fields = (List<String>) row.getValue(BunduResultType.missVolumeFields);
         assert (fields.size() == fieldSize); // immer abgleichen mit der Calculation!
         for (final String field : fields) {
             lines.add(field);
         }
-        lines.add(exportContext.formatRowValue(row, BunduResultType.meanBedheight));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missVolumeMeanBed));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missMassMeanBed));
 
         return lines.toArray(new String[lines.size()]);
     }
@@ -78,7 +79,8 @@
         for (int i = 1; i <= fieldSize; i++) {
             header.add(exportContextCSV.msg(fieldMsgStr, i));
         }
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.meanBedheight));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missVolumeMeanBed));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missMassMeanBed));
 
         exportContextCSV.writeCSVLine(header.toArray(new String[header.size()]));
 
@@ -104,7 +106,8 @@
         for (int i = 1; i <= fieldSize; i++) {
             exportContextPDF.addJRMetadata(source, "field_header" + String.valueOf(i), exportContextPDF.msg(fieldMsgStr, i));
         }
-        exportContextPDF.addJRMetadata(source, "mean_bedheight_header", BunduResultType.meanBedheight);
+        exportContextPDF.addJRMetadata(source, "mean_bedheight_header", BunduResultType.missVolumeMeanBed);
+        exportContextPDF.addJRMetadata(source, "mean_bedheight_header", BunduResultType.missMassMeanBed);
 
     }
 }
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult3.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult3.java	Mon Aug 20 10:17:00 2018 +0200
@@ -51,9 +51,9 @@
 
         final Collection<String> lines = new ArrayList<>(20);
 
-        lines.add(exportContext.formatRowValue(row, BunduResultType.stationForMiss));
-        lines.add(exportContext.formatRowValue(row, BunduResultType.missVolume));
-        lines.add(exportContext.formatRowValue(row, BunduResultType.missMass));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missStationRange));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missVolumeTotal));
+        lines.add(exportContext.formatRowValue(row, BunduResultType.missMassTotal));
         return lines.toArray(new String[lines.size()]);
     }
 
@@ -64,9 +64,9 @@
         exportContextCSV.writeTitleForTabs("bundu.export.csv.title.bezugswst.result3", colSize); // Voraussetzung für Tabs ist, dass der Titel vor den Headern
         final Collection<String> header = new ArrayList<>(colSize);
 
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.stationForMiss));
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missVolume));
-        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missMass));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missStationRange));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missVolumeTotal));
+        header.add(exportContextCSV.formatCsvHeader(BunduResultType.missMassTotal));
 
         exportContextCSV.writeCSVLine(header.toArray(new String[header.size()]));
 
@@ -88,9 +88,9 @@
     protected void addJRTableHeader(final ExportContextPDF exportContextPDF, final MetaAndTableJRDataSource source) {
         /* column headings */
 
-        exportContextPDF.addJRMetadata(source, "station_header", BunduResultType.stationForMiss);
-        exportContextPDF.addJRMetadata(source, "channel_miss_volume_header", BunduResultType.missVolume);
-        exportContextPDF.addJRMetadata(source, "channel_miss_mass_header", BunduResultType.missMass);
+        exportContextPDF.addJRMetadata(source, "station_header", BunduResultType.missStationRange);
+        exportContextPDF.addJRMetadata(source, "channel_miss_volume_header", BunduResultType.missVolumeTotal);
+        exportContextPDF.addJRMetadata(source, "channel_miss_mass_header", BunduResultType.missMassTotal);
 
     }
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstResultFacet.java	Mon Aug 20 10:17:00 2018 +0200
@@ -0,0 +1,48 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * 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)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.artifacts.bundu.bezugswst;
+
+import org.apache.log4j.Logger;
+import org.dive4elements.artifactdatabase.state.Facet;
+import org.dive4elements.river.artifacts.common.ResultFacet;
+import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
+
+/**
+ * Facet of a bundu bezugswst longitudinal section data series
+ */
+public class BezugswstResultFacet extends ResultFacet {
+
+    private static final long serialVersionUID = 1L;
+
+    private static Logger log = Logger.getLogger(BezugswstResultFacet.class);
+
+    public BezugswstResultFacet() {
+        // required for clone operation deepCopy()
+    }
+
+    public BezugswstResultFacet(final int facetIndex, final int resultIndex, final String name, final String description, final String yAxisLabelKey,
+            final String stateId, final String hash) {
+        super(facetIndex, resultIndex, name, description, yAxisLabelKey, ComputeType.ADVANCE, stateId, hash);
+    }
+
+    /** Copy deeply. */
+    @Override
+    public Facet deepCopy() {
+        // FIXME: why not simply use the full constructor instead?
+        final BezugswstResultFacet copy = new BezugswstResultFacet();
+        // FIXME: why does DataFacet does not override set? Bad access to variables of parent!
+        copy.set(this);
+        copy.type = this.type;
+        copy.hash = this.hash;
+        copy.stateId = this.stateId;
+        return copy;
+    }
+}
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java	Mon Aug 20 10:17:00 2018 +0200
@@ -1,5 +1,7 @@
-/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
- * Software engineering by Intevation GmbH
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * 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)
  * and comes with ABSOLUTELY NO WARRANTY! Check out the
@@ -13,17 +15,21 @@
 import org.apache.log4j.Logger;
 import org.dive4elements.artifactdatabase.state.Facet;
 import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.ChartArtifact;
 import org.dive4elements.river.artifacts.D4EArtifact;
 import org.dive4elements.river.artifacts.bundu.BUNDUArtifact;
+import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
+import org.dive4elements.river.artifacts.model.Calculation;
 import org.dive4elements.river.artifacts.model.CalculationResult;
 import org.dive4elements.river.artifacts.model.DataFacet;
+import org.dive4elements.river.artifacts.model.EmptyFacet;
 import org.dive4elements.river.artifacts.model.FacetTypes;
+import org.dive4elements.river.artifacts.model.ReportFacet;
+import org.dive4elements.river.artifacts.model.WaterlevelFacet;
 import org.dive4elements.river.artifacts.states.DefaultState;
 
 /**
- * State to compute the fixation realizing (vollmer) results.
- *
- * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
+ * State to compute the bundu bezugswst results.
  */
 public class BezugswstState extends DefaultState implements FacetTypes {
 
@@ -42,117 +48,75 @@
 
     @Override
     public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
+
         log.debug("BezugswstState.computeAdvance");
-        // TODO: remove this old stuff, or replace it by new
-        // final CalculationResult res;
-        //
-        // final FixRealizingAccess access = new FixRealizingAccess(artifact);
-        //
-        // if (old instanceof CalculationResult) {
-        // res = (CalculationResult) old;
-        // } else {
-        //
-        // final FixRealizingCalculation calc = new FixRealizingCalculation(access);
-        // res = calc.calculate();
-        // }
-        //
-        // if (facets == null) {
-        // return res;
-        // }
-        //
-        // if (res.getReport().hasProblems()) {
-        // facets.add(new ReportFacet());
-        // }
-        //
-        // final String id = getID();
-        // final CallMeta meta = context.getMeta();
-        //
-        // final FixRealizingResult fixRes = (FixRealizingResult) res.getData();
-        // final WQKms[] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0];
-        //
-        // for (int i = 0; i < wqkms.length; i++) {
-        // String nameW = null;
-        // String nameQ = null;
-        //
-        // if (access.isQ()) {
-        // nameQ = wqkms[i].getName();
-        // nameW = "W(" + nameQ + ")";
-        // } else {
-        // nameW = wqkms[i].getName();
-        // nameQ = "Q(" + nameW + ")";
-        // }
-        //
-        // final Facet wq = new FixWaterlevelFacet(i, FIX_WQ_LS, nameW, ComputeType.ADVANCE, hash, id);
-        //
-        // final Facet w = new FixWaterlevelFacet(i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, hash, id);
-        //
-        // final Facet q = new FixWaterlevelFacet(i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, hash, id);
-        // final Facet csFacet = new CrossSectionWaterLineFacet(i, nameW);
-        //
-        // facets.add(wq);
-        // facets.add(w);
-        // facets.add(q);
-        // facets.add(csFacet);
-        //
-        // // XXX: THIS CAN NOT HAPPEN! REMOVE IT!
-        // if (wqkms[i] instanceof WQCKms) {
-        // final String nameC = nameW.replace("benutzerdefiniert", "benutzerdefiniert [korrigiert]");
-        //
-        // final Facet c = new FixWaterlevelFacet(i, DISCHARGE_LONGITUDINAL_C, nameC);
-        //
-        // facets.add(c);
-        // }
-        // }
-        //
-        // if (wqkms.length > 0) {
-        // final DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy");
-        // final DateFormat lf = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy'T'HH:mm");
-        //
-        // final Collection<Date> reds = fixRes.getReferenceEventsDates();
-        // final UniqueDateFormatter cf = new UniqueDateFormatter(df, lf, reds);
-        //
-        // int i = 0;
-        // for (final Date d : reds) {
-        // facets.add(new FixReferenceEventsFacet((1 << 9) | i, FIX_EVENTS, cf.format(d)));
-        // i++;
-        // }
-        //
-        // facets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
-        //
-        // facets.add(new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id));
-        //
-        // facets.add(new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
-        // }
-        //
-        // facets.add(new DataFacet(AT, "AT data", ComputeType.ADVANCE, hash, id));
-        //
-        // facets.add(new FixWQCurveFacet(0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE) + " (" + access.getFunction()
-        // + ")"));
-        //
+
+        if (artifact instanceof ChartArtifact) {
+            facets.add(new EmptyFacet());
+            return null;
+        }
         return compute((BUNDUArtifact) artifact, context, hash, facets, old);
     }
 
     @Override
     public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
 
+        if (artifact instanceof ChartArtifact) {
+            facets.add(new EmptyFacet());
+            return null;
+        }
         return compute((BUNDUArtifact) artifact, context, hash, facets, old);
     }
 
+    /**
+     * Compute result or returned object from cache, create facets.
+     *
+     * @param old
+     *            Object that was cached.
+     */
     private Object compute(final BUNDUArtifact artifact, final CallContext context, final String hash, final List<Facet> facets, final Object old) {
 
-        final BezugswstCalculation s = new BezugswstCalculation(context);
-        final CalculationResult res = s.calculate(artifact);
+        final CalculationResult res = doCompute(artifact, context, old);
 
         if (facets == null)
             return res;
 
-        final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
-        final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id);
+        final BezugswstCalculationResults results = (BezugswstCalculationResults) res.getData();
 
-        facets.add(csv);
-        facets.add(pdf);
+        final List<AbstractCalculationExportableResult> resultList = results.getResults();
+
+        int facetIndex = 0;
+
+        if (!resultList.isEmpty()) {
+            final BezugswstMainCalculationResult result = (BezugswstMainCalculationResult) resultList.get(0);
+            facets.add(BezugswstHeightProcessor.createWFacet(context, hash, this.id, facetIndex++, 0, result.getWstLabel()));
+            facets.add(BezugswstHeightProcessor.createChannelminFacet(context, hash, this.id, facetIndex++, 0));
+            facets.add(BezugswstHeightProcessor.createBedheightFacet(context, hash, this.id, facetIndex++, 0, result.getBedHeightLabel()));
+            facets.add(new WaterlevelFacet(facetIndex++, FacetTypes.LONGITUDINAL_Q, result.getWstLabel(), ComputeType.ADVANCE, this.id, hash));
+
+            facets.add(BezugswstDepthProcessor.createFlowdepthFilteredFacet(context, hash, this.id, facetIndex++, 0, result.getBedHeightLabel()));
+            facets.add(BezugswstDepthProcessor.createChanneldepthFacet(context, hash, this.id, facetIndex++, 0));
+
+            final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
+            final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id);
+
+            facets.add(csv);
+            facets.add(pdf);
+        }
+
+        final Calculation report = res.getReport();
+
+        if (report.hasProblems())
+            facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
 
         return res;
     }
 
+    private CalculationResult doCompute(final BUNDUArtifact uinfo, final CallContext context, final Object old) {
+
+        if (old instanceof CalculationResult)
+            return (CalculationResult) old;
+
+        return new BezugswstCalculation(context).calculate(uinfo);
+    }
 }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BunduAccess.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BunduAccess.java	Mon Aug 20 10:17:00 2018 +0200
@@ -11,6 +11,7 @@
 import org.apache.log4j.Logger;
 import org.dive4elements.river.artifacts.D4EArtifact;
 import org.dive4elements.river.artifacts.access.FixAnalysisAccess;
+import org.dive4elements.river.artifacts.states.SoundingsSelect;
 
 public class BunduAccess extends FixAnalysisAccess {
 
@@ -88,6 +89,34 @@
         return getBoolean("missing_volume");
     }
 
+    public int getBedHeightID() {
+
+        final String data = getString("soundings");
+
+        if (data == null) {
+            log.warn("No 'soundings' parameter specified!");
+            return 0;
+        }
+        else {
+            log.debug("getBedHeightIDs(): data=" + data);
+        }
+
+        final String[] parts = data.split(";");
+
+        int singleID = 0;
+
+        if (data.indexOf(SoundingsSelect.PREFIX_SINGLE) >= 0) {
+            final String tmp = data.replace(SoundingsSelect.PREFIX_SINGLE, "");
+            try {
+                singleID = Integer.parseInt(tmp);
+            }
+            catch (final NumberFormatException nfe) {
+                log.warn("Cannot parse int from string: '" + tmp + "'");
+            }
+        }
+        return singleID;
+    }
+
     // /** Access the reference date period, return null in case of 'errors'. */
     // public DateRange getReferencePeriod() {
     // if (this.referencePeriod == null) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/ChannelFinder.java	Mon Aug 20 10:17:00 2018 +0200
@@ -0,0 +1,155 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * 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)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.artifacts.bundu.bezugswst;
+
+import java.util.Map.Entry;
+import java.util.NavigableMap;
+import java.util.TreeMap;
+
+import org.dive4elements.river.artifacts.math.Linear;
+import org.dive4elements.river.artifacts.model.Calculation;
+import org.dive4elements.river.model.River;
+import org.dive4elements.river.model.sinfo.Channel;
+import org.dive4elements.river.model.sinfo.ChannelValue;
+
+/**
+ * Provides channel depth and height of a river
+ *
+ * @author Matthias Schäfer
+ */
+public final class ChannelFinder {
+
+    /***** TYPES *****/
+
+    public enum ChannelValueType {
+        depth {
+            @Override
+            public Double getValue(final ChannelValue channelValue) {
+                return channelValue.getDepth();
+            }
+        },
+        width {
+            @Override
+            public Double getValue(final ChannelValue channelValue) {
+                return channelValue.getWidth();
+            }
+        };
+
+        public abstract Double getValue(final ChannelValue channelValue);
+    }
+
+    /***** FIELDS *****/
+
+    // private static Logger log = Logger.getLogger(ChannelFinder.class);
+
+    private static double MAX_DISTANCE_KM = 1;
+
+    private final NavigableMap<Double, ChannelValue> values = new TreeMap<>();
+
+    private Calculation problems;
+
+
+    /***** CONSTRUCTORS *****/
+
+    private ChannelFinder(final Calculation problems, final Channel channel) {
+
+        this.problems = problems;
+
+        for (final ChannelValue v : channel.getValues()) {
+            this.values.put(v.getStation(), v);
+        }
+    }
+
+    /***** METHODS *****/
+
+    /**
+     * Loads the channel values for a river and year
+     *
+     * @return Whether the load has been successful
+     */
+    public static ChannelFinder loadValues(final Calculation problems, final River river, final int year) {
+        final Channel channel = Channel.getSeries(river, year);
+        if (channel != null)
+            return new ChannelFinder(problems, channel);
+
+        problems.addProblem("channelfinder.empty");
+        return null;
+    }
+
+
+    /***** METHODS *****/
+
+    /**
+     * Searches the channel depth of a station
+     */
+    public double getDepth(final double station) {
+        final double value = interpolateChannel(station, ChannelValueType.depth);
+        if (Double.isNaN(value))
+            reportProblem(station);
+        return value;
+    }
+
+    /**
+     * Searches the channel width of a station
+     */
+    public double getWidth(final double station) {
+        final double value = interpolateChannel(station, ChannelValueType.width);
+        if (Double.isNaN(value))
+            reportProblem(station);
+        return value;
+    }
+
+    /**
+     * Searches and interpolates a channel value for a km
+     */
+    private double interpolateChannel(final double km, final ChannelValueType type) {
+
+        if (this.values.containsKey(km)) {
+            final Double value = type.getValue(this.values.get(km));
+            return (value == null) ? Double.NaN : value.doubleValue();
+        }
+
+        final Entry<Double, ChannelValue> floorEntry = this.values.floorEntry(km);
+        final Entry<Double, ChannelValue> ceilingEntry = this.values.ceilingEntry(km);
+
+        if ((floorEntry == null) || (ceilingEntry == null))
+            return Double.NaN;
+
+        final double floorKm = floorEntry.getKey().doubleValue();
+        final double ceilKm = ceilingEntry.getKey().doubleValue();
+
+        /* report once if the interpolation distance exceeds 1000m */
+        if ((Math.abs(floorKm - ceilKm) > MAX_DISTANCE_KM) && (this.problems != null)) {
+            this.problems.addProblem(km, "linearInterpolator.maxdistance", MAX_DISTANCE_KM * 1000);
+            this.problems = null;
+            return Double.NaN;
+        }
+
+        final Double floorHeight = type.getValue(floorEntry.getValue());
+        final Double ceilingHeight = type.getValue(ceilingEntry.getValue());
+
+        if (floorHeight == null || ceilingHeight == null)
+            return Double.NaN;
+
+        return Linear.linear(km, floorKm, ceilKm, floorHeight, ceilingHeight);
+    }
+
+    private void reportProblem(final double km) {
+
+        if (this.problems == null)
+            return;
+
+        this.problems.addProblem(km, "channelfinder.missing");
+
+        // report problem only once
+        this.problems = null;
+    }
+}
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java	Mon Aug 20 10:17:00 2018 +0200
@@ -66,7 +66,7 @@
     @Override
     public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) {
         final int colSize = 3;
-        exportContextCSV.writeTitleForTabs("sinfo.export.csv.title.collison.overview", 3); // Voraussetzung für Tabs ist, dass der Titel vor den Headern
+        exportContextCSV.writeTitleForTabs("sinfo.export.csv.title.collision.overview", 3); // Voraussetzung für Tabs ist, dass der Titel vor den Headern
         // geschrieben wird.
         // Das ist etwas doof.
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/common/UInfoResultType.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/common/UInfoResultType.java	Mon Aug 20 10:17:00 2018 +0200
@@ -75,6 +75,20 @@
         }
     };
 
+    public static final UInfoResultType salixw = new UInfoResultType(null, null) {
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public String exportValue(final CallContext context, final Object value) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        protected NumberFormat createFormatter(final CallContext context) {
+            throw new UnsupportedOperationException();
+        }
+    };
+
     public static final UInfoResultType vegname = new UInfoResultType(null, "uinfo.export.csv.meta.header.veg.name") {
         private static final long serialVersionUID = 1L;
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/LoadScenarioSelectLimit5.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/LoadScenarioSelectLimit5.java	Mon Aug 20 10:17:00 2018 +0200
@@ -48,7 +48,7 @@
 
                 final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "cm", context.getMeta());
                 helper.addColumn(0, "regional_scenario_select", "60", "common.client.ui.selection", "ICON", "CENTER", "from");
-                helper.addColumn(1, "cm", "60", "uinfo.export.salix_line.csv.header.scenario_deltaw", "INTEGER", "LEFT", null);
+                helper.addColumn(1, "cm", "60", "year", "INTEGER", "LEFT", null);
                 for (int i = -200; i < +210; i = i + 10) {
                     final Map<String, String> row = new HashMap<>();
                     row.put("cm", Integer.toString(i));
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculationResult.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculationResult.java	Mon Aug 20 10:17:00 2018 +0200
@@ -187,9 +187,7 @@
         if (row == null)
             return Double.NaN;
 
-        // FIXME: hier wird die geodätische Höhe der SalixLinie benötigt; am besten auch schon in die Ergebnistzeilen einbauen
-        return 84.0;
-        // return row.getDoubleValue(UInfoResultType.salixline);
+        return row.getDoubleValue(UInfoResultType.salixw);
     }
 
     public final double getSalixScenarioValue(final double currentKm, final double nextKm, final double prevKm, final int scenarioIndex) {
@@ -202,9 +200,7 @@
         if (salixScenario == null)
             return Double.NaN;
 
-        // FIXME: hier wird die geodätische Höhe der SalixLinie benötigt; ggf schon als weiteres Feld an SalixScenario dranbauen
-        return 89;
-        // return salixScenario.getSalixValue();
+        return salixScenario.getSalixW();
     }
 
     public final double getWaterlevelValue(final double currentKm, final double nextKm, final double prevKm, final SalixWaterlevel waterlevel) {
@@ -220,7 +216,7 @@
             return row.getDoubleValue(UInfoResultType.waterlevelMW);
         case mhw:
             return row.getDoubleValue(UInfoResultType.waterlevelMHW);
-        case mh5:
+        case hw5:
             return row.getDoubleValue(UInfoResultType.waterlevelMH5);
 
         default:
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculator.java	Mon Aug 20 10:17:00 2018 +0200
@@ -52,9 +52,11 @@
     private final Map<Gauge, QPosition> gaugeMwPos;
     private final Map<Gauge, QPosition> gaugeMnwPos;
     private final Map<Gauge, QPosition> gaugeMhwPos;
+    private final Map<Gauge, QPosition> gaugeHw5Pos;
     private QPosition refGaugeMwPos;
     private QPosition refGaugeMnwPos;
     private QPosition refGaugeMhwPos;
+    private QPosition refGaugeHw5Pos;
     private Gauge firstGauge;
 
     private Calculation problems;
@@ -66,6 +68,7 @@
         this.gaugeMwPos = new HashMap<>();
         this.gaugeMnwPos = new HashMap<>();
         this.gaugeMhwPos = new HashMap<>();
+        this.gaugeHw5Pos = new HashMap<>();
     }
 
     /**
@@ -103,11 +106,14 @@
         this.gaugeMwPos.clear();
         this.gaugeMnwPos.clear();
         this.gaugeMhwPos.clear();
+        this.gaugeHw5Pos.clear();
+
         this.firstGauge = null;
         for (final Gauge gauge : this.riverInfoProvider.getGauges()) {
             this.gaugeMwPos.put(gauge, null);
             this.gaugeMnwPos.put(gauge, null);
             this.gaugeMhwPos.put(gauge, null);
+            this.gaugeHw5Pos.put(gauge, null);
             final double gaugeKm = gauge.getStation().doubleValue();
             for (final MainValue mv : MainValue.getValuesOfGaugeAndType(gauge, MainValueTypeKey.Q)) {
                 if (mv.getMainValue().getName().equalsIgnoreCase("mq"))
@@ -116,11 +122,14 @@
                     this.gaugeMnwPos.put(gauge, this.wst.getQPosition(gaugeKm, mv.getValue().doubleValue()));
                 else if (mv.getMainValue().getName().equalsIgnoreCase("mhq"))
                     this.gaugeMhwPos.put(gauge, this.wst.getQPosition(gaugeKm, mv.getValue().doubleValue()));
+                else if (mv.getMainValue().getName().equalsIgnoreCase("hq5"))
+                    this.gaugeHw5Pos.put(gauge, this.wst.getQPosition(gaugeKm, mv.getValue().doubleValue()));
             }
             if (this.firstGauge == null) {
                 this.refGaugeMwPos = this.gaugeMwPos.get(gauge);
                 this.refGaugeMnwPos = this.gaugeMnwPos.get(gauge);
                 this.refGaugeMhwPos = this.gaugeMhwPos.get(gauge);
+                this.refGaugeHw5Pos = this.gaugeHw5Pos.get(gauge);
                 this.firstGauge = gauge;
             }
         }
@@ -150,22 +159,23 @@
         final double mnw = interpolateW(station, this.refGaugeMnwPos);
         final double mw = interpolateW(station, this.refGaugeMwPos);
         final double mhw = interpolateW(station, this.refGaugeMhwPos);
+        final double hw5 = interpolateW(station, this.refGaugeHw5Pos);
         row.putValue(UInfoResultType.waterlevelMNW, mnw);
         row.putValue(UInfoResultType.waterlevelMW, mw);
         row.putValue(UInfoResultType.waterlevelMHW, mhw);
-        // TODO: hier noch den W(HQ5)
-        row.putValue(UInfoResultType.waterlevelMH5, Double.NaN);
+        row.putValue(UInfoResultType.waterlevelMH5, hw5);
 
         // Calc salix-line and mw-mnw
         row.putValue(UInfoResultType.salixline, calcSalix(mhw, mw));
         row.putValue(UInfoResultType.salix_mw_mnw, calcMwmnw(mw, mnw));
+        row.putValue(UInfoResultType.salixw, mhw - SALIX_DISTANCE.doubleValue());
         // Calc scenario values (always all scenario types set, Result variant extracts the fields needed)
         final List<SalixScenario> scenarios = new ArrayList<>();
         final List<Double> deltaws = getDeltaWs(station, rangeScenarios);
         for (final Double deltaw : deltaws) {
             if (deltaw != null) {
                 final double salix = calcSalix(mhw, mw + deltaw);
-                scenarios.add(new SalixScenario((int) (deltaw * 100), salix));
+                scenarios.add(new SalixScenario((int) (deltaw * 100), salix, mhw + deltaw - SALIX_DISTANCE.doubleValue()));
             }
             else {
                 scenarios.add(null);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCrossSectionIndexData.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCrossSectionIndexData.java	Mon Aug 20 10:17:00 2018 +0200
@@ -24,7 +24,7 @@
      * Known waterlevels of the salix computation
      */
     public enum SalixWaterlevel {
-        mnw, mw, mhw, mh5
+        mnw, mw, mhw, hw5
     }
 
     private static final long serialVersionUID = 1L;
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixScenario.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixScenario.java	Mon Aug 20 10:17:00 2018 +0200
@@ -24,10 +24,12 @@
 
     private final double salix_value;
     private final int deltaW;
+    private final double salixW;
 
-    public SalixScenario(final int deltaW, final double salix_value) {
+    public SalixScenario(final int deltaW, final double salix_value, final double salixW) {
         this.deltaW = deltaW;
         this.salix_value = salix_value;
+        this.salixW = salixW;
     }
 
     public double getSalixValue() {
@@ -39,8 +41,8 @@
     }
 
     public String getDeltaWFormatted() {
-        if (Double.isNaN(this.deltaW))
-            return StringUtils.EMPTY;
+        // if (Double.isNaN(this.deltaW))
+        // return StringUtils.EMPTY;
 
         return String.valueOf(this.deltaW);
     }
@@ -52,6 +54,17 @@
         return formatter.format(this.salix_value);
     }
 
+    public double getSalixW() {
+        return this.salixW;
+    }
+
+    public String getSalixWFormatted() {
+        if (Double.isNaN(this.salixW))
+            return StringUtils.EMPTY;
+
+        return String.valueOf(this.salixW);
+    }
+
     public static final String getScenarioValueHeader() {
         return "uinfo.export.salix_line.csv.header.scenario";
     }
--- a/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java	Mon Aug 20 10:17:00 2018 +0200
@@ -1294,6 +1294,10 @@
             axis.setAutoRangeIncludesZero(true);
         }
         
+        if (axisAttributes.isInverted() == DiagramAttributes.TRUE) {
+            axis.setInverted(true);
+        }
+        
         axis.setLowerMargin(axisAttributes.getLowerMargin());
         axis.setUpperMargin(axisAttributes.getUpperMargin());
 
--- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java	Mon Aug 20 10:17:00 2018 +0200
@@ -104,7 +104,7 @@
         }
     }
 
-    private String getMetadataQ() {
+    public String getMetadataQ() {
 
         final double[] qs = RiverUtils.getQs(this.artifact);
         if (qs == null || qs.length == 0)
--- a/artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java	Mon Aug 20 10:17:00 2018 +0200
@@ -447,4 +447,18 @@
     public static NumberFormat getCollisionGaugeW(final CallContext context) {
         return getFormatter(context.getMeta(), 0, 2); // cm
     }
+
+    public static NumberFormat getCurrencyFormat(final CallContext context) {
+        final NumberFormat nf = getFormatter(context.getMeta(), 0, 0);
+        nf.setGroupingUsed(true);
+        return nf;
+    }
+
+    public static NumberFormat getDensityFormat(final CallContext context) {
+        return getFormatter(context, 3, 3);
+    }
+
+    public static NumberFormat getMassFormat(final CallContext context) {
+        return getFormatter(context, 0, 1);
+    }
 }
\ No newline at end of file
--- a/artifacts/src/main/resources/messages.properties	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/resources/messages.properties	Mon Aug 20 10:17:00 2018 +0200
@@ -908,8 +908,9 @@
 bundu.export.csv.title.bezugswst.overview = \u00dcbersicht
 bundu.export.csv.title.bezugswst.result1 = Fehlvolumenermittlung 1
 bundu.export.csv.title.bezugswst.result2 = Fehlvolumenermittlung 2
-bundu.export.csv.title.bezugswst.result3 = Summe der Fehlvolumen
+bundu.export.csv.title.bezugswst.result3 = Summe der Fehlvolumina
 
+bundu.export.bezugswst.csv.header.mean_bed_height = Mittlere Sohlh\u00f6he
 bundu.export.bezugswst.csv.meta.miss.density = Lagerungsdichte [t/m\u00b3]
 bundu.export.bezugswst.pdf.meta.miss.density = Lagerungs-dichte [t/m\u00b3]
 bundu.export.bezugswst.csv.meta.miss.channel.width = Breite Fahrrinnenkasten [m]
@@ -918,8 +919,8 @@
 bundu.export.bezugswst.pdf.meta.miss.costs = Bagger-kosten [\u20ac]
 bundu.export.bezugswst.csv.meta.miss.excavation = Baggervolumina [m\u00b3]
 bundu.export.bezugswst.pdf.meta.miss.excavation = Bagger-volumina [m\u00b3]
-bundu.export.bezugswst.csv.meta.miss.mass = Masse Fehltiefe ges. [t]
-bundu.export.bezugswst.csv.meta.miss.volume = Volumen Fehltiefe ges. [m\u00b3]
+bundu.export.bezugswst.csv.meta.miss.mass.total = Masse Fehltiefe ges. [t]
+bundu.export.bezugswst.csv.meta.miss.volume.total = Volumen Fehltiefe ges. [m\u00b3]
 bundu.export.bezugswst.csv.meta.miss.exists = Fehltiefe vorhanden?
 bundu.export.bezugswst.pdf.meta.miss.exists = Fehl-tiefe vor-handen?
 bundu.export.bezugswst.csv.meta.miss.channel.min_depth = Zu gew\u00e4hrleistende Fahrrinnentiefe [m]
@@ -927,8 +928,10 @@
 bundu.export.bezugswst.csv.meta.miss.channel.lower_edge = Unterkante Fahrrinnenkasten
 bundu.export.bezugswst.pdf.meta.miss.channel.lower_edge = Unterkante Fahrrinnen-kasten
 bundu.export.bezugswst.csv.meta.miss.sounding = Peilung
-bundu.export.bezugswst.csv.meta.miss.field = Feld {0} Fehlvolumen/-masse
-bundu.export.bezugswst.csv.meta.miss.mean_bedheight = Mittlere Sohlh\u00f6he Fehlvolumen/-masse
+bundu.export.bezugswst.csv.meta.miss.mass.field = Feld {0} Fehlmasse [t]
+bundu.export.bezugswst.csv.meta.miss.volume.field = Feld {0} Fehlvolumen [m\u00b3]
+bundu.export.bezugswst.csv.meta.miss.mass.mean_bed = Mittlere Sohlh\u00f6he Fehlmasse [t]
+bundu.export.bezugswst.csv.meta.miss.volume.mean_bed = Mittlere Sohlh\u00f6he Fehlvolumen [m\u00b3]
 
 export.flow_depth.csv.header.km = Fluss-km
 sinfo.export.flow_depth.csv.header.flowdepth = Flie\u00dftiefe
@@ -1189,7 +1192,7 @@
 uinfo_facet_salix_waterlevel_mnw_cross_section_water_line_description = W(MNQ)
 uinfo_facet_salix_waterlevel_mw_cross_section_water_line_description = W(MQ)
 uinfo_facet_salix_waterlevel_mhw_cross_section_water_line_description = W(MHQ)
-uinfo_facet_salix_waterlevel_mh5_cross_section_water_line_description = W(HQ5)
+uinfo_facet_salix_waterlevel_hw5_cross_section_water_line_description = W(HQ5)
 
 predefineddepthevol.total.title = Gesamt: {0}
 predefineddepthevol.peryear.title = J\u00e4hrlich: {0}
@@ -1204,7 +1207,7 @@
 infrastructure.height.title = Geod. H\u00f6he ({0})
 
 sinfo.export.csv.title.collision.detail = Abfluss/Abflusszustand
-sinfo.export.csv.title.collison.overview = H\u00e4ufigkeiten
+sinfo.export.csv.title.collision.overview = H\u00e4ufigkeiten
 sinfo.export.csv.header.collision.count = Anzahl der Grundber\u00fchrungen
 collision.count.title = Grundber\u00fchrungen {0}
 chart.collision_count.section.yaxis.label = H\u00e4ufigkeit
@@ -1305,6 +1308,18 @@
 bundu.wst.error_reading_gauges = Fehler beim Abruf des Pegels aus der Datenbank.
 bundu.wst.gauge_timeranges_disjoint = Der Bezugszeitraum konnte nicht auf die vorhandenen Abflusswerte eingeschr\u00e4nkt werden. 
 
+bundu.chart.wspl.section.title = BZWS-L\u00e4ngsschnitt
+bundu_facet_w.description = Bezugswasserstand ({0})
+bundu_facet_bedheight.description = Mittlere Sohlh\u00f6he ({0}) 
+bundu_facet_channelmin.description = Sohle (Sollzustand)
+bundu_facet_q = Q [m\u00b3/s]
+bundu_facet_q.description = Q [m\u00b3/s]
+bundu.chart.depth.section.title = h-L\u00e4ngsschnitt
+bundu_facet_flowdepth.filtered.description = h (BZWS, {0})
+bundu_facet_channeldepth.description = h (Solltiefe)
+bundu.channelfinder.empty = The database does not contain any values for the river and the reference year
+bundu.channelfinder.missing = no channel data available
+
 common.client.ui.selection = Selection
 common.client.ui.from = from
 common.client.ui.to = to
--- a/artifacts/src/main/resources/messages_de.properties	Mon Aug 20 10:14:06 2018 +0200
+++ b/artifacts/src/main/resources/messages_de.properties	Mon Aug 20 10:17:00 2018 +0200
@@ -908,8 +908,9 @@
 bundu.export.csv.title.bezugswst.overview = \u00dcbersicht
 bundu.export.csv.title.bezugswst.result1 = Fehlvolumenermittlung 1
 bundu.export.csv.title.bezugswst.result2 = Fehlvolumenermittlung 2
-bundu.export.csv.title.bezugswst.result3 = Summe der Fehlvolumen
+bundu.export.csv.title.bezugswst.result3 = Summe der Fehlvolumina
 
+bundu.export.bezugswst.csv.header.mean_bed_height = Mittlere Sohlh\u00f6he
 bundu.export.bezugswst.csv.meta.miss.density = Lagerungsdichte [t/m\u00b3]
 bundu.export.bezugswst.pdf.meta.miss.density = Lagerungs-dichte [t/m\u00b3]
 bundu.export.bezugswst.csv.meta.miss.channel.width = Breite Fahrrinnenkasten [m]
@@ -918,8 +919,8 @@
 bundu.export.bezugswst.pdf.meta.miss.costs = Bagger-kosten [\u20ac]
 bundu.export.bezugswst.csv.meta.miss.excavation = Baggervolumina [m\u00b3]
 bundu.export.bezugswst.pdf.meta.miss.excavation = Bagger-volumina [m\u00b3]
-bundu.export.bezugswst.csv.meta.miss.mass = Masse Fehltiefe ges. [t]
-bundu.export.bezugswst.csv.meta.miss.volume = Volumen Fehltiefe ges. [m\u00b3]
+bundu.export.bezugswst.csv.meta.miss.mass.total = Masse Fehltiefe ges. [t]
+bundu.export.bezugswst.csv.meta.miss.volume.total = Volumen Fehltiefe ges. [m\u00b3]
 bundu.export.bezugswst.csv.meta.miss.exists = Fehltiefe vorhanden?
 bundu.export.bezugswst.pdf.meta.miss.exists = Fehl-tiefe vor-handen?
 bundu.export.bezugswst.csv.meta.miss.channel.min_depth = Zu gew\u00e4hrleistende Fahrrinnentiefe [m]
@@ -927,8 +928,10 @@
 bundu.export.bezugswst.csv.meta.miss.channel.lower_edge = Unterkante Fahrrinnenkasten
 bundu.export.bezugswst.pdf.meta.miss.channel.lower_edge = Unterkante Fahrrinnen-kasten
 bundu.export.bezugswst.csv.meta.miss.sounding = Peilung
-bundu.export.bezugswst.csv.meta.miss.field = Feld {0} Fehlvolumen/-masse
-bundu.export.bezugswst.csv.meta.miss.mean_bedheight = Mittlere Sohlh\u00f6he Fehlvolumen/-masse
+bundu.export.bezugswst.csv.meta.miss.mass.field = Feld {0} Fehlmasse [t]
+bundu.export.bezugswst.csv.meta.miss.volume.field = Feld {0} Fehlvolumen [m\u00b3]
+bundu.export.bezugswst.csv.meta.miss.mass.mean_bed = Mittlere Sohlh\u00f6he Fehlmasse [t]
+bundu.export.bezugswst.csv.meta.miss.volume.mean_bed = Mittlere Sohlh\u00f6he Fehlvolumen [m\u00b3]
 
 export.flow_depth.csv.header.km = Fluss-km
 sinfo.export.flow_depth.csv.header.flowdepth = Flie\u00dftiefe
@@ -1189,7 +1192,7 @@
 uinfo_facet_salix_waterlevel_mnw_cross_section_water_line_description = W(MNQ)
 uinfo_facet_salix_waterlevel_mw_cross_section_water_line_description = W(MQ)
 uinfo_facet_salix_waterlevel_mhw_cross_section_water_line_description = W(MHQ)
-uinfo_facet_salix_waterlevel_mh5_cross_section_water_line_description = W(HQ5)
+uinfo_facet_salix_waterlevel_hw5_cross_section_water_line_description = W(HQ5)
 
 predefineddepthevol.total.title = Gesamt: {0}
 predefineddepthevol.peryear.title = J\u00e4hrlich: {0}
@@ -1204,7 +1207,7 @@
 infrastructure.height.title = Geod. H\u00f6he ({0})
 
 sinfo.export.csv.title.collision.detail = Abfluss/Abflusszustand
-sinfo.export.csv.title.collison.overview = H\u00e4ufigkeiten
+sinfo.export.csv.title.collision.overview = H\u00e4ufigkeiten
 sinfo.export.csv.header.collision.count = Anzahl der Grundber\u00fchrungen
 collision.count.title = Grundber\u00fchrungen {0}
 chart.collision_count.section.yaxis.label = H\u00e4ufigkeit
@@ -1305,6 +1308,18 @@
 bundu.wst.error_reading_gauges = Fehler beim Abruf des Pegels aus der Datenbank.
 bundu.wst.gauge_timeranges_disjoint = Der Bezugszeitraum konnte nicht auf die vorhandenen Abflusswerte eingeschr\u00e4nkt werden. 
 
+bundu.chart.wspl.section.title = BZWS-L\u00e4ngsschnitt
+bundu_facet_w.description = Bezugswasserstand ({0})
+bundu_facet_bedheight.description = Mittlere Sohlh\u00f6he ({0}) 
+bundu_facet_channelmin.description = Sohle (Sollzustand)
+bundu_facet_q = Q [m\u00b3/s]
+bundu_facet_q.description = Q [m\u00b3/s]
+bundu.chart.depth.section.title = h-L\u00e4ngsschnitt
+bundu_facet_flowdepth.filtered.description = h (BZWS, {0})
+bundu_facet_channeldepth.description = h (Solltiefe)
+bundu.channelfinder.empty = Die Datenbank enth\u00e4lt keine Fahrrinnedaten f\u00fcr das Gew\u00e4sser und das Bezugsjahr
+bundu.channelfinder.missing = keine Fahrrinnedaten vorhanden
+
 common.client.ui.selection = Auswahl
 common.client.ui.from = von
 common.client.ui.to = bis
--- a/backend/src/main/java/org/dive4elements/river/model/sinfo/Channel.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/backend/src/main/java/org/dive4elements/river/model/sinfo/Channel.java	Mon Aug 20 10:17:00 2018 +0200
@@ -170,4 +170,19 @@
         query.setParameter("id", id);
         return (Channel) query.list().get(0);
     }
+
+    /**
+     * Queries the channel series for a river and a year from the database
+     */
+    public static Channel getSeries(final River river, final int year) {
+        final Session session = SessionHolder.HOLDER.get();
+        final Query query = session.createQuery("FROM Channel WHERE (river=:river) AND (year_from <= :year) AND (year_to >= :year)");
+        query.setParameter("river", river);
+        query.setParameter("year", year);
+        @SuppressWarnings("unchecked")
+        final List<Object[]> rows = query.list();
+        if (!rows.isEmpty())
+            return (Channel) query.list().get(0);
+        return null;
+    }
 }
\ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java	Mon Aug 20 10:17:00 2018 +0200
@@ -1559,7 +1559,7 @@
 
     String sinfo_sounding_waterlevel_select_waterlevel();
 
-    String sinfo_deactivate_intelligent_datacord();
+    String sinfo_deactivate_intelligent_datacage();
 
     String sinfo_floodduration_curve();
 
@@ -1616,4 +1616,8 @@
     String error_invalid_integer_positive_required();
 
     String naviThemeOutOfRange();
+
+    String bundu_wspl_longitudinal_section();
+
+    String bundu_depth_longitudinal_section();
 }
\ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties	Mon Aug 20 10:14:06 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties	Mon Aug 20 10:17:00 2018 +0200
@@ -850,7 +850,7 @@
 uinfo_salix_km_has_gaps = Der Km-Bereich ist nicht vollst. belegt.
 uinfo_salix_km_anschluss = Der eingegebene Bereich schlie\u00dft nicht an den letzten Wert an.
 uinfo_salix_input_complete = Die gesamte Strecke ist bereits mit Werten belegt.
-uinfo_salix_lines = Iotasn
+uinfo_salix_lines = Iota
 uinfo_salix_line = Iota - L\u00e4ngsschnitt
 
 bundu = Betrieb und Unterhaltung 
@@ -860,6 +860,8 @@
 bundu_bezugswst_validation_range = Die Eingabe muss eine Ganzzahl zwischen 0 und 364 sein.
 bundu_wst_export = Bezugswasserst\u00e4nde Export
 bundu_ws_wq_info = Die Abfl\u00fcsse MNQ, MQ und MHQ sind anhand der Tagesmittelwerte des Abflusses berechnet.
+bundu_wspl_longitudinal_section = BZWS - L\u00e4ngsschnitt
+bundu_depth_longitudinal_section = BZWS h - L\u00e4ngsschnitt
 
 chart_settings_export_metadata = Show Meta-Data
 export_csv_title = Title: 
@@ -867,6 +869,6 @@
 sinfo_columnlabel_soundings = Wahl der Peilung
 sinfo_columnlabel_waterlevels = Wahl des Wasserspiegels
 sinfo_sounding_waterlevel_select_waterlevel = W\u00e4hlen Sie zuerst eine Peilung
-sinfo_deactivate_intelligent_datacord = Intelligente Datenkorbfilterung ausschalten
+sinfo_deactivate_intelligent_datacage = Intelligente Datenkorbfilterung ausschalten
 
 naviThemeOutOfRange = au\u00dferh. G\u00fcltigkeitsb.
\ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties	Mon Aug 20 10:14:06 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties	Mon Aug 20 10:17:00 2018 +0200
@@ -860,6 +860,8 @@
 bundu_bezugswst_validation_range = Die Eingabe muss eine Ganzzahl zwischen 0 und 364 sein.
 bundu_wst_export = Bezugswasserst\u00e4nde Export
 bundu_ws_wq_info = Die Abfl\u00fcsse MNQ, MQ und MHQ sind anhand der Tagesmittelwerte des Abflusses berechnet.
+bundu_wspl_longitudinal_section = BZWS - L\u00e4ngsschnitt
+bundu_depth_longitudinal_section = BZWS h - L\u00e4ngsschnitt
 
 chart_settings_export_metadata = Metadaten anzeigen
 export_csv_title = Titel: 
@@ -867,6 +869,6 @@
 sinfo_columnlabel_soundings = Wahl der Peilung
 sinfo_columnlabel_waterlevels = Wahl des Wasserspiegels
 sinfo_sounding_waterlevel_select_waterlevel = W\u00e4hlen Sie zuerst eine Peilung
-sinfo_deactivate_intelligent_datacord = Intelligente Datenkorbfilterung ausschalten
+sinfo_deactivate_intelligent_datacage = Intelligente Datenkorbfilterung ausschalten
 
 naviThemeOutOfRange = au\u00dferh. G\u00fcltigkeitsb.
\ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java	Mon Aug 20 10:14:06 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java	Mon Aug 20 10:17:00 2018 +0200
@@ -111,7 +111,7 @@
         form.setTitleOrientation(TitleOrientation.LEFT);
 
         final DataSourceField item = new DataSourceField(FIELD_INTELLIGENCE, FieldType.BOOLEAN);
-        item.setTitle(this.msg.sinfo_deactivate_intelligent_datacord());
+        item.setTitle(this.msg.sinfo_deactivate_intelligent_datacage());
 
         final DataSource source = new DataSource();
         source.setFields(item);

http://dive4elements.wald.intevation.org