# HG changeset patch # User mschaefer # Date 1534751162 -7200 # Node ID d194c5b24bf842fb915bf54d541b9b9529902827 # Parent eeea16ea0980d691b14f257d33c88c3d9d9a8de0 Added bundu bzws w calculation and longitudinal sections of wspl and depth diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/artifacts/bundu.xml --- a/artifacts/doc/conf/artifacts/bundu.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/artifacts/bundu.xml Mon Aug 20 09:46:02 2018 +0200 @@ -2,305 +2,305 @@ - + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - + - - - + + + - - - + + + - - - - - - - - - - - + + - - + + - - + + - - + + + + + + + + + + + - + - - + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - + - - + + - + - - + + - - + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - + - - - + + + - + @@ -320,200 +320,222 @@ - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - - - - + + + + + + - - - + + + - - - + + + - - + + - - - + + + - + - - - + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - - + + + - + - - - + + + - + - - - + + + - - - + + + - - + + - - - + + + - + - - - + + + - + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/generators/generators.xml --- a/artifacts/doc/conf/generators/generators.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/generators/generators.xml Mon Aug 20 09:46:02 2018 +0200 @@ -82,4 +82,8 @@ + + + + \ No newline at end of file diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml --- a/artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/generators/longitudinal-diagram-defaults.xml Mon Aug 20 09:46:02 2018 +0200 @@ -20,6 +20,7 @@ + @@ -74,4 +75,8 @@ + + + + \ No newline at end of file diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/generators/longitudinal-diagrams.xml --- a/artifacts/doc/conf/generators/longitudinal-diagrams.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/generators/longitudinal-diagrams.xml Mon Aug 20 09:46:02 2018 +0200 @@ -202,4 +202,30 @@ + + + &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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/themes.xml --- a/artifacts/doc/conf/themes.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/themes.xml Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/themes/default.xml --- a/artifacts/doc/conf/themes/default.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/themes/default.xml Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/doc/conf/themes/second.xml --- a/artifacts/doc/conf/themes/second.xml Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/doc/conf/themes/second.xml Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BUNDUArtifact.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BUNDUArtifact.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BUNDUArtifact.java Mon Aug 20 09:46:02 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; } }); diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BunduResultType.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BunduResultType.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/BunduResultType.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstCalculation.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstCalculation.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstCalculation.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstDepthProcessor.java --- /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 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstHeightProcessor.java --- /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 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMainCalculationResult.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMainCalculationResult.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMainCalculationResult.java Mon Aug 20 09:46:02 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); diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult1.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult1.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult1.java Mon Aug 20 09:46:02 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); diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult3.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult3.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult3.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstResultFacet.java --- /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 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java Mon Aug 20 09:46:02 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); + } } diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BunduAccess.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BunduAccess.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BunduAccess.java Mon Aug 20 09:46:02 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) { diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/ChannelFinder.java --- /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 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java Mon Aug 20 09:46:02 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. diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/common/UInfoResultType.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/common/UInfoResultType.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/common/UInfoResultType.java Mon Aug 20 09:46:02 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; diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java --- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java Mon Aug 20 09:46:02 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) diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java --- a/artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/utils/Formatter.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/resources/messages.properties --- a/artifacts/src/main/resources/messages.properties Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/resources/messages.properties Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 artifacts/src/main/resources/messages_de.properties --- a/artifacts/src/main/resources/messages_de.properties Mon Aug 20 09:42:32 2018 +0200 +++ b/artifacts/src/main/resources/messages_de.properties Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 backend/src/main/java/org/dive4elements/river/model/sinfo/Channel.java --- a/backend/src/main/java/org/dive4elements/river/model/sinfo/Channel.java Mon Aug 20 09:42:32 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/sinfo/Channel.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Mon Aug 20 09:42:32 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Mon Aug 20 09:42:32 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Mon Aug 20 09:42:32 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Mon Aug 20 09:46:02 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 diff -r eeea16ea0980 -r d194c5b24bf8 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java Mon Aug 20 09:42:32 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java Mon Aug 20 09:46:02 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);