Mercurial > dive4elements > river
changeset 9548:669ab639c56b
Implemented datacage for sinfo - ueberflutungsdauern
Implemented h/Q mainvalues in sinfo - ueberflutungsdauern chart
author | gernotbelger |
---|---|
date | Fri, 19 Oct 2018 17:19:09 +0200 |
parents | 26ac94cff0b6 |
children | c86ae5562e68 |
files | artifacts/doc/conf/meta-data.xml artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveFacet.java |
diffstat | 3 files changed, 100 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/doc/conf/meta-data.xml Fri Oct 19 16:27:07 2018 +0200 +++ b/artifacts/doc/conf/meta-data.xml Fri Oct 19 17:19:09 2018 +0200 @@ -142,10 +142,9 @@ <dc:when test="$out = 'sinfo_flood_height'"> <dc:call-macro name="annotations"/> </dc:when> - <!--TODO sinfo_floodduration_curve: mainvalues wie in winfo-duration_curve unterstuetzen --> - <!--dc:when test="$out = 'sinfo_floodduration_curve'"> + <dc:when test="$out = 'sinfo_floodduration_curve'"> <dc:call-macro name="mainvalues" /> - </dc:when --> + </dc:when> <dc:when test="$out = 'uinfo_salix_line'"> <dc:call-macro name="annotations"/> </dc:when> @@ -260,10 +259,7 @@ </dc:when> <dc:comment> Duration curve </dc:comment> <dc:when test="$out = 'duration_curve'"> - <dc:call-macro name="mainvalues"/> - <dc:call-macro name="basedata_2_fixations_relative_point"/> - <dc:call-macro name="basedata_4_heightmarks-points-relative_points"/> - <dc:call-macro name="basedata_5_flood-protections_relative_points"/> + <dc:call-macro name="duration_curve_system"/> </dc:when> <dc:comment> Reference curve </dc:comment> <dc:when test="$out = 'reference_curve'"> @@ -329,14 +325,9 @@ <dc:when test="$out = 'sinfo_flood_height'"> <dc:call-macro name="longitudinal-section-prototype"/> </dc:when> - <!--TODO sinfo_floodduration_curve: mainvalues wie in winfo-duration_curve unterstuetzen --> - <!--dc:when test="$out = 'sinfo_floodduration_curve'"> - <dc:call-macro name="mainvalues" /> - <dc:call-macro name="basedata_2_fixations_relative_point" /> - <dc:call-macro name="basedata_4_heightmarks-points-relative_points" /> - <dc:call-macro name="basedata_5_flood-protections_relative_points" /> - </dc:when --> - + <dc:when test="$out = 'sinfo_floodduration_curve'"> + <dc:call-macro name="floodduration_curve_system" /> + </dc:when> <dc:when test="$out = 'uinfo_salix_line'"> <dc:call-macro name="longitudinal-section-prototype"/> </dc:when> @@ -450,15 +441,23 @@ <dc:when test="$out = 'sinfo_flood_duration'"> <dc:call-macro name="longitudinal-section-user-prototype"/> </dc:when> + <dc:when test="$out = 'sinfo_floodduration_curve'"> + <dc:call-macro name="floodduration-curve-user"/> + </dc:when> <dc:when test="$out = 'sinfo_flood_height'"> <dc:call-macro name="longitudinal-section-user-prototype"/> </dc:when> + <dc:when test="$out = 'sinfo_flowdepth_waterlevels'"> + <dc:call-macro name="longitudinal-section-fix-vollmer_w"/> + </dc:when> + <dc:when test="$out = 'uinfo_salix_line'"> <dc:call-macro name="longitudinal-section-user-prototype"/> </dc:when> <dc:when test="$out = 'uinfo.inundation_duration.vegzoneselect'"> <dc:call-macro name="vegetationzones"/> </dc:when> + <dc:when test="$out = 'bundu_wspl_longitudinal_section'"> <dc:call-macro name="longitudinal-section-user-prototype"/> </dc:when> @@ -497,7 +496,7 @@ </dc:when> <dc:comment> Duration curve </dc:comment> <dc:when test="$out = 'duration_curve'"> - <dc:call-macro name="duration-curve"/> + <dc:call-macro name="duration-curve-user"/> </dc:when> <dc:comment> Reference curve </dc:comment> <dc:when test="$out = 'reference_curve'"> @@ -510,10 +509,6 @@ <dc:when test="$out = 'map'"> <dc:call-macro name="flood-map"/> </dc:when> - - <dc:when test="$out = 'sinfo_flowdepth_waterlevels'"> - <dc:call-macro name="longitudinal-section-fix-vollmer_w"/> - </dc:when> </dc:choose> </dc:iterate> </dc:otherwise> @@ -881,18 +876,30 @@ </dc:filter> </dc:macro> - <dc:macro name="duration-curve"> - <dc:filter expr="$facet_name = 'duration_curve.q' or $facet_name = 'duration_curve.w'"> + <!-- Unterschreitungsdauern aus WINFO --> + <dc:macro name="duration-curve-user"> + <dc:call-macro name="duration-curve-user_winfo-duration-curve"/> + </dc:macro> + + <!-- Überschrautungsdauern aus SINFO --> + <dc:macro name="floodduration-curve-user"> + <dc:call-macro name="duration-curve-user_sinfo-flood-duration"/> + </dc:macro> + + <dc:macro name="duration-curve-user_winfo-duration-curve"> + <!-- Restults of WINFO-DurationCurve calculation --> + <dc:filter expr="$a_state = 'state.winfo.durationcurve' and ( $facet_name = 'duration_curve.q' or $facet_name = 'duration_curve.w' )"> <dc:if test="dc:has-result()"> + <!-- FIXME: this label is wrong, should be rather 'winfo - duration curve' or something --> <computed_discharge_curves> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}"/> <dc:attribute name="factory" value="winfo"/> <dc:attribute name="target_out" value="${out}"/> - <dc:attribute name="artifact-id" value="${a_id}"/> - <dc:attribute name="ids" value="${a_id}"/> - <dc:attribute name="out" value="duration_curve"/> + <dc:attribute name="artifact-id" value="${a_gid}"/> + <dc:attribute name="ids" value="${facet_num}"/> + <dc:attribute name="out" value="${out_name}"/> </dc:element> </dc:for-each> </computed_discharge_curves> @@ -900,6 +907,31 @@ </dc:filter> </dc:macro> + <dc:macro name="duration-curve-user_sinfo-flood-duration"> + <!-- Restults of SINFO-Überflutungsdauern-Aue calculation --> + <dc:filter expr="$a_state = 'state.sinfo.flood_duration' and $out_name = 'sinfo_floodduration_curve'"> + <!-- FIXME: group by calculation? --> + <dc:if test="dc:has-result()"> + <sinfo_flood_durations> + + <dc:call-macro name="collection-group"> + <sinfo_flood_durations description="{dc:group-key()}"> + <dc:for-each> + <dc:element name="${facet_name}"> + <dc:attribute name="description" value="${facet_description}"/> + <dc:attribute name="factory" value="sinfo"/> + <dc:attribute name="target_out" value="${out}"/> + <dc:attribute name="artifact-id" value="${a_gid}"/> + <dc:attribute name="ids" value="${facet_num}"/> + <dc:attribute name="out" value="${out_name}"/> + </dc:element> + </dc:for-each> + </sinfo_flood_durations> + </dc:call-macro> + </sinfo_flood_durations> + </dc:if> + </dc:filter> + </dc:macro> <dc:macro name="waterlevels-user"> <dc:filter expr="($out_name = 'longitudinal_section' @@ -1198,6 +1230,17 @@ <!-- Macros to load system data --> + <dc:macro name="duration_curve_system"> + <dc:call-macro name="mainvalues"/> + <dc:call-macro name="basedata_2_fixations_relative_point"/> + <dc:call-macro name="basedata_4_heightmarks-points-relative_points"/> + <dc:call-macro name="basedata_5_flood-protections_relative_points"/> + </dc:macro> + + <dc:macro name="floodduration_curve_system"> + <dc:call-macro name="mainvalues"/> + </dc:macro> + <dc:macro name="qmainvalues"> <qmainvalue factory="mainvalue" ids="{$river_id}:q" target_out="{$out}"/> </dc:macro>
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java Fri Oct 19 16:27:07 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java Fri Oct 19 17:19:09 2018 +0200 @@ -400,7 +400,8 @@ } else if (!(pnpObject instanceof Number) && g != null && - !"duration_curve".equals(getBoundToOut()) + !"duration_curve".equals(getBoundToOut() ) && + !"sinfo_floodduration_curve".equals(getBoundToOut() ) ) { if (mv.getMainValue().getType().getName().equals("W")) { filteredList.add(new NamedDouble(
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveFacet.java Fri Oct 19 16:27:07 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveFacet.java Fri Oct 19 17:19:09 2018 +0200 @@ -10,16 +10,19 @@ package org.dive4elements.river.artifacts.sinfo.flood_duration; +import java.util.ArrayList; +import java.util.List; + import org.apache.log4j.Logger; import org.dive4elements.artifactdatabase.state.DefaultFacet; import org.dive4elements.artifactdatabase.state.Facet; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.D4EArtifact; +import org.dive4elements.river.artifacts.model.DurationCurveFacet; import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; import org.dive4elements.river.exports.fixings.FixChartGenerator; - /** * Data of a flood duration curve. */ @@ -36,7 +39,6 @@ super(0, name, description); } - /** * Expose state computation from SINFOArtifact. */ @@ -51,6 +53,31 @@ return new FloodDurationCalculation(context).calcStationCurve(currentKm, (SINFOArtifact) flys); } + @Override + public List getStaticDataProviderKeys(final Artifact art) { + final List<String> list = new ArrayList<>(); + list.add(DurationCurveFacet.BB_DURATIONCURVE); + return list; + } + + /** + * Can provide whatever getData returns and additionally the location. + * + * @param key + * will respond on BB_DURATIONCURVE +KM + * @param param + * ignored + * @param context + * ignored + * @return whatever getData delivers or location. + */ + @Override + public Object provideBlackboardData(final Artifact artifact, final Object key, final Object param, final CallContext context) { + if (key.equals(DurationCurveFacet.BB_DURATIONCURVE)) + return getData(artifact, context); + + return null; + } /** Create a deep copy. */ @Override @@ -59,5 +86,4 @@ copy.set(this); return copy; } -} - +} \ No newline at end of file