Mercurial > dive4elements > river
view artifacts/doc/conf/meta-data.xml @ 9327:9eaff80c81ea
Fixed: wrong string key
author | gernotbelger |
---|---|
date | Fri, 27 Jul 2018 15:35:50 +0200 |
parents | 819dbd073624 |
children | 85d08fb28d96 |
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8"?> <dc:template xmlns:dc="http://www.intevation.org/2011/Datacage"> <datacage> <dc:call-macro name="load-user" /> <dc:call-macro name="load-system" /> <dc:macro name="load-system"> <dc:context connection="system"> <dc:statement> SELECT id AS river_id, name AS river_name FROM rivers WHERE lower(name) LIKE lower(${river}) </dc:statement> <dc:for-each> <dc:call-macro name="generate-system-content" /> </dc:for-each> </dc:context> </dc:macro> <dc:macro name="load-user"> <old_calculations> <dc:call-macro name="generate-user-content" /> </old_calculations> </dc:macro> <dc:macro name="generate-system-content"> <dc:message>Generate system content with variables: {dc:dump-variables()}</dc:message> <dc:call-macro name="artifact-range"> <dc:call-macro name="km-filtered-wsts"> <dc:choose> <dc:when test="dc:contains($parameters, 'recommended')"> <dc:comment> Recommendations (client shall load immediately). </dc:comment> <dc:iterate var="out" container="artifact-outs"> <dc:message>Rec out iteration for: {$out}</dc:message> <dc:choose> <dc:comment> Longitudinal sections </dc:comment> <dc:when test="$out = 'w_differences'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'discharge_longitudinal_section'"> <dc:call-macro name="annotations" /> <dc:call-macro name="officiallines_user" /> </dc:when> <dc:when test="$out = 'longitudinal_section'"> <dc:call-macro name="annotations" /> <dc:call-macro name="officiallines_user" /> </dc:when> <dc:when test="$out = 'fix_longitudinal_section_curve'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'bedheight_middle'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'bed_difference_year'"> <dc:call-macro name="annotations" /> <dc:call-macro name="basedata_6_delta_w" /> <dc:call-macro name="sounding-width-recommendations" /> </dc:when> <dc:when test="$out = 'bed_difference_height_year'"> <dc:call-macro name="annotations" /> <dc:call-macro name="basedata_6_delta_w" /> </dc:when> <dc:when test="$out = 'sedimentload_ls'"> <dc:call-macro name="annotations" /> <dc:call-macro name="sedimentload_off_epochs" /> </dc:when> <dc:when test="$out = 'bed_longitudinal_section'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'flow_velocity'"> <dc:call-macro name="annotations" /> </dc:when> <dc:comment> Discharge curves </dc:comment> <dc:when test="$out = 'historical_discharge_wq'"> <dc:call-macro name="hist_discharge_rec" /> <dc:call-macro name="mainvalues" /> </dc:when> <dc:when test="$out = 'discharge_curve'"> <dc:call-macro name="mainvalues" /> <dc:call-macro name="basedata_3_officials_wq" /> </dc:when> <dc:when test="$out = 'computed_discharge_curve'"> <dc:call-macro name="mainvalues" /> <dc:call-macro name="basedata_3_officials_wq" /> <dc:call-macro name="basedata_2_fixations_wq" /> </dc:when> <dc:when test="$out = 'fix_wq_curve'"> <dc:call-macro name="mainvalues" /> <dc:call-macro name="qsectors" /> </dc:when> <dc:when test="$out = 'fix_derivate_curve'"> <dc:call-macro name="qmainvalues" /> </dc:when> <dc:when test="starts-with($out, 'sq_') and not($out = 'sq_relation_export')"> <dc:call-macro name="qmainvalues" /> </dc:when> <dc:comment> Cross sections </dc:comment> <dc:when test="$out = 'cross_section'"> <dc:call-macro name="cross_sections" /> <dc:call-macro name="hyks" /> <dc:call-macro name="officiallines_user" /> </dc:when> <dc:comment> Duration curve </dc:comment> <dc:when test="$out = 'duration_curve'"> <dc:call-macro name="mainvalues" /> </dc:when> <dc:comment> Reference curve </dc:comment> <dc:when test="$out = 'reference_curve'"> <dc:call-macro name="mainvalues" /> </dc:when> <dc:comment> Maps </dc:comment> <dc:when test="$out = 'floodmap'"> <dc:call-macro name="flood-map-recommended" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_minmax'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_development'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_development_peryear'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_tkk'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_collision'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_flood_duration'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'sinfo_flood_height'"> <dc:call-macro name="annotations" /> </dc:when> <dc:when test="$out = 'uinfo_salix_line'"> <dc:call-macro name="annotations" /> </dc:when> </dc:choose> </dc:iterate> </dc:when> <dc:otherwise> <dc:comment> Non - Recommendations (offered to user to choose additional data from). </dc:comment> <dc:iterate var="out" container="artifact-outs"> <dc:message>Non Rec out iteration for: {$out}</dc:message> <dc:choose> <dc:comment> Inline datacage panels </dc:comment> <dc:when test="$out = 'minfo_diff_panel'"> <dc:call-macro name="minfo-heights-diff" /> </dc:when> <dc:when test="$out = 'floodmap_dem_panel'"> <dc:call-macro name="flood-map-dem" /> </dc:when> <dc:when test="$out = 'floodmap_hws_panel'"> <hws> <dc:call-macro name="flood-map-hws-lines" /> <dc:call-macro name="flood-map-hws-points" /> </hws> </dc:when> <dc:when test="$out = 'winfo_diff_twin_panel'"> <dc:if test="$current-state-id != 'state.winfo.uesk.wsp'"> <dc:call-macro name="basedata_0" /> <dc:call-macro name="basedata_1_additionals" /> <dc:call-macro name="basedata_2_fixations" /> <dc:call-macro name="basedata_4_heightmarks-points" /> <dc:call-macro name="basedata_5_flood-protections" /> </dc:if> </dc:when> <dc:when test="$out = 'waterlevels_panel'"> <dc:call-macro name="basedata_0" /> <dc:call-macro name="basedata_1_additionals" /> <dc:call-macro name="basedata_2_fixations" /> <dc:call-macro name="basedata_3_officials" /> <dc:call-macro name="basedata_4_heightmarks-points" /> <dc:call-macro name="basedata_5_flood-protections" /> </dc:when> <dc:comment> Longitudinal sections </dc:comment> <dc:when test="$out = 'longitudinal_section'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'w_differences'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'discharge_longitudinal_section'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'fix_longitudinal_section_curve'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'flow_velocity'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'bed_longitudinal_section'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sedimentload_ls'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'bedheight_middle'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'bed_difference_height_year'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'bed_difference_year'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:comment> Discharge curves </dc:comment> <dc:when test="$out = 'historical_discharge_wq'"> <dc:call-macro name="discharge-curve-prototype" /> </dc:when> <dc:when test="$out = 'discharge_curve'"> <dc:call-macro name="discharge-curve-prototype" /> </dc:when> <dc:when test="$out = 'fix_wq_curve'"> <dc:call-macro name="discharge-curve-prototype" /> </dc:when> <dc:when test="$out = 'fix_derivate_curve'"> <dc:call-macro name="discharge-curve-prototype" /> </dc:when> <dc:when test="$out = 'computed_discharge_curve'"> <dc:call-macro name="discharge-curve-prototype" /> </dc:when> <dc:when test="starts-with($out, 'sq_relation') or $out = 'sq_overview'"> <dc:call-macro name="discharge-curve-prototype" /> </dc:when> <dc:comment> Cross sections </dc:comment> <dc:when test="$out = 'cross_section'"> <dc:call-macro name="basedata_0" /> <dc:call-macro name="basedata_1_additionals" /> <dc:call-macro name="basedata_2_fixations" /> <dc:call-macro name="basedata_3_officials" /> <dc:call-macro name="basedata_4_heightmarks-points" /> <dc:call-macro name="cross_sections" /> <dc:call-macro name="basedata_5_flood-protections" /> <dc:call-macro name="hyks" /> </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:when> <dc:comment> Reference curve </dc:comment> <dc:when test="$out = 'reference_curve'"> <dc:call-macro name="mainvalues" /> <dc:call-macro name="annotations" /> <dc:call-macro name="basedata_1_additionals-relative_point" /> <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:comment> Maps </dc:comment> <dc:when test="$out = 'map'"> <dc:call-macro name="flood-map-complete" /> </dc:when> <dc:when test="$out = 'floodmap'"> <dc:call-macro name="flood-map-complete" /> </dc:when> <dc:comment> S-INFO </dc:comment> <dc:when test="$out = 'sinfo_flowdepth_minfo_heights'"> <dc:call-macro name="bed-heights-single-MW" /> </dc:when> <dc:when test="$out = 'sinfo_flowdepthminmax_heights'"> <dc:call-macro name="bed-heights-single-KL_TW" /> </dc:when> <dc:when test="$out = 'sinfo_flowdepth_waterlevels'"> <minfo> <fixanalysis> <dc:call-macro name="basedata_7_waterlevels" /> </fixanalysis> </minfo> <dc:call-macro name="basedata_3_officials" /> <dc:call-macro name="basedata_2_fixations" /> <sinfo> <sinfo_additional_ls> <dc:call-macro name="basedata_1_additionals-sinfo-with-q" /> <dc:call-macro name="basedata_1_additionals-sinfo-without-q" /> </sinfo_additional_ls> </sinfo> </dc:when> <dc:when test="$out = 'sinfo_flow_depth'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_minmax'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_development'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_development_peryear'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_tkk'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_collision'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flood_duration'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flood_height'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flood_duration_curve'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'uinfo_salix_line'"> <dc:call-macro name="longitudinal-section-prototype" /> </dc:when> <dc:when test="$out = 'uinfo.inundation_duration.vegzoneselect'"> <dc:variable name="vegzonedata" expr="dc:defaultvegetationzone()"></dc:variable> <defaultVegetationZone factory="dummy" target_out="{$out}" data="{$vegzonedata}"></defaultVegetationZone> </dc:when> </dc:choose> </dc:iterate> </dc:otherwise> </dc:choose> </dc:call-macro> </dc:call-macro> </dc:macro> <dc:macro name="generate-user-content"> <dc:message>Generate user content with variables: {dc:dump-variables()}</dc:message> <dc:call-macro name="artifact-range"> <dc:call-macro name="all-user-artifacts"> <dc:call-macro name="km-filtered-user-artifacts"> <dc:choose> <dc:when test="dc:contains($parameters, 'recommended')"> <dc:comment> Recommendations (user) </dc:comment> <dc:iterate var="out" container="artifact-outs"> <dc:choose> <dc:when test="$out = 'longitudinal_section'"> <dc:call-macro name="officiallines_user" /> </dc:when> </dc:choose> </dc:iterate> </dc:when> <dc:otherwise> <dc:comment> Non Recommendations (user) - offer to load other projects </dc:comment> <dc:iterate var="out" container="artifact-outs"> <dc:choose> <dc:comment> Inline datacage panels </dc:comment> <dc:when test="$out = 'winfo_diff_twin_panel'"> <dc:call-macro name="differences-fix" /> <dc:call-macro name="differences" /> <dc:comment comment="Candidate for:"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:comment> </dc:when> <dc:when test="$out = 'waterlevels_panel'"> <dc:call-macro name="waterlevels-user" /> <dc:comment comment="Candidate for:"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:comment> </dc:when> <dc:when test="$out = 'floodmap_hws_panel'"> <dc:call-macro name="floodmap-hws-user" /> </dc:when> <dc:comment> Longitudinal sections </dc:comment> <dc:when test="$out = 'longitudinal_section'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'discharge_longitudinal_section'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'w_differences'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'fix_longitudinal_section_curve'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'bedheight_middle'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'flow_velocity'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'bed_longitudinal_section'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'sedimentload_ls'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'bed_difference_year'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'bed_difference_height_year'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_minmax'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_development'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_flow_depth_development_peryear'"> <dc:call-macro name="longitudinal-section-user-prototype" /> </dc:when> <dc:when test="$out = 'sinfo_tkk'"> <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:comment> Discharge curves </dc:comment> <dc:when test="$out = 'computed_discharge_curve'"> <dc:call-macro name="discharge-curve-user-prototype" /> </dc:when> <dc:when test="$out = 'fix_derivate_curve'"> <dc:call-macro name="discharge-curve-user-prototype" /> </dc:when> <dc:when test="$out = 'fix_wq_curve'"> <dc:call-macro name="discharge-curve-user-prototype" /> </dc:when> <dc:when test="$out = 'historical_discharge_wq'"> <dc:call-macro name="discharge-curve-user-prototype" /> </dc:when> <dc:when test="starts-with($out, 'sq_relation') or $out = 'sq_overview'"> <dc:call-macro name="discharge-curve-user-prototype" /> </dc:when> <dc:comment> Time series </dc:comment> <dc:when test="$out = 'fix_deltawt_curve'"> <dc:call-macro name="delta-wt" /> </dc:when> <dc:when test="$out = 'historical_discharge'"> <dc:call-macro name="historical-discharge-user" /> </dc:when> <dc:comment> Cross sections </dc:comment> <dc:when test="$out = 'cross_section'"> <dc:call-macro name="waterlevels" /> </dc:when> <dc:comment> Duration curve </dc:comment> <dc:when test="$out = 'duration_curve'"> <dc:call-macro name="duration-curve" /> </dc:when> <dc:comment> Reference curve </dc:comment> <dc:when test="$out = 'reference_curve'"> <dc:call-macro name="reference-curves" /> </dc:when> <dc:comment> Maps </dc:comment> <dc:when test="$out = 'floodmap'"> <dc:call-macro name="flood-map" /> </dc:when> <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_q" /> <!-- TODO: 'Frühere Berechnungen//Bezugswasserstände' --> </dc:when> </dc:choose> </dc:iterate> </dc:otherwise> </dc:choose> </dc:call-macro> </dc:call-macro> </dc:call-macro> </dc:macro> <!-- Macros to load user data --> <dc:macro name="historical-discharge-user"> <dc:filter expr="$out = 'historical_discharge' and starts-with($facet_name, 'historical_discharge.historical')"> <dc:if test="dc:has-result()"> <historical_discharges> <dc:call-macro name="collection-group"> <discharges description="{dc:group-key()}"> <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_gid}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="out" value="historical_discharge" /> </dc:element> </dc:for-each> </discharges> </dc:call-macro> </historical_discharges> </dc:if> </dc:filter> </dc:macro> <dc:macro name="differences"> <dc:filter expr="$facet_name = 'w_differences' or $facet_name = 'w_differences.filtered'"> <dc:if test="dc:has-result()"> <differences> <dc:call-macro name="collection-group"> <differences description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </differences> </dc:call-macro> </differences> </dc:if> </dc:filter> </dc:macro> <dc:macro name="reference-curves"> <dc:filter expr="$out = 'reference_curve' and $facet_name = 'reference_curve'"> <dc:if test="dc:has-result()"> <reference_curves> <dc:call-macro name="collection-group"> <ref_curve description="{dc:group-key()}"> <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_gid}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="out" value="reference_curve" /> </dc:element> </dc:for-each> </ref_curve> </dc:call-macro> </reference_curves> </dc:if> </dc:filter> </dc:macro> <dc:macro name="flood-map"> <dc:filter expr="$facet_name = 'floodmap.wsplgen'"> <dc:if test="dc:has-result()"> <floodmap> <dc:for-each> <dc:variable name="combined_desc" expr="concat($facet_description, ' ', dc:date-format('dd.MM.yyyy - H:mm:ss', $a_creation), ' ', $collection_name)" /> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${combined_desc}" /> <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="floodmap" /> </dc:element> </dc:for-each> </floodmap> </dc:if> </dc:filter> </dc:macro> <dc:macro name="waterlevels"> <dc:filter expr="$out_name = 'cross_section'"> <dc:if test="dc:has-result()"> <waterlevels> <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:mm:ss', $a_creation))"> <dc:comment>Aheinecke: Why is this grouping different from the rest?</dc:comment> <longitudinal_section_columns description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="cross_section" /> </dc:element> </dc:for-each> </longitudinal_section_columns> </dc:group> </waterlevels> </dc:if> </dc:filter> </dc:macro> <dc:macro name="collection-group"> <dc:group expr="concat($river, ' ', dc:date-format('dd.MM.yyyy - H:mm:ss', $a_creation), ' ', $collection_name)"> <dc:macro-body /> </dc:group> </dc:macro> <dc:macro name="longitudinal"> <dc:filter expr="$out_name = 'longitudinal_section' and $a_state != 'state.fix.vollmer.compute'"> <dc:if test="dc:has-result()"> <waterlevels_ls> <dc:call-macro name="collection-group"> <dc:comment>Aheinecke: Why is this grouping different from the rest?</dc:comment> <longitudinal_section_columns description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="longitudinal_section" /> </dc:element> </dc:for-each> </longitudinal_section_columns> </dc:call-macro> </waterlevels_ls> </dc:if> </dc:filter> </dc:macro> <dc:macro name="longitudinal-section-fix-vollmer"> <dc:filter expr="$a_state = 'state.fix.vollmer.compute' and ($facet_name = 'longitudinal_section.w' or $facet_name = 'longitudinal_section.q') "> <dc:call-macro name="longitudinal-section-fix-vollmer_macro" /> </dc:filter> </dc:macro> <dc:macro name="longitudinal-section-fix-vollmer_q"> <dc:filter expr="$a_state = 'state.fix.vollmer.compute' and $facet_name = 'longitudinal_section.q'"> <dc:call-macro name="longitudinal-section-fix-vollmer_macro" /> </dc:filter> </dc:macro> <dc:macro name="longitudinal-section-fix-vollmer_macro"> <dc:if test="dc:has-result()"> <waterlevels_fix_vollmer> <dc:call-macro name="collection-group"> <waterlevels description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="longitudinal_section" /> <dc:variable name="fixAnalysisYear" expr="dc:fix_analysis_year($a_gid)" /> <dc:attribute name="year" value="${fixAnalysisYear}" /> </dc:element> </dc:for-each> </waterlevels> </dc:call-macro> </waterlevels_fix_vollmer> </dc:if> </dc:macro> <dc:macro name="longitudinal-section-fix"> <dc:filter expr="$out_name = 'fix_longitudinal_section_curve' and (starts-with($facet_name, 'fix_deviation_ls') or starts-with($facet_name, 'fix_sector_average_ls') or starts-with($facet_name, 'fix_analysis_events_ls') or starts-with($facet_name, 'fix_reference_events_ls')) "> <dc:if test="dc:has-result()"> <waterlevels_fix> <dc:call-macro name="collection-group"> <waterlevels description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="fix_longitudinal_section_curve" /> </dc:element> </dc:for-each> </waterlevels> </dc:call-macro> </waterlevels_fix> </dc:if> </dc:filter> </dc:macro> <dc:macro name="delta-wt"> <dc:filter expr="$out_name = 'fix_deltawt_curve' and ($facet_name = 'fix_analysis_events_dwt' or $facet_name = 'fix_analysis_periods_dwt' or $facet_name = 'fix_reference_events_dwt' or starts-with($facet_name, 'fix_deviation_dwt') or starts-with($facet_name, 'fix_sector_average_dwt'))"> <dc:if test="dc:has-result()"> <waterlevels> <dc:call-macro name="collection-group"> <waterlevels description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="fix_deltawt_curve" /> </dc:element> </dc:for-each> </waterlevels> </dc:call-macro> </waterlevels> </dc:if> </dc:filter> </dc:macro> <dc:macro name="fix-wq-curve"> <dc:filter expr="($out_name = 'fix_wq_curve' and (starts-with($facet_name, 'fix_analysis_events_wq') or starts-with($facet_name, 'fix_reference_events_wq') or starts-with($facet_name, 'fix_sector_average_wq') or $facet_name = 'fix_wq_curve')) or ($out_name = 'fix_derivate_curve' and $facet_name = 'fix_derivate_curve')"> <dc:if test="dc:has-result()"> <waterlevels_fix> <dc:call-macro name="collection-group"> <projects description="{dc:group-key()}"> <dc:for-each> <dc:choose> <dc:when test="$out_name = 'fix_wq_curve'"> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="fix_wq_curve" /> </dc:element> </dc:when> <dc:when test="$out_name = 'fix_derivate_curve'"> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="fix_derivate_curve" /> </dc:element> </dc:when> </dc:choose> </dc:for-each> </projects> </dc:call-macro> </waterlevels_fix> </dc:if> </dc:filter> </dc:macro> <dc:macro name="extreme-wq-curve"> <dc:filter expr="$facet_name = 'extreme_wq_curve' or $facet_name = 'extreme_wq_curve_base'"> <dc:if test="dc:has-result()"> <computed_discharge_curves> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="ids" value="${a_gid}" /> <dc:attribute name="out" value="computed_discharge_curve" /> </dc:element> </dc:for-each> </computed_discharge_curves> </dc:if> </dc:filter> </dc:macro> <dc:macro name="computed-discharge-curve"> <dc:filter expr="$facet_name = 'computed_discharge_curve.q'"> <dc:if test="dc:has-result()"> <computed_discharge_curves> <dc:call-macro name="collection-group"> <projects description="{dc:group-key()}"> <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_gid}" /> <dc:attribute name="ids" value="${a_gid}" /> <dc:attribute name="out" value="computed_discharge_curve" /> </dc:element> </dc:for-each> </projects> </dc:call-macro> </computed_discharge_curves> </dc:if> </dc:filter> </dc:macro> <dc:macro name="duration-curve"> <dc:filter expr="$facet_name = 'duration_curve.q' or $facet_name = 'duration_curve.w'"> <dc:if test="dc:has-result()"> <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:element> </dc:for-each> </computed_discharge_curves> </dc:if> </dc:filter> </dc:macro> <dc:macro name="waterlevels-user"> <dc:filter expr="($out_name = 'longitudinal_section' and $facet_name = 'longitudinal_section.w') and (not ($current-state-id = 'state.winfo.uesk.wsp' and $ld_m = 'location'))"> <dc:if test="dc:has-result()"> <waterlevels> <dc:call-macro name="collection-group"> <waterlevels description="{dc:group-key()}"> <dc:for-each> <dc:choose> <dc:when test="$ld_m = 'location'"> <dc:variable name="combined_desc" expr="concat($facet_description, ' an KM ', $deffrom)" /> </dc:when> <dc:otherwise> <dc:variable name="combined_desc" expr="concat($facet_description, ' von KM ', $deffrom, ' bis KM ', $defto)" /> </dc:otherwise> </dc:choose> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${combined_desc}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="longitudinal_section" /> </dc:element> </dc:for-each> </waterlevels> </dc:call-macro> </waterlevels> </dc:if> </dc:filter> </dc:macro> <dc:comment comment="For building differences." /> <dc:macro name="differences-fix"> <dc:comment comment="Vollmer curves need own factory" /> <dc:filter expr="$a_state = 'state.fix.vollmer.compute' and $facet_name = 'longitudinal_section.w'"> <dc:if test="dc:has-result()"> <vollmer_waterlevels> <dc:call-macro name="collection-group"> <waterlevels description="{dc:group-key()}"> <dc:for-each> <dc:choose> <dc:when test="$ld_m = 'location'"> <dc:variable name="combined_desc" expr="concat($facet_description, ' an KM ', $deffrom)" /> </dc:when> <dc:otherwise> <dc:variable name="combined_desc" expr="concat($facet_description, ' von KM ', $deffrom, ' bis KM ', $defto)" /> </dc:otherwise> </dc:choose> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${combined_desc}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="fixanalysis" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="longitudinal_section" /> </dc:element> </dc:for-each> </waterlevels> </dc:call-macro> </vollmer_waterlevels> </dc:if> </dc:filter> <dc:filter expr="not($a_state = 'state.fix.vollmer.compute') and (($out_name = 'longitudinal_section' and $facet_name = 'longitudinal_section.w') and (not ($current-state-id = 'state.winfo.uesk.wsp' and $ld_m = 'location')))"> <dc:if test="dc:has-result()"> <waterlevels> <dc:call-macro name="collection-group"> <waterlevels description="{dc:group-key()}"> <dc:for-each> <dc:choose> <dc:when test="$ld_m = 'location'"> <dc:variable name="combined_desc" expr="concat($facet_description, ' an KM ', $deffrom)" /> </dc:when> <dc:otherwise> <dc:variable name="combined_desc" expr="concat($facet_description, ' von KM ', $deffrom, ' bis KM ', $defto)" /> </dc:otherwise> </dc:choose> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${combined_desc}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="longitudinal_section" /> </dc:element> </dc:for-each> </waterlevels> </dc:call-macro> </waterlevels> </dc:if> </dc:filter> </dc:macro> <dc:macro name="floodmap-hws-user"> <dc:comment>No grouping in this?</dc:comment> <dc:filter expr="$out_name = 'floodmap' and $facet_name = 'floodmap.usershape'"> <own-hws> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="floodmap" /> </dc:element> </dc:for-each> </own-hws> </dc:filter> </dc:macro> <dc:macro name="bedquality"> <dc:filter expr="$out_name = 'bed_longitudinal_section' and starts-with($facet_name, 'bed_longitudinal_section')"> <dc:if test="dc:has-result()"> <bed_quality> <dc:call-macro name="collection-group"> <quality-bed description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="minfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="bed_longitudinal_section" /> </dc:element> </dc:for-each> </quality-bed> </dc:call-macro> </bed_quality> </dc:if> </dc:filter> </dc:macro> <dc:macro name="flow-velocity"> <dc:filter expr="$out_name = 'flow_velocity' and starts-with($facet_name, 'flow_velocity')"> <dc:if test="dc:has-result()"> <flow_velocity> <dc:call-macro name="collection-group"> <flow description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="minfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="flow_velocity" /> </dc:element> </dc:for-each> </flow> </dc:call-macro> </flow_velocity> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sediment-load"> <dc:filter expr="$out_name = 'sedimentload_ls' and starts-with($facet_name, 'sedimentload')"> <dc:if test="dc:has-result()"> <sediment_load> <dc:call-macro name="collection-group"> <load description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="minfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </load> </dc:call-macro> </sediment_load> </dc:if> </dc:filter> </dc:macro> <dc:macro name="middle_bedheights"> <dc:filter expr="($out_name = 'bedheight_middle') and (starts-with($facet_name, 'bedheight_middle.single'))"> <dc:if test="dc:has-result()"> <middle_bedheights> <dc:call-macro name="collection-group"> <middle_bedheight description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="minfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </middle_bedheight> </dc:call-macro> </middle_bedheights> </dc:if> </dc:filter> </dc:macro> <dc:macro name="bedheight_differences"> <dc:filter expr="($out_name = 'bed_difference_year' or $out_name = 'bed_difference_height_year') and (starts-with($facet_name, 'bedheight_difference.year') or starts-with($facet_name, 'bedheight_difference.height'))"> <dc:if test="dc:has-result()"> <bedheight_differences> <dc:call-macro name="collection-group"> <difference description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="minfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </difference> </dc:call-macro> </bedheight_differences> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sqrelations_user"> <dc:filter expr="not(dc:contains($facet_name, 'overview')) and ( ($out = 'sq_relation_a' and starts-with($facet_name, 'sq_a_')) or ($out = 'sq_relation_b' and starts-with($facet_name, 'sq_b_')) or ($out = 'sq_relation_c' and starts-with($facet_name, 'sq_c_')) or ($out = 'sq_relation_d' and starts-with($facet_name, 'sq_d_')) or ($out = 'sq_relation_e' and starts-with($facet_name, 'sq_e_')) or ($out = 'sq_relation_f' and starts-with($facet_name, 'sq_f_')) or ($out = 'sq_relation_g' and starts-with($facet_name, 'sq_g_'))) or dc:contains($facet_name, 'overview')"> <dc:if test="dc:has-result()"> <sq_relations> <dc:call-macro name="collection-group"> <sqrel description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="minfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sqrel> </dc:call-macro> </sq_relations> </dc:if> </dc:filter> </dc:macro> <dc:macro name="waterlevels-discharge"> <dc:filter expr="$out_name = 'discharge_longitudinal_section'"> <dc:if test="dc:has-result()"> <waterlevels_discharge> <dc:call-macro name="collection-group"> <discharge description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="winfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}-${facet_name}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="discharge_longitudinal_section" /> </dc:element> </dc:for-each> </discharge> </dc:call-macro> </waterlevels_discharge> </dc:if> </dc:filter> </dc:macro> <!-- Macros to load system data --> <dc:macro name="qmainvalues"> <qmainvalue factory="mainvalue" ids="{$river_id}:q" target_out="{$out}" /> </dc:macro> <dc:macro name="mainvalues"> <wmainvalue factory="mainvalue" ids="{$river_id}:w" target_out="{$out}" /> <dc:call-macro name="qmainvalues" /> </dc:macro> <!-- discharge curves --> <dc:macro name="hist_discharge_factory"> <dc:for-each> <dc:variable name="validity" expr="concat( dc:date-format('dd.MM.yyyy', $start_time), ' - ', dc:date-format('dd.MM.yyyy', $stop_time))" /> <histdis name="{concat($bfg_id, ' ', $validity)}" description="{concat($bfg_id, ' ', $validity)}" factory="gaugedischarge" target_out="{$out}" ids="{$gauge_name};{$dt_id};{concat($bfg_id, ' ', $gauge_name, ' ', $validity)}" /> </dc:for-each> </dc:macro> <dc:macro name="hist_discharge_rec"> <dc:variable name="start" type="number" expr="dc:date-format('yyyyMMdd', number(substring-before($year_range, ';')))" /> <dc:variable name="stop" type="number" expr="dc:date-format('yyyyMMdd', number(substring-after($year_range, ';')))" /> <dc:call-macro name="discharge_curve_choose_context"> <dc:filter expr="$kind = 1 and number(dc:date-format('yyyyMMdd', $start_time)) < $stop and number(dc:coalesce( dc:date-format('yyyyMMdd', $stop_time), '99999999')) > $start"> <dc:call-macro name="hist_discharge_factory" /> </dc:filter> </dc:call-macro> </dc:macro> <dc:macro name="discharge_table_gauge"> <dc:call-macro name="discharge_curve_choose_context"> <dc:filter expr="$kind = 0"> <dc:group expr="$gauge_name"> <gauge name="{dc:group-key()}"> <dc:for-each> <current_gauge factory="gaugedischarge" target_out="{$out}" ids="{$gauge_name}" /> </dc:for-each> </gauge> </dc:group> </dc:filter> </dc:call-macro> </dc:macro> <dc:macro name="historical_discharge_curve"> <dc:call-macro name="discharge_curve_choose_context"> <dc:filter expr="$kind = 1"> <historical_discharge_curves> <dc:group expr="$gauge_name"> <gauge name="{dc:group-key()}"> <dc:call-macro name="hist_discharge_factory" /> </gauge> </dc:group> </historical_discharge_curves> </dc:filter> </dc:call-macro> </dc:macro> <dc:macro name="discharge_curve_choose_context"> <dc:choose> <dc:when test="$fromkm > -99999 and $tokm < 99999"> <dc:context> <dc:call-macro name="discharge_curves_km" /> <dc:macro-body /> </dc:context> </dc:when> <dc:otherwise> <dc:variable name="refgauge" type="number" expr="dc:get('reference_gauge')" /> <dc:context> <dc:call-macro name="discharge_curves_refgauge" /> <dc:macro-body /> </dc:context> </dc:otherwise> </dc:choose> </dc:macro> <dc:macro name="discharge_curves_km"> <dc:statement> SELECT g.name AS gauge_name, dt.id AS dt_id, t.start_time AS start_time, t.stop_time AS stop_time, dt.bfg_id AS bfg_id, dt.kind AS kind FROM gauges g JOIN discharge_tables dt ON g.id = dt.gauge_id LEFT JOIN time_intervals t ON dt.time_interval_id = t.id WHERE g.river_id = ${river_id} AND g.station BETWEEN ${fromkm} AND ${tokm} ORDER BY start_time </dc:statement> </dc:macro> <dc:macro name="discharge_curves_refgauge"> <dc:statement> SELECT g.name AS gauge_name, dt.id AS dt_id, t.start_time AS start_time, t.stop_time AS stop_time, dt.bfg_id AS bfg_id, dt.kind AS kind FROM gauges g JOIN discharge_tables dt ON g.id = dt.gauge_id LEFT JOIN time_intervals t ON dt.time_interval_id = t.id WHERE g.river_id = ${river_id} AND g.official_number = ${refgauge} ORDER BY start_time </dc:statement> </dc:macro> <!-- Cross sections --> <dc:macro name="cross_sections"> <cross_sections id="flood-protections-{$river_id}"> <dc:context connection="system"> <dc:statement> SELECT DISTINCT cs.id AS prot_id, cs.description AS prot_description FROM cross_sections cs JOIN cross_section_lines csl ON csl.cross_section_id = cs.id WHERE cs.river_id = ${river_id} AND csl.km BETWEEN ${fromkm} AND ${tokm} </dc:statement> <dc:for-each> <cross_section name="{$prot_description}" ids="{$prot_id}" factory="crosssections" target_out="{$out}" /> </dc:for-each> </dc:context> </cross_sections> </dc:macro> <dc:macro name="hyks"> <hyks id="hyk-{$river_id}"> <dc:context connection="system"> <dc:statement> SELECT DISTINCT h.id AS hyk_id, h.description AS hyk_description FROM hyks h JOIN hyk_entries he ON he.hyk_id = h.id WHERE river_id = ${river_id} AND he.km BETWEEN ${fromkm} AND ${tokm} </dc:statement> <dc:for-each> <hyk name="{$hyk_description}" ids="{$hyk_id}" factory="hyk" target_out="{$out}" /> </dc:for-each> </dc:context> </hyks> </dc:macro> <!-- wst-data --> <!-- model-waterlevels --> <dc:macro name="basedata_0_macro"> <dc:filter expr="$kind = 0"> <dc:if test="dc:has-result()"> <basedata> <dc:group expr="$wst_description"> <basedata name="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </basedata> </dc:group> </basedata> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_0"> <dc:call-macro name="basedata_0_macro"> <column name="{$wst_column_name}" ids="base_data-wstv-{$wst_column_position}-{$wst_id}" factory="staticwqkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_0_wq"> <dc:call-macro name="basedata_0_macro"> <column name="{$wst_column_name}" ids="base_data-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- additional longitudinal sections --> <dc:macro name="basedata_1_additionals_macro"> <dc:filter expr="$kind=1"> <dc:if test="dc:has-result()"> <additionals> <dc:group expr="dc:replace($wst_description, 'Zus.Längsschnitte/', '')"> <additional name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </additional> </dc:group> </additionals> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_1_additionals"> <dc:call-macro name="basedata_1_additionals_macro"> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="staticwqkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_1_additionals-sinfo-with-q_macro"> <dc:filter expr="$kind=1 and $sinfo_selection='Q'"> <dc:if test="dc:has-result()"> <sinfo_additional_ls_withQ> <dc:group expr="dc:replace($wst_description, 'Zus.Längsschnitte/', '')"> <additional name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </additional> </dc:group> </sinfo_additional_ls_withQ> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_1_additionals-sinfo-with-q"> <dc:call-macro name="basedata_1_additionals-sinfo-with-q_macro"> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="staticwqkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" year="{dc:date-format('yyyy', $start_time)}" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_1_additionals-sinfo-without-q_macro"> <dc:filter expr="$kind=1 and $sinfo_selection='W'"> <dc:if test="dc:has-result()"> <sinfo_additional_ls_withoutQ> <dc:group expr="dc:replace($wst_description, 'Zus.Längsschnitte/', '')"> <additional name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </additional> </dc:group> </sinfo_additional_ls_withoutQ> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_1_additionals-sinfo-without-q"> <dc:call-macro name="basedata_1_additionals-sinfo-without-q_macro"> <dc:variable name="start_year" expr="dc:date-format('yyyy', $start_time)" /> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" year="{dc:date-format('yyyy', $start_time)}" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_1_additionals_wq"> <dc:call-macro name="basedata_1_additionals_macro"> <column name="{$wst_column_name}" ids="base_data-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_1_additionals-relative_point"> <dc:call-macro name="basedata_1_additionals_macro"> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- fixations --> <dc:macro name="fixings-macro"> <dc:filter expr="$kind=2"> <dc:if test="dc:has-result()"> <fixations> <dc:group expr="dc:replace($wst_description, 'Fixierungen/', '')"> <fixation name="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </fixation> </dc:group> </fixations> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_2_fixations"> <dc:call-macro name="fixings-macro"> <dc:variable name="start_year" expr="dc:date-format('yyyy', $start_time)" /> <column name="{$wst_column_name}" ids="fixations-wstv-{$wst_column_position}-{$wst_id}" factory="staticwqkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" year="{dc:date-format('yyyy', $start_time)}" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_2_fixations_wq"> <dc:call-macro name="fixings-macro"> <column name="{$wst_column_name}" ids="fixations-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_2_fixations_relative_point"> <dc:call-macro name="fixings-macro"> <column name="{$wst_column_name}" ids="fixations-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- official lines --> <dc:macro name="basedata_3_macro"> <dc:filter expr="$kind=3"> <dc:if test="dc:has-result()"> <officiallines> <dc:group expr="$wst_description"> <official name="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </official> </dc:group> </officiallines> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_3_officials"> <dc:call-macro name="basedata_3_macro"> <dc:variable name="start_year" expr="dc:date-format('yyyy', $start_time)" /> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="staticwqkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" year="{dc:date-format('yyyy', $start_time)}" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_3_officials_wq"> <dc:call-macro name="basedata_3_macro"> <column name="{$wst_column_name}" ids="officials_wq-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- flood marks --> <dc:macro name="basedata_4_macro"> <dc:filter expr="$kind=4"> <dc:if test="dc:has-result()"> <heightmarks> <dc:group expr="dc:replace($wst_description, 'HW-Marken/', '')"> <heightmark name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </heightmark> </dc:group> </heightmarks> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_4_heightmarks-points"> <dc:call-macro name="basedata_4_macro"> <column name="{$wst_column_name}" ids="heightmarks_points-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_4_heightmarks-points_wq"> <dc:call-macro name="basedata_4_macro"> <column name="{$wst_column_name}" ids="heightmarks_points-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_4_heightmarks-points-relative_points"> <dc:call-macro name="basedata_4_macro"> <column name="{$wst_column_name}" ids="heightmarks_points-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- flood protection structures --> <dc:macro name="basedata_5_macro"> <dc:filter expr="$kind=5"> <dc:if test="dc:has-result()"> <flood_protections> <dc:group expr="dc:replace($wst_description, 'HW-Schutzanlagen/', '')"> <flood_protection name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </flood_protection> </dc:group> </flood_protections> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_5_flood-protections"> <dc:call-macro name="basedata_5_macro"> <column name="{$wst_column_name}" ids="flood_protection-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_5_flood-protections_wq"> <dc:call-macro name="basedata_5_macro"> <column name="{$wst_column_name}" ids="flood_protection-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_5_flood-protections_relative_points"> <dc:call-macro name="basedata_5_macro"> <column name="{$wst_column_name}" ids="flood_protection-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- waterlevel differences imported from CSV-files for M-INFO --> <dc:macro name="basedata_6_delta_w"> <dc:filter expr="$kind=6"> <dc:if test="dc:has-result()"> <delta_w> <delta_w_cm> <dc:filter expr="contains($wst_description, 'cm.csv')"> <dc:group expr="dc:replace($wst_description, 'CSV/', '')"> <relativepoint name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <column name="{$wst_column_name}" ids="delta_w-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:for-each> </relativepoint> </dc:group> </dc:filter> </delta_w_cm> <delta_w_cma> <dc:filter expr="contains($wst_description, 'cm-a.csv')"> <dc:group expr="dc:replace($wst_description, 'CSV/', '')"> <relativepoint name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <column name="{$wst_column_name}" ids="delta_w_cma-wstv-{$wst_column_position}-{$wst_id}" factory="staticwkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:for-each> </relativepoint> </dc:group> </dc:filter> </delta_w_cma> </delta_w> </dc:if> </dc:filter> </dc:macro> <!-- waterlevels imported from CSV-files for M-INFO --> <dc:macro name="basedata_7_macro"> <dc:filter expr="$kind=7"> <dc:if test="dc:has-result()"> <wlevel> <dc:group expr="dc:replace($wst_description, 'CSV/', '')"> <relativepoint name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <dc:macro-body /> </dc:for-each> </relativepoint> </dc:group> </wlevel> </dc:if> </dc:filter> </dc:macro> <dc:macro name="basedata_7_waterlevels"> <dc:call-macro name="basedata_7_macro"> <dc:variable name="start_year" expr="dc:date-format('yyyy', $start_time)" /> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="staticwqkms" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" year="{dc:date-format('yyyy', $start_time)}" /> </dc:call-macro> </dc:macro> <dc:macro name="basedata_7_waterlevels_wq"> <dc:call-macro name="basedata_7_macro"> <column name="{$wst_column_name}" ids="additionals-wstv-{$wst_column_position}-{$wst_id}" factory="wqinterpol" target_out="{$out}" info="{$info} [km {$deffrom} - {$defto}]" /> </dc:call-macro> </dc:macro> <!-- prototypes --> <dc:macro name="discharge-curve-prototype"> <computed_discharge_curve> <dc:call-macro name="discharge_table_gauge" /> <dc:call-macro name="mainvalues" /> </computed_discharge_curve> <dc:call-macro name="historical_discharge_curve" /> <dc:call-macro name="basedata_0_wq" /> <dc:call-macro name="basedata_1_additionals_wq" /> <dc:call-macro name="basedata_2_fixations_wq" /> <dc:call-macro name="basedata_3_officials_wq" /> <dc:call-macro name="basedata_4_heightmarks-points_wq" /> <dc:call-macro name="basedata_5_flood-protections_wq" /> <minfo> <dc:call-macro name="sqrelations" /> <dc:call-macro name="basedata_7_waterlevels_wq" /> </minfo> </dc:macro> <dc:macro name="discharge-curve-user-prototype"> <dc:call-macro name="waterlevels-user" /> <dc:call-macro name="computed-discharge-curve" /> <!-- TODO: macro for discharge longitudinal section --> <dc:call-macro name="fix-wq-curve" /> <!-- TODO: own macro for Vollmer-curve (extract from fix-wq-curve and waterlevels-user) --> <dc:call-macro name="extreme-wq-curve" /> <minfo> <dc:call-macro name="sqrelations_user" /> </minfo> </dc:macro> <dc:macro name="longitudinal-section-prototype"> <dc:call-macro name="basedata_0" /> <dc:call-macro name="basedata_1_additionals" /> <dc:call-macro name="basedata_2_fixations" /> <dc:call-macro name="basedata_3_officials" /> <dc:call-macro name="basedata_4_heightmarks-points" /> <dc:call-macro name="basedata_5_flood-protections" /> <dc:call-macro name="annotations_per_type" /> <minfo> <fixanalysis> <dc:call-macro name="basedata_6_delta_w" /> <dc:call-macro name="basedata_7_waterlevels" /> </fixanalysis> <dc:call-macro name="sedimentloads" /> <dc:call-macro name="densities" /> <dc:call-macro name="minfo-heights" /> <dc:call-macro name="sounding-width" /> <dc:call-macro name="morph_width" /> <dc:call-macro name="porosities" /> <flow_velocities> <dc:call-macro name="flow_velocity_measurements" /> <dc:call-macro name="flow_velocity_models" /> </flow_velocities> </minfo> <sinfo> <sinfo_predefined_flowdepths> <dc:call-macro name="sinfo_predefined_flowdepth-m" /> </sinfo_predefined_flowdepths> <sinfo_collisions> <dc:call-macro name="sinfo_collisions" /> </sinfo_collisions> <sinfo_predefined_channel> <dc:call-macro name="sinfo_predefined_channel" /> </sinfo_predefined_channel> <sinfo_infrastructure> <dc:call-macro name="sinfo_infrastructure" /> </sinfo_infrastructure> <sinfo_predefined_tkh> <dc:call-macro name="sinfo_predefined_tkh-berechnung" /> <dc:call-macro name="sinfo_predefined_tkh-messung" /> </sinfo_predefined_tkh> <sinfo_predefined_depthevol> <dc:call-macro name="sinfo_predefined_depthevol-aktuell" /> <dc:call-macro name="sinfo_predefined_depthevol-etappe" /> </sinfo_predefined_depthevol> </sinfo> </dc:macro> <dc:macro name="longitudinal-section-user-prototype"> <dc:comment> SINFO </dc:comment> <dc:call-macro name="sinfo_flowdepths" /> <dc:call-macro name="sinfo_flowdepths_minmax" /> <dc:call-macro name="sinfo_flow_depth_development" /> <dc:call-macro name="sinfo_tkh" /> <dc:call-macro name="sinfo_collision" /> <dc:call-macro name="sinfo_flood_duration" /> <dc:comment> WINFO/DIFF/FIX </dc:comment> <dc:call-macro name="longitudinal" /> <dc:call-macro name="differences" /> <dc:call-macro name="waterlevels-discharge" /> <dc:call-macro name="longitudinal-section-fix" /> <dc:call-macro name="longitudinal-section-fix-vollmer" /> <dc:comment> MINFO </dc:comment> <dc:call-macro name="middle_bedheights" /> <dc:call-macro name="bedheight_differences" /> <dc:call-macro name="bedquality" /> <dc:call-macro name="flow-velocity" /> <dc:call-macro name="sediment-load" /> </dc:macro> <!-- porosities --> <dc:macro name="porosities"> <porosities> <dc:context> <dc:statement> SELECT DISTINCT p.id AS pid, p.description AS description, d.lower AS depth_lower, d.upper AS depth_upper, p.description || '<BR>' || 'Tiefe: ' || d.lower || ' - ' || d.upper || ' cm <BR>' || 'Zeitraum: ' AS info, t.start_time AS syear, t.stop_time AS eyear FROM porosity p JOIN depths d ON p.depth_id = d.id JOIN time_intervals t ON p.time_interval_id=t.id WHERE p.river_id = ${river_id} ORDER BY depth_lower, depth_upper </dc:statement> <dc:if test="dc:has-result()"> <dc:for-each> <porosity description="{$depth_lower}-{$depth_upper} cm" factory="porosity" target_out="{$out}" info="{concat($info, dc:date-format('yyyy', $syear), ' - ', dc:date-format('yyyy', $eyear))}" ids="{$pid};{$description}" /> </dc:for-each> </dc:if> </dc:context> </porosities> </dc:macro> <dc:macro name="densities"> <densities> <dc:context> <dc:statement> SELECT DISTINCT sd.id AS sdid, d.lower AS depth_lower, d.upper AS depth_upper, min(sdv.year) AS year, sd.description || '<BR>Jahr: ' || min(sdv.year) AS info FROM sediment_density sd JOIN depths d ON sd.depth_id = d.id JOIN sediment_density_values sdv on sdv.sediment_density_id = sd.id WHERE sd.river_id = ${river_id} GROUP BY sd.id, sd.description, d.upper, d.lower ORDER BY year, depth_lower, depth_upper </dc:statement> <dc:if test="dc:has-result()"> <dc:for-each> <density description="{$depth_lower}-{$depth_upper} cm" factory="sedimentdensity" target_out="{$out}" info="{$info}" ids="{$sdid}" /> </dc:for-each> </dc:if> </dc:context> </densities> </dc:macro> <!-- sediment load --> <dc:macro name="load"> <year description="{$timespan}" factory="sedimentload" target_out="{$out}" info="{$info}" ids="{$slid};{$fraction};{$timespan};{$kind}" /> </dc:macro> <dc:macro name="load_ls"> <year description="{$timespan}" factory="sedimentload_ls" target_out="{$out}" info="{$info}" ids="{$slid};{$timespan};{$kind}" /> </dc:macro> <dc:macro name="loads"> <dc:if test="dc:has-result()"> <dc:group expr="concat('SQ ', dc:date-format('yyyy', $sqstart), '-', dc:date-format('yyyy', $sqstop))"> <sq_time description="{dc:group-key()}"> <dc:group expr="$fraction"> <dc:variable name="fraction_name" expr="concat('${', dc:group-key(), '}')" /> <fraction description="{$fraction_name}"> <dc:for-each> <dc:choose> <dc:when test="string-length(dc:get('endyear')) = 0"> <dc:variable name="timespan" type="string" expr="dc:date-format('yyyy', $startyear)" /> </dc:when> <dc:otherwise> <dc:variable name="timespan" type="string" expr="concat(dc:date-format('yyyy', $startyear), '-', dc:date-format('yyyy', $endyear))" /> </dc:otherwise> </dc:choose> <dc:if test="$kind = 'official'"> <dc:variable name="info" type="string" expr="concat('Amtliche Epoche<BR>', dc:get('info'))" /> </dc:if> <dc:macro-body /> </dc:for-each> </fraction> </dc:group> </sq_time> </dc:group> </dc:if> </dc:macro> <dc:macro name="sedimentloads-filter"> <years> <dc:filter expr="string-length(dc:get('endyear')) = 0 and $kind != 'official'"> <dc:macro-body /> </dc:filter> </years> <epochs> <dc:filter expr="string-length(dc:get('endyear')) > 0 and $kind != 'official'"> <dc:macro-body /> </dc:filter> </epochs> <off_epochs> <dc:filter expr="$kind = 'official'"> <dc:macro-body /> </dc:filter> </off_epochs> </dc:macro> <dc:macro name="sedimentloads"> <sedimentloads> <dc:call-macro name="annotations_sediment_load_ls" /> <measurement_stations> <dc:context> <dc:call-macro name="sedimentload_stations_statement" /> <dc:call-macro name="sedimentloads-filter"> <dc:call-macro name="loads"> <dc:call-macro name="load" /> </dc:call-macro> </dc:call-macro> </dc:context> </measurement_stations> <sediment_load_ls> <dc:context> <dc:call-macro name="sedimentload_ls_statement" /> <dc:call-macro name="sedimentloads-filter"> <dc:call-macro name="loads"> <dc:call-macro name="load_ls" /> </dc:call-macro> </dc:call-macro> </dc:context> </sediment_load_ls> </sedimentloads> </dc:macro> <dc:macro name="sedimentload_stations_statement"> <dc:statement> SELECT DISTINCT sl.id AS slid, slk.kind AS kind, ti.start_time AS startyear, ti.stop_time AS endyear, sq.start_time AS sqstart, sq.stop_time AS sqstop, sq.id AS sqid, gf.name AS fraction, sl.description || '<BR>' || 'Fraktion: ' || gf.lower || ' bis ' || gf.upper || ' mm<BR>Einheit: t/a' AS info FROM sediment_load sl JOIN sediment_load_kinds slk ON slk.id = sl.kind JOIN sediment_load_values slv ON sl.id = slv.sediment_load_id JOIN measurement_station ms ON ms.id = slv.measurement_station_id JOIN ranges ra ON ms.range_id = ra.id JOIN rivers r ON ra.river_id = r.id JOIN time_intervals ti ON sl.time_interval_id = ti.id LEFT JOIN time_intervals sq ON sl.sq_time_interval_id = sq.id JOIN grain_fraction gf ON gf.id = sl.grain_fraction_id WHERE r.id = ${river_id} AND CASE WHEN r.km_up = 1 AND ra.b IS NOT NULL THEN ra.b ELSE ra.a END BETWEEN ${fromkm} AND ${tokm} ORDER BY sqstart DESC, sqstop DESC, fraction, startyear DESC, endyear DESC </dc:statement> </dc:macro> <dc:macro name="sedimentload_ls_statement"> <dc:statement> SELECT DISTINCT sl.id AS slid, slk.kind AS kind, ti.start_time AS startyear, ti.stop_time AS endyear, sq.start_time AS sqstart, sq.stop_time AS sqstop, sq.id AS sqid, gf.name AS fraction, sl.description || '<BR>' || 'Fraktion: ' || gf.lower || ' bis ' || gf.upper || ' mm<BR>Einheit: ' || u.name AS info FROM sediment_load_ls sl JOIN sediment_load_kinds slk ON slk.id = sl.kind JOIN rivers r ON sl.river_id = r.id JOIN sediment_load_ls_values slv ON sl.id = slv.sediment_load_ls_id JOIN time_intervals ti ON sl.time_interval_id = ti.id LEFT JOIN time_intervals sq ON sl.sq_time_interval_id = sq.id JOIN grain_fraction gf ON gf.id = sl.grain_fraction_id JOIN units u ON sl.unit_id = u.id WHERE r.id = ${river_id} AND slv.station BETWEEN ${fromkm} AND ${tokm} ORDER BY sqstart DESC, sqstop DESC, fraction, startyear DESC, endyear DESC </dc:statement> </dc:macro> <!-- annotations --> <dc:macro name="annotations"> <annotation factory="annotations" ids="{$river_id}" target_out="{$out}" /> </dc:macro> <dc:macro name="annotations_per_type"> <annotations> <dc:context> <all_annotations factory="annotations" ids="{$river_id}" target_out="{$out}" /> <dc:statement> SELECT id AS anno_id, name AS anno_description FROM annotation_types </dc:statement> <dc:for-each> <annotation name="{$anno_description}" factory="annotations" target_out="{$out}" ids="{$river_id}:{$anno_description}" /> </dc:for-each> </dc:context> </annotations> </dc:macro> <dc:macro name="annotations_sediment_load_ls"> <sources_sinks> <dc:context> <dc:statement> SELECT id AS anno_id, name AS anno_description FROM annotation_types WHERE name LIKE 'Quelle %' OR name LIKE 'Senke %' </dc:statement> <dc:for-each> <annotation name="{$anno_description}" factory="annotations" target_out="{$out}" ids="{$river_id}:{$anno_description}" /> </dc:for-each> </dc:context> </sources_sinks> </dc:macro> <dc:macro name="qsectors"> <qsector factory="qsectors" ids="{$river_id}" target_out="{$out}" /> </dc:macro> <dc:macro name="flood-map-recommended"> <kilometrage> <riveraxis factory="riveraxis" ids="{$river_id}" target_out="{$out}" /> </kilometrage> <rastermap> <background factory="wmsbackground" ids="{$river_id}" target_out="{$out}" /> </rastermap> </dc:macro> <!-- bed heights --> <dc:macro name="minfo-heights-diff"> <dc:context> <dc:statement> WITH sta AS (SELECT bhs.id, bhs.description, bhsv.station, bhs.year FROM bed_height bhs JOIN bed_height_values bhsv ON bhsv.bed_height_id = bhs.id WHERE bhs.river_id = ${river_id} AND bhsv.station BETWEEN ${fromkm} AND ${tokm}), csta AS (SELECT b1.id AS b1id, b1.description AS b1desc, b1.year AS b1year, b2.id AS b2id, b2.description AS b2desc, b2.year AS b2year FROM sta b1 JOIN sta b2 ON b1.station = b2.station AND b1.id <> b2.id AND (b1.year > b2.year OR b1.year IS NULL)) SELECT DISTINCT b1id, b1desc, b1year, b2id, b2desc, b2year FROM csta ORDER BY b1desc, b2desc </dc:statement> <dc:if test="dc:has-result()"> <bedheights> <dc:call-macro name="bed-heights-single-diff" /> <dc:call-macro name="bed-heights-epoch-diff" /> </bedheights> </dc:if> </dc:context> </dc:macro> <dc:macro name="bed-heights-single-diff"> <dc:filter expr="not(contains(dc:lowercase($b1desc), 'epoche'))"> <years> <dc:call-macro name="minfo-heights-diff-tree" /> </years> </dc:filter> </dc:macro> <dc:macro name="bed-heights-epoch-diff"> <dc:filter expr="contains(dc:lowercase($b1desc), 'epoche')"> <epochs> <dc:call-macro name="minfo-heights-diff-tree" /> </epochs> </dc:filter> </dc:macro> <dc:macro name="minfo-heights-diff-tree"> <dc:group expr="dc:coalesce($b1year, 'sonstige')"> <minfo-diff name="{dc:group-key()}"> <dc:for-each> <dc:choose> <dc:when test="dc:group-key() = $b1year"> <height factory="bedheight" target_out="{$out}" ids="bedheight-single-{$b1id}-{$b1desc}#bedheight-single-{$b2id}-{$b2desc}" info="{$b1desc}#{$b2desc}" description="{$b1desc} - {$b2desc}" /> </dc:when> <dc:when test="dc:group-key() = 'sonstige'"> <height factory="bedheight" target_out="{$out}" ids="bedheight-single-{$b1id}-{$b1desc}#bedheight-single-{$b2id}-{$b2desc}" info="{$b1desc}#{$b2desc}" description="{$b1desc} - {$b2desc}" /> <height factory="bedheight" target_out="{$out}" ids="bedheight-single-{$b2id}-{$b1desc}#bedheight-single-{$b1id}-{$b2desc}" info="{$b2desc}#{$b1desc}" description="{$b2desc} - {$b1desc}" /> </dc:when> </dc:choose> </dc:for-each> </minfo-diff> </dc:group> </dc:macro> <dc:macro name="minfo-heights"> <bedheights> <dc:call-macro name="bed-heights-single" /> <dc:call-macro name="bed-heights-epoch" /> </bedheights> </dc:macro> <!-- Show all three MW, TL, and KL bedheights --> <dc:macro name="bed-heights-factory_MW_TW_KL"> <dc:for-each> <dc:if test="$bedh_height_count > 0"> <height factory="bedheight" target_out="{$out}" ids="bedheight-single-{$bedh_id}-{$bedh_year}-MW-{$bedh_descr}" info="{$info}" description="MW-{$bedh_descr}" /> </dc:if> <dc:if test="$bedh_min_count > 0"> <height factory="bedheight" target_out="{$out}" ids="bedheight-singleMin-{$bedh_id}-{$bedh_year}-TW-{$bedh_descr}" info="{$info}" description="TW-{$bedh_descr}" /> </dc:if> <dc:if test="$bedh_max_count > 0"> <height factory="bedheight" target_out="{$out}" ids="bedheight-singleMax-{$bedh_id}-{$bedh_year}-KL-{$bedh_descr}" info="{$info}" description="KL-{$bedh_descr}" /> </dc:if> </dc:for-each> </dc:macro> <!-- Show only MW bed height and name it in a neutral way --> <dc:macro name="bed-heights-factory_MW"> <dc:for-each> <dc:if test="$bedh_height_count > 0"> <!-- REMARK: addition 'yaer' attribute is used by intelligent datacage filter of SINFO --> <height factory="bedheight" target_out="{$out}" ids="bedheight-single-{$bedh_id}-{$bedh_year}-{$bedh_descr}" info="{$info}" description="{$bedh_descr}" year="{$bedh_year}" /> </dc:if> </dc:for-each> </dc:macro> <dc:macro name="bed-heights-single"> <single> <dc:context> <dc:call-macro name="bed-heights-statement" /> <dc:if test="dc:has-result()"> <dc:group expr="dc:coalesce($bedh_year, 'sonstige')"> <heights name="{dc:group-key()}" description="{dc:group-key()}"> <dc:call-macro name="bed-heights-factory_MW_TW_KL" /> </heights> </dc:group> </dc:if> </dc:context> </single> </dc:macro> <!-- Show bed heights that have MW values with a neutral name --> <dc:macro name="bed-heights-single-MW"> <single> <dc:context> <dc:call-macro name="bed-heights-statement" /> <dc:filter expr="$bedh_height_count"> <dc:if test="dc:has-result()"> <dc:group expr="dc:coalesce($bedh_year, 'sonstige')"> <heights name="{dc:group-key()}" description="{dc:group-key()}"> <dc:call-macro name="bed-heights-factory_MW" /> </heights> </dc:group> </dc:if> </dc:filter> </dc:context> </single> </dc:macro> <!-- Show bed heights that have KL and TW values with a neutral name --> <dc:macro name="bed-heights-single-KL_TW"> <single> <dc:context> <dc:call-macro name="bed-heights-statement" /> <dc:filter expr="$bedh_max_count > 0 and $bedh_min_count > 0"> <dc:if test="dc:has-result()"> <dc:group expr="dc:coalesce($bedh_year, 'sonstige')"> <heights name="{dc:group-key()}" description="{dc:group-key()}"> <dc:call-macro name="bed-heights-factory_MW" /> </heights> </dc:group> </dc:if> </dc:filter> </dc:context> </single> </dc:macro> <dc:macro name="bed-heights-epoch"> <epoch> <dc:context> <dc:call-macro name="bed-heights-statement" /> <dc:filter expr="contains($bedh_descr, 'Epoche')"> <dc:call-macro name="bed-heights-factory_MW_TW_KL" /> </dc:filter> </dc:context> </epoch> </dc:macro> <dc:macro name="sounding-width-factory"> <dc:for-each> <height factory="bedheight" target_out="{$out}" ids="bedheight-soundings-{$bedh_id}-{$bedh_year}-{$bedh_descr}" info="{$info}" description="{$bedh_descr}" /> </dc:for-each> </dc:macro> <dc:macro name="sounding-width"> <dc:context> <dc:call-macro name="bed-heights-statement" /> <dc:if test="dc:has-result()"> <soundings_width> <dc:call-macro name="sounding-width-factory" /> </soundings_width> </dc:if> </dc:context> </dc:macro> <dc:macro name="sounding-width-recommendations"> <dc:context> <dc:call-macro name="bed-heights-statement" /> <dc:filter expr="dc:contains($diffids, concat(';', $bedh_descr, ']'))"> <dc:call-macro name="sounding-width-factory" /> </dc:filter> </dc:context> </dc:macro> <dc:macro name="bed-heights-statement"> <dc:statement> SELECT bhs.id AS bedh_id, bhs.year AS bedh_year, bhs.description AS bedh_descr, bhs.description || '<BR>Jahr: ' || bhs.year || '<BR>Aufnahmeart: ' || bht.name || '<BR>Lagesystem: ' || ls.name || '<BR>Höhensystem: ' || cur_em.name || '<BR>ursprüngliches Höhensystem: ' || old_em.name || '<BR>Strecke: ' || round(r.a, 1) || '-' || round(r.b, 1) || '<BR>Auswerter: ' || bhs.evaluation_by AS info, COALESCE(bhv.height_count,0) AS bedh_height_count, COALESCE(bhv.min_count,0) AS bedh_min_count, COALESCE(bhv.max_count,0) AS bedh_max_count FROM bed_height bhs JOIN bed_height_type bht ON bht.id = bhs.type_id JOIN location_system ls ON ls.id = location_system_id JOIN elevation_model cur_em ON cur_em.id = cur_elevation_model_id LEFT JOIN elevation_model old_em ON old_em.id = old_elevation_model_id LEFT JOIN ranges r ON r.id = range_id LEFT JOIN (SELECT bed_height_id, COUNT(height) AS height_count, COUNT(min_height) AS min_count, COUNT(max_height) AS max_count FROM bed_height_values WHERE (station BETWEEN (${fromkm}-0.0001) AND (${tokm}+0.0001)) GROUP BY bed_height_id ) bhv ON bhs.id = bhv.bed_height_id WHERE bhs.river_id = ${river_id} </dc:statement> </dc:macro> <!-- flow velocity --> <dc:macro name="flow_velocity_models"> <dc:context> <dc:statement> SELECT fvm.id AS fvmid, fvm.description AS fvmd, dz.gauge_name AS gauge, dz.value AS q, dz.upper_discharge AS upperQ, dz.lower_discharge AS lowerQ FROM flow_velocity_model fvm JOIN discharge_zone dz ON dz.id = fvm.discharge_zone_id WHERE dz.river_id = ${river_id} ORDER BY dz.value </dc:statement> <dc:if test="dc:has-result()"> <flowvelocitymodel> <dc:for-each> <measurement_value name="{$fvmd}" description="{$fvmd}" ids="{$fvmid}" factory="flowvelocitymodel" info="{$lowerQ} - {$upperQ}<BR> Pegel {$gauge}<BR> Q = {$q} m3/s" target_out="{$out}" /> </dc:for-each> </flowvelocitymodel> </dc:if> </dc:context> </dc:macro> <dc:macro name="flow_velocity_measurements"> <dc:context> <dc:statement> SELECT id AS fvmid, description AS fvmd FROM flow_velocity_measurements WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <flowvelocitymeasurement> <dc:for-each> <flow_velocity_measurement name="{$fvmd}" description="{$fvmd}"> <dc:context> <dc:statement> SELECT id, description, station, datetime, v, w, q FROM flow_velocity_measure_values WHERE measurements_id = ${fvmid} AND station BETWEEN ${fromkm} AND ${tokm} </dc:statement> <dc:for-each> <measurement_value name="{$description} - {$station} - {$datetime}" description="{$description} - {$station} - {$datetime}" ids="{$id}" factory="flowvelocity" target_out="{$out}" /> </dc:for-each> </dc:context> </flow_velocity_measurement> </dc:for-each> </flowvelocitymeasurement> </dc:if> </dc:context> </dc:macro> <dc:macro name="morph_width"> <dc:context> <dc:statement> SELECT id AS width_id FROM morphologic_width WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <morph_width> <dc:for-each> <dc:context> <dc:statement> SELECT min(station) AS from_station, max(station) AS to_station FROM morphologic_width_values WHERE morphologic_width_id = ${width_id} </dc:statement> <dc:for-each> <morphologic-width name="{$from_station} - {$to_station}" description="{$from_station} - {$to_station}" ids="{$width_id}" factory="morph-width" target_out="{$out}" /> </dc:for-each> </dc:context> </dc:for-each> </morph_width> </dc:if> </dc:context> </dc:macro> <dc:macro name="sqrelations"> <dc:context> <dc:statement> SELECT ti.start_time AS start_time, ti.stop_time AS stop_time, ms.name AS station_name, lower(sqv.parameter) AS parameter, sqv.id AS sqvid, ra.a AS station_km FROM sq_relation sq JOIN time_intervals ti ON ti.id = sq.time_interval_id JOIN sq_relation_value sqv ON sqv.sq_relation_id = sq.id JOIN measurement_station ms ON sqv.measurement_station_id = ms.id JOIN ranges ra ON ms.range_id = ra.id JOIN rivers r ON r.id = ra.river_id WHERE r.id = ${river_id} ORDER BY start_time, stop_time </dc:statement> <dc:if test="dc:has-result()"> <sq_relations> <dc:group expr="concat('Parameter ', dc:uppercase($parameter))"> <parameter description="{dc:group-key()}"> <dc:group expr="$station_km" type="number"> <dc:group expr="concat('km ', $station_km, ': ', $station_name)"> <station description="{dc:group-key()}"> <dc:for-each> <dc:variable name="combined_desc" expr="concat(dc:date-format('yyyy', $start_time), ' bis ', dc:date-format('yyyy', $stop_time))" /> <sqvalue factory="sqrelationdatacage" target_out="{$out}" ids="{$sqvid};{dc:uppercase($parameter)} - {$station_name}: {$combined_desc}" description="{$combined_desc}" /> </dc:for-each> </station> </dc:group> </dc:group> </parameter> </dc:group> </sq_relations> </dc:if> </dc:context> </dc:macro> <!-- Floodmap part --> <dc:macro name="flood-map-complete"> <dc:call-macro name="flood-map-buildings" /> <dc:call-macro name="flood-map-gaugelocations" /> <dc:call-macro name="floodmarks" /> <hws> <dc:call-macro name="hwslines" /> <dc:call-macro name="hwspoints" /> </hws> <dc:call-macro name="flood-map-routing" /> <hydrboundaries> <dc:call-macro name="flood-map-floodplain" /> <dc:call-macro name="flood-map-hydr-boundaries" /> </hydrboundaries> <dc:call-macro name="flood-map-uesk" /> </dc:macro> <dc:macro name="flood-map-routing"> <route_data> <dc:call-macro name="flood-map-qps" /> <dc:call-macro name="flood-map-fixpoints" /> <dc:call-macro name="flood-map-km" /> <dc:call-macro name="flood-map-riveraxis" /> </route_data> </dc:macro> <dc:macro name="flood-map-hydr-boundaries"> <bfg_model> <dc:call-macro name="flood-map-hydr-boundaries-poly" /> <dc:call-macro name="flood-map-hydr-boundaries-lines" /> </bfg_model> <dc:call-macro name="flood-map-hydr-boundaries-state" /> </dc:macro> <dc:macro name="flood-map-dem"> <dems> <dc:context> <dc:statement> SELECT d.id AS dem_id, r.a AS dem_lower, r.b AS dem_upper, d.name AS name, t.start_time AS start_time, t.stop_time AS stop_time, 'Projektion: ' || d.projection || '<BR>' || 'Rasterweite: ' || d.resolution || 'm<BR>' || 'Format: ' || d.format || '<BR>' || 'Zeitraum: ' AS info FROM dem d JOIN ranges r ON d.range_id = r.id LEFT JOIN time_intervals t ON d.time_interval_id = t.id WHERE d.river_id = ${river_id} AND NOT((${tokm} < r.a) or (${fromkm} > r.b)) </dc:statement> <dc:for-each> <dem factory="demfactory" target_out="{$out}" ids="{$dem_id}" name="{$name}" info="{$info}{dc:date-format('yyyy', $start_time)} - {dc:date-format('yyyy', $stop_time)}" /> </dc:for-each> </dc:context> </dems> </dc:macro> <dc:macro name="filter_hws_ddg"> <dc:macro name="durchlass_damm_graben"> <dc:macro name="ddg_factory"> <dc:for-each> <hws factory="hwsfactory" name="{$hws_name}" target_out="{$out}" /> </dc:for-each> </dc:macro> <dc:filter expr="$hws_kind=1"> <dc:if test="dc:has-result()"> <Durchlass> <dc:call-macro name="ddg_factory" /> </Durchlass> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=2"> <dc:if test="dc:has-result()"> <Damm> <dc:call-macro name="ddg_factory" /> </Damm> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=3"> <dc:if test="dc:has-result()"> <Graben> <dc:call-macro name="ddg_factory" /> </Graben> </dc:if> </dc:filter> </dc:macro> <dc:filter expr="$hws_official=1"> <dc:if test="dc:has-result()"> <official> <dc:call-macro name="durchlass_damm_graben" /> </official> </dc:if> </dc:filter> <dc:filter expr="$hws_official=0"> <dc:if test="dc:has-result()"> <inofficial> <dc:call-macro name="durchlass_damm_graben" /> </inofficial> </dc:if> </dc:filter> </dc:macro> <dc:macro name="flood-map-hws-lines"> <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, official AS hws_official, kind_id AS hws_kind FROM hws_lines WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <lines> <dc:call-macro name="filter_hws_ddg" /> </lines> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-hws-points"> <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, official AS hws_official, kind_id AS hws_kind FROM hws_points WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <points> <dc:call-macro name="filter_hws_ddg" /> </points> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-hydr-boundaries-state"> <federal> <dc:context> <dc:statement> SELECT DISTINCT name FROM hydr_boundaries WHERE river_id = ${river_id} AND kind = 2 </dc:statement> <dc:for-each> <line factory="wmshydrboundariesfactory" target_out="{$out}" ids="{$river_id};{$name};2" name="{$name}" /> </dc:for-each> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT name FROM hydr_boundaries_poly WHERE river_id = ${river_id} AND kind = 2 </dc:statement> <dc:for-each> <line factory="wmshydrboundariespolyfactory" target_out="{$out}" ids="{$river_id};{$name};2" name="{$name}" /> </dc:for-each> </dc:context> </federal> </dc:macro> <dc:macro name="flood-map-hydr-boundaries-lines"> <dc:context> <dc:statement> SELECT DISTINCT name FROM hydr_boundaries WHERE river_id = ${river_id} AND kind = 1 </dc:statement> <dc:comment> What about all other line kinds?</dc:comment> <dc:if test="dc:has-result()"> <lines> <dc:for-each> <line factory="wmshydrboundariesfactory" target_out="{$out}" ids="{$river_id};{$name};1" name="{$name}" /> </dc:for-each> </lines> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-hydr-boundaries-poly"> <areas> <dc:context> <dc:statement> SELECT DISTINCT b.sectie AS sectie_id, sk.name AS sectie FROM hydr_boundaries_poly b JOIN sectie_kinds sk ON b.sectie = sk.id WHERE b.river_id = ${river_id} AND b.kind = 1 </dc:statement> <dc:if test="dc:has-result()"> <sobek_areas> <dc:for-each> <boundary name="{$sectie}" factory="wmshydrboundariespolyfactory" target_out="{$out}" ids="{$river_id};{$sectie};1;{$sectie_id};-1" /> </dc:for-each> </sobek_areas> </dc:if> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT b.sobek AS sobek_id, sk.name AS sobek FROM hydr_boundaries_poly b JOIN sobek_kinds sk ON b.sobek = sk.id WHERE b.river_id = ${river_id} AND b.kind = 1 </dc:statement> <dc:if test="dc:has-result()"> <sobek_flooded> <dc:for-each> <boundary name="{$sobek}" factory="wmshydrboundariespolyfactory" target_out="{$out}" ids="{$river_id};{$sobek};1;-1;{$sobek_id}" /> </dc:for-each> </sobek_flooded> </dc:if> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT b.name AS name FROM hydr_boundaries_poly b WHERE b.river_id = ${river_id} AND b.kind = 1 AND b.sobek IS NULL AND b.sectie is NULL </dc:statement> <dc:for-each> <boundary name="{$name}" factory="wmshydrboundariespolyfactory" target_out="{$out}" ids="{$river_id};{$name}" /> </dc:for-each> </dc:context> </areas> </dc:macro> <dc:macro name="flood-map-uesk"> <dc:context> <dc:statement> SELECT DISTINCT 1 FROM floodmaps WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <uesk> <calculations> <dc:context> <dc:statement> SELECT DISTINCT 1 FROM floodmaps WHERE river_id = ${river_id} AND (kind = 112 OR kind = 111) </dc:statement> <dc:if test="dc:has-result()"> <current> <dc:context> <dc:statement> SELECT DISTINCT name AS name FROM floodmaps WHERE river_id = ${river_id} AND kind = 111 </dc:statement> <dc:if test="dc:has-result()"> <bfg> <dc:for-each> <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}" ids="{$river_id};{$name}" name="{$name}" /> </dc:for-each> </bfg> </dc:if> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT name AS name FROM floodmaps WHERE river_id = ${river_id} AND kind = 112 </dc:statement> <dc:if test="dc:has-result()"> <federal> <dc:for-each> <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}" ids="{$river_id};{$name}" name="{$name}" /> </dc:for-each> </federal> </dc:if> </dc:context> </current> </dc:if> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT 1 from floodmaps where river_id = ${river_id} AND (kind = 122 OR kind = 121) </dc:statement> <dc:if test="dc:has-result()"> <potential> <dc:context> <dc:statement> SELECT DISTINCT name AS name FROM floodmaps WHERE river_id = ${river_id} AND kind = 121 </dc:statement> <dc:if test="dc:has-result()"> <bfg> <dc:for-each> <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}" ids="{$river_id};{$name}" name="{$name}" /> </dc:for-each> </bfg> </dc:if> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT name AS name FROM floodmaps WHERE river_id = ${river_id} AND kind = 122 </dc:statement> <dc:if test="dc:has-result()"> <federal> <dc:for-each> <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}" ids="{$river_id};{$name}" name="{$name}" /> </dc:for-each> </federal> </dc:if> </dc:context> </potential> </dc:if> </dc:context> </calculations> <dc:context> <dc:statement> SELECT DISTINCT source AS source FROM floodmaps WHERE river_id = ${river_id} AND kind = 200 </dc:statement> <dc:if test="dc:has-result()"> <measurements> <dc:for-each> <year name="{$source}"> <dc:context> <dc:statement> SELECT DISTINCT name AS name FROM floodmaps WHERE river_id = ${river_id} AND kind = 200 AND source = ${source} </dc:statement> <dc:for-each> <floodmaps factory="wmsfloodmapsfactory" target_out="{$out}" ids="{$river_id};{$name}" name="{$name}" /> </dc:for-each> </dc:context> </year> </dc:for-each> </measurements> </dc:if> </dc:context> </uesk> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-floodplain"> <dc:context> <dc:statement> SELECT DISTINCT fp.kind_id AS kind_id, flk.name AS kind_name FROM floodplain fp JOIN floodplain_kinds flk on fp.kind_id = flk.id WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <floodplain> <dc:filter expr="$kind_id=1"> <dc:for-each> <floody factory="wmsfloodplainfactory" target_out="{$out}" description="{$kind_name}" ids="{$river_id};{$kind_name};{$kind_id}" /> </dc:for-each> </dc:filter> <dc:filter expr="$kind_id != 1"> <dc:if test="dc:has-result()"> <other> <dc:for-each> <floody factory="wmsfloodplainfactory" target_out="{$out}" description="{$layer_name}" ids="{$river_id};{$layer_name};{$kind_id}" /> </dc:for-each> </other> </dc:if> </dc:filter> </floodplain> </dc:if> </dc:context> </dc:macro> <dc:macro name="hwspoints_by_kind"> <dc:comment> Call from a context where fed_name hws_kind hws_name and river_id is availble </dc:comment> <dc:macro name="hwspoints_by_kind_factory"> <dc:for-each> <hws factory="wmshwspointsfactory" target_out="{$out}" ids="{$river_id};{$hws_name}" name="{$hws_name}" /> </dc:for-each> </dc:macro> <dc:filter expr="$hws_kind=1"> <dc:if test="dc:has-result()"> <Durchlass> <dc:call-macro name="hwspoints_by_kind_factory" /> </Durchlass> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=2"> <dc:if test="dc:has-result()"> <Damm> <dc:call-macro name="hwspoints_by_kind_factory" /> </Damm> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=3"> <dc:if test="dc:has-result()"> <Graben> <dc:call-macro name="hwspoints_by_kind_factory" /> </Graben> </dc:if> </dc:filter> </dc:macro> <dc:macro name="hwspoints"> <hws_points> <official> <dc:context> <dc:statement> SELECT DISTINCT fs.name AS fed_name, fs.id AS fed_id FROM hws_points hws JOIN fed_states fs ON hws.fed_state_id = fs.id WHERE river_id = ${river_id} AND hws.official=1 </dc:statement> <dc:for-each> <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, kind_id AS hws_kind FROM hws_points WHERE river_id = ${river_id} AND official=1 AND fed_state_id = ${fed_id} ORDER BY name </dc:statement> <fedstate description="{$fed_name}"> <dc:call-macro name="hwspoints_by_kind" /> </fedstate> </dc:context> </dc:for-each> </dc:context> <dc:context> <dc:statement> SELECT distinct name AS hws_name, kind_id AS hws_kind FROM hws_points WHERE river_id = ${river_id} AND official=1 AND fed_state_id IS NULL ORDER BY name </dc:statement> <hws_fed_unknown> <dc:call-macro name="hwspoints_by_kind" /> </hws_fed_unknown> </dc:context> </official> <inofficial> <dc:context> <dc:statement> SELECT DISTINCT fs.name AS fed_name, fs.id AS fed_id FROM hws_points hws JOIN fed_states fs ON hws.fed_state_id = fs.id WHERE river_id = ${river_id} AND hws.official=0 </dc:statement> <dc:for-each> <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, kind_id AS hws_kind FROM hws_points WHERE river_id = ${river_id} AND official=0 AND fed_state_id = ${fed_id} ORDER BY name </dc:statement> <fedstate description="{$fed_name}"> <dc:call-macro name="hwspoints_by_kind" /> </fedstate> </dc:context> </dc:for-each> </dc:context> <dc:context> <dc:statement> SELECT distinct name AS hws_name, kind_id AS hws_kind FROM hws_points WHERE river_id = ${river_id} AND official=0 AND fed_state_id IS NULL ORDER BY name </dc:statement> <hws_fed_unknown> <dc:call-macro name="hwspoints_by_kind" /> </hws_fed_unknown> </dc:context> </inofficial> </hws_points> </dc:macro> <dc:macro name="hwslines_by_kind"> <dc:comment> Call from a context where fed_name hws_kind hws_name and river_id is availble </dc:comment> <dc:macro name="hwslines_by_kind_factory"> <dc:for-each> <hws factory="wmshwslinesfactory" target_out="{$out}" ids="{$river_id};{$hws_name}" name="{$hws_name}" /> </dc:for-each> </dc:macro> <dc:filter expr="$hws_kind=1"> <dc:if test="dc:has-result()"> <Durchlass> <dc:call-macro name="hwslines_by_kind_factory" /> </Durchlass> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=2"> <dc:if test="dc:has-result()"> <Damm> <dc:call-macro name="hwslines_by_kind_factory" /> </Damm> </dc:if> </dc:filter> <dc:filter expr="$hws_kind=3"> <dc:if test="dc:has-result()"> <Graben> <dc:call-macro name="hwslines_by_kind_factory" /> </Graben> </dc:if> </dc:filter> </dc:macro> <dc:macro name="hwslines"> <hws_lines> <official> <dc:context> <dc:statement> SELECT DISTINCT fs.name AS fed_name, fs.id AS fed_id FROM hws_lines hws JOIN fed_states fs ON hws.fed_state_id = fs.id WHERE river_id = ${river_id} AND hws.official=1 </dc:statement> <dc:for-each> <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, kind_id AS hws_kind FROM hws_lines WHERE river_id = ${river_id} AND official=1 AND fed_state_id = ${fed_id} ORDER BY name </dc:statement> <fedstate description="{$fed_name}"> <dc:call-macro name="hwslines_by_kind" /> </fedstate> </dc:context> </dc:for-each> </dc:context> <dc:context> <dc:statement> SELECT distinct name AS hws_name, kind_id AS hws_kind FROM hws_lines WHERE river_id = ${river_id} AND official=1 AND fed_state_id IS NULL ORDER BY name </dc:statement> <hws_fed_unknown> <dc:call-macro name="hwslines_by_kind" /> </hws_fed_unknown> </dc:context> </official> <inofficial> <dc:context> <dc:statement> SELECT DISTINCT fs.name AS fed_name, fs.id AS fed_id FROM hws_lines hws JOIN fed_states fs ON hws.fed_state_id = fs.id WHERE river_id = ${river_id} AND hws.official=0 </dc:statement> <dc:for-each> <dc:context> <dc:statement> SELECT DISTINCT name AS hws_name, kind_id AS hws_kind FROM hws_lines WHERE river_id = ${river_id} AND official=0 AND fed_state_id = ${fed_id} ORDER BY name </dc:statement> <fedstate description="{$fed_name}"> <dc:call-macro name="hwslines_by_kind" /> </fedstate> </dc:context> </dc:for-each> </dc:context> <dc:context> <dc:statement> SELECT distinct name AS hws_name, kind_id AS hws_kind FROM hws_lines WHERE river_id = ${river_id} AND official=0 AND fed_state_id IS NULL ORDER BY name </dc:statement> <hws_fed_unknown> <dc:call-macro name="hwslines_by_kind" /> </hws_fed_unknown> </dc:context> </inofficial> </hws_lines> </dc:macro> <dc:macro name="floodmarks"> <dc:context> <dc:statement> SELECT DISTINCT COALESCE(CAST (year AS VARCHAR(64)), 'Unbekanntes Jahr') AS year FROM flood_marks WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <floodmarks> <dc:for-each> <floodmark name="{$year}" factory="wmsfloodmarkfactory" target_out="{$out}" ids="{$river_id};{$year};{$year}" /> </dc:for-each> </floodmarks> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-gaugelocations"> <gaugelocations> <gauge_points factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelpunkte;Pegelpunkte (WSV)" target_out="{$out}" /> <gauge_names factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelnamen;Pegelnamen (WSV)" target_out="{$out}" /> <gauge_level factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;Pegelwasserstand;Aktueller Wasserstand (WSV)" target_out="{$out}" /> <gauge_tendency factory="externalwmsfactory" ids="http://www.pegelonline.wsv.de/webservices/gis/wms;TendenzWasserstand;Tendenz des Wasserstands (WSV)" target_out="{$out}" /> </gaugelocations> </dc:macro> <dc:macro name="flood-map-riveraxis"> <dc:context> <dc:statement> SELECT DISTINCT ak.name AS kind_name, ax.kind_id AS kind_id, ax.name AS layer_name FROM river_axes ax JOIN axis_kinds ak on ax.kind_id = ak.id WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <axis> <dc:filter expr="$kind_id=1"> <dc:for-each> <actual description="{$kind_name}" ids="{$river_id};{$kind_name};{$kind_id}" factory="riveraxis" target_out="{$out}" /> </dc:for-each> </dc:filter> <dc:filter expr="$kind_id!=1"> <other> <dc:for-each> <misc-axis description="{$layer_name}" ids="{$river_id};{$layer_name};{$kind_id}" factory="riveraxis" target_out="{$out}" /> </dc:for-each> </other> </dc:filter> </axis> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-km"> <dc:context> <dc:statement> SELECT DISTINCT 1 FROM river_axes_km WHERE river_id = ${river_id} </dc:statement> <dc:for-each> <kilometrage factory="wmskmfactory" ids="{$river_id}" target_out="{$out}" /> </dc:for-each> </dc:context> </dc:macro> <dc:macro name="flood-map-fixpoints"> <dc:context> <dc:statement> SELECT name AS name FROM fixpoints WHERE river_id = ${river_id} GROUP BY name </dc:statement> <dc:for-each> <fixpoints factory="wmsfixpointsfactory" target_out="{$out}" ids="{$river_id};{$name}" /> </dc:for-each> </dc:context> </dc:macro> <dc:macro name="flood-map-qps"> <dc:context> <dc:statement> SELECT DISTINCT cs.kind_id AS kind_id, cs.name AS layer_name, ck.name AS kind_name FROM cross_section_tracks cs JOIN cross_section_track_kinds ck ON cs.kind_id = ck.id WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <qps> <dc:filter expr="$kind_id=1"> <dc:for-each> <actual description="{$kind_name}" factory="wmsqpsfactory" target_out="{$out}" ids="{$river_id};{$kind_name};{$kind_id}" /> </dc:for-each> </dc:filter> <dc:filter expr="$kind_id = 0"> <dc:if test="dc:has-result()"> <other> <dc:for-each> <misc-qps description="{$layer_name}" factory="wmsqpsfactory" target_out="{$out}" ids="{$river_id};{$layer_name};{$kind_id}" /> </dc:for-each> </other> </dc:if> </dc:filter> </qps> </dc:if> </dc:context> </dc:macro> <dc:macro name="flood-map-buildings"> <buildings> <dc:context> <dc:statement> SELECT DISTINCT b.name AS building_name, bk.name AS building_kind, b.kind_id AS building_kind_id FROM buildings b JOIN building_kinds bk ON b.kind_id = bk.id WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <dc:filter expr="$building_kind_id!=0"> <dc:for-each> <buildings description="{$building_kind}" factory="wmsbuildingsfactory" target_out="{$out}" ids="{$river_id};{$building_kind};{$building_kind_id}" /> </dc:for-each> </dc:filter> <dc:filter expr="$building_kind_id=0"> <other> <dc:for-each> <buildings description="{$building_name}" factory="wmsbuildingsfactory" target_out="{$out}" ids="{$river_id};{$building_name}" /> </dc:for-each> </other> </dc:filter> </dc:if> </dc:context> <dc:context> <dc:statement> SELECT DISTINCT j.kind_id AS jetty_kind_id, jk.name AS jetty_kind FROM jetties j JOIN jetty_kinds jk ON j.kind_id = jk.id WHERE river_id = ${river_id} </dc:statement> <dc:if test="dc:has-result()"> <jetties> <dc:for-each> <jetty description="{$jetty_kind}" factory="wmsjettiesfactory" target_out="{$out}" ids="{$river_id};{$jetty_kind};{$jetty_kind_id}" /> </dc:for-each> </jetties> </dc:if> </dc:context> </buildings> </dc:macro> <dc:macro name="officiallines_user"> <dc:if test="dc:contains($parameters, 'official-lines')"> <dc:container-context container="official-lines"> <dc:properties> <dc:property name="name" alias="olname" /> <dc:property name="wstId" alias="wstid" /> <dc:property name="columnPos" alias="wstcolpos" /> </dc:properties> <dc:if test="dc:has-result()"> <officiallines> <dc:for-each> <column name="{$olname}" ids="official-wstv-{$wstcolpos}-{$wstid}" factory="staticwqkms" target_out="{$out}" /> </dc:for-each> </officiallines> </dc:if> </dc:container-context> </dc:if> </dc:macro> <!-- sediment loads --> <dc:macro name="sedimentload_off_epoch_filter"> <dc:if test="dc:has-result()"> <dc:variable name="sq_time_id" type="number" expr="number($sq_ti_id)" /> <dc:if test="string-length(dc:get('epochs')) > 0"> <dc:variable name="start" type="number" expr="dc:min-number(dc:find-all('\d{4}', $epochs))" /> <dc:variable name="end" type="number" expr="dc:max-number(dc:find-all('\d{4}', $epochs))" /> </dc:if> <dc:if test="string-length(dc:get('years')) > 0"> <dc:variable name="start" type="number" expr="dc:min-number(dc:find-all('\d{4}', $years))" /> <dc:variable name="end" type="number" expr="dc:max-number(dc:find-all('\d{4}', $years))" /> </dc:if> <dc:filter expr="$kind = 'official' and $sqid = $sq_time_id and not(number($end) < number(dc:date-format('yyyy', $startyear)) or number($start) > number(dc:date-format('yyyy', $endyear)))"> <dc:macro-body /> </dc:filter> </dc:if> </dc:macro> <dc:macro name="sedimentload_off_epochs"> <dc:context> <dc:call-macro name="sedimentload_stations_statement" /> <dc:call-macro name="sedimentload_off_epoch_filter"> <dc:call-macro name="loads"> <dc:call-macro name="load" /> </dc:call-macro> </dc:call-macro> </dc:context> <dc:context> <dc:call-macro name="sedimentload_ls_statement" /> <dc:call-macro name="sedimentload_off_epoch_filter"> <dc:call-macro name="loads"> <dc:call-macro name="load_ls" /> </dc:call-macro> </dc:call-macro> </dc:context> </dc:macro> <!-- Common stuff --> <dc:macro name="km-filtered-wsts"> <dc:context connection="system"> <dc:statement> SELECT w.kind AS kind, w.id AS wst_id, wc.id AS wst_column_id, wc.position AS wst_column_position, wc.description AS info, w.description AS wst_description, ti.start_time AS start_time, ti.stop_time AS stop_time, COALESCE(wc.name, '') AS wst_column_name, wr.a AS deffrom, wr.b AS defto, w.sinfo_selection FROM wst_columns wc JOIN wsts w ON wc.wst_id = w.id JOIN wst_ranges wr ON wc.id = wr.wst_column_id LEFT JOIN time_intervals ti ON wc.time_interval_id = ti.id WHERE w.river_id = ${river_id} AND NOT((${tokm} < wr.a) or (${fromkm} > wr.b)) ORDER BY wst_column_position </dc:statement> <dc:macro-body /> </dc:context> </dc:macro> <dc:macro name="all-user-artifacts"> <dc:context connection="user"> <dc:comment>Select collections and masterartifacts. XXX: The cast is a quick hack because the ld_* values are now TEXT fields. To properly fix / asses the problems here an SLT evaluation is needed. </dc:comment> <dc:statement> SELECT c.name AS collection_name, ma.id AS a_id, ma.state AS a_state, ma.gid AS a_gid, ma.creation AS a_creation, CAST(COALESCE(ma.ld_mode, '') AS VARCHAR(255)) AS ld_m, CAST(COALESCE(ma.ld_locations, '') AS VARCHAR(255)) AS ld_l, CAST(COALESCE(ma.ld_from, '') AS VARCHAR(255)) AS ld_f, CAST(COALESCE(ma.ld_to, '') AS VARCHAR(255)) AS ld_t, o.name AS out_name, o.id AS out_id, f.name AS facet_name, f.num AS facet_num, f.description AS facet_description, f.id AS fid FROM users u JOIN collections c ON c.user_id = u.id JOIN master_artifacts_range ma ON ma.collection_id = c.id JOIN outs o ON o.artifact_id = ma.id JOIN facets f ON f.out_id = o.id WHERE u.gid = CAST(${user-id} AS UUID) AND ma.gid <> CAST(${artifact-id} AS uuid) AND f.name NOT LIKE '%empty.facet%' AND EXISTS ( SELECT id FROM artifact_data ad WHERE ad.artifact_id = ma.id AND k = 'river' AND v = ${river}) </dc:statement> <dc:virtual-column name="deffrom" type="number" expr="dc:fromValue($ld_m, $ld_l, $ld_f)"> <dc:virtual-column name="defto" type="number" expr="dc:toValue($ld_m, $ld_l, $ld_t)"> <dc:macro-body /> </dc:virtual-column> </dc:virtual-column> </dc:context> </dc:macro> <dc:macro name="km-filtered-user-artifacts"> <dc:comment> Apply KM Filtering but pass sq_ facets with no regard about their location. </dc:comment> <dc:filter expr="not($deffrom > $tokm or $defto < $fromkm) or starts-with($facet_name, 'sq_')"> <dc:macro-body /> </dc:filter> </dc:macro> <dc:macro name="artifact-range"> <dc:choose> <dc:when test="dc:coalesce(dc:get('ld_locations'), ' ') != ' '"> <dc:variable name="fromkm" type="number" expr="dc:min-number(dc:find-all('\d*\.?\d*', dc:get('ld_locations')))" /> <dc:variable name="tokm" type="number" expr="dc:max-number(dc:find-all('\d*\.?\d*', dc:get('ld_locations')))" /> </dc:when> <dc:otherwise> <dc:variable name="fromkm" type="number" expr="dc:fromValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_from'))" /> <dc:variable name="tokm" type="number" expr="dc:toValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_to'))" /> <dc:if test="$fromkm > $tokm"> <dc:message>Inverting KM filter.</dc:message> <dc:variable name="fromkm" type="number" expr="dc:toValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_to'))" /> <dc:variable name="tokm" type="number" expr="dc:fromValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_from'))" /> </dc:if> </dc:otherwise> </dc:choose> <dc:macro-body /> </dc:macro> <dc:macro name="sinfo_flowdepths"> <dc:filter expr="$a_state = 'state.sinfo.flow_depth' and ( $facet_name = 'sinfo_facet_flow_depth' or $facet_name = 'sinfo_facet_flow_depth.filtered' or $facet_name = 'sinfo_facet_flow_depth_with_tkh' or $facet_name = 'sinfo_facet_flow_depth_with_tkh.filtered' or $facet_name = 'sinfo_facet_tkh' )"> <dc:if test="dc:has-result()"> <sinfo_flow_depths> <dc:call-macro name="collection-group"> <sinfo_flow_depth description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="sinfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sinfo_flow_depth> </dc:call-macro> </sinfo_flow_depths> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sinfo_flowdepths_minmax"> <dc:filter expr="$a_state = 'state.sinfo.flow_depth_minmax' and ( $facet_name = 'sinfo_facet_flow_depth_min' or $facet_name = 'sinfo_facet_flow_depth_min.filtered' or $facet_name = 'sinfo_facet_flow_depth_max' or $facet_name = 'sinfo_facet_flow_depth_max.filtered' )"> <dc:if test="dc:has-result()"> <sinfo_flow_depths_minmax> <dc:call-macro name="collection-group"> <sinfo_flow_depth_minmax description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="sinfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sinfo_flow_depth_minmax> </dc:call-macro> </sinfo_flow_depths_minmax> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sinfo_flow_depth_development"> <dc:filter expr="$a_state = 'state.sinfo.flow_depth_development' and ( $facet_name = 'sinfo_facet_flow_depth_development' or $facet_name = 'sinfo_facet_flow_depth_development.filtered' or $facet_name = 'sinfo_facet_flow_depth_development_per_year' or $facet_name = 'sinfo_facet_flow_depth_development_per_year.filtered' or $facet_name = 'sinfo_facet_flow_depth_current' or $facet_name = 'sinfo_facet_flow_depth_current.filtered' or $facet_name = 'sinfo_facet_flow_depth_historical' or $facet_name = 'sinfo_facet_flow_depth_historical.filtered' or $facet_name = 'sinfo_facet_waterlevel_difference' or $facet_name = 'sinfo_facet_waterlevel_difference.filtered' or $facet_name = 'sinfo_facet_bedheight_difference' or $facet_name = 'sinfo_facet_bedheight_difference.filtered' )"> <dc:if test="dc:has-result()"> <sinfo_flow_depth_developments> <dc:call-macro name="collection-group"> <sinfo_flow_depth_development description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="sinfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sinfo_flow_depth_development> </dc:call-macro> </sinfo_flow_depth_developments> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sinfo_tkh"> <dc:filter expr="$a_state = 'state.sinfo.transport_bodies_heights' and ( $facet_name = 'sinfo_facet_tkh' or $facet_name = 'sinfo_facet_flow_depth' or $facet_name = 'sinfo_facet_flow_depth.filtered' or $facet_name = 'sinfo_facet_velocity' or $facet_name = 'sinfo_facet_velocity.filtered' or $facet_name = 'sinfo_facet_tau' or $facet_name = 'sinfo_facet_tau.filtered' or $facet_name = 'sinfo_facet_d50' or $facet_name = 'sinfo_facet_d50.filtered' )"> <dc:if test="dc:has-result()"> <sinfo_tkhs> <dc:call-macro name="collection-group"> <sinfo_tkh description="{dc:group-key()}"> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="sinfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sinfo_tkh> </dc:call-macro> </sinfo_tkhs> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sinfo_collision"> <dc:filter expr="$a_state = 'state.sinfo.collision'"> <dc:if test="dc:has-result()"> <sinfo_collision> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="sinfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sinfo_collision> </dc:if> </dc:filter> </dc:macro> <dc:macro name="sinfo_flood_duration"> <dc:filter expr="$a_state = 'state.sinfo.flood_duration'"> <dc:if test="dc:has-result()"> <sinfo_flood_duration> <dc:for-each> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="sinfo" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${facet_description}" /> <dc:attribute name="ids" value="${facet_num}" /> <dc:attribute name="artifact-id" value="${a_gid}" /> <dc:attribute name="out" value="${out_name}" /> </dc:element> </dc:for-each> </sinfo_flood_duration> </dc:if> </dc:filter> </dc:macro> <!-- channel size imported from CSV-files for S-INFO --> <dc:macro name="sinfo_predefined_channel"> <dc:context> <dc:statement> SELECT s.id AS id, MIN(s.filename) AS seriesname, MIN(v.station) AS km_min, MAX(v.station) AS km_max, MIN(s.filename) || '<br />' || MIN(s.kmrange_info) || ']<br />' || MIN(s.year_from) || ' - ' || MIN(s.year_to) || '<br />' AS info FROM channel s INNER JOIN channel_values v ON s.id=v.channel_id WHERE (s.river_id=${river_id}) AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001) GROUP BY s.id ORDER BY MIN(s.year_to) DESC </dc:statement> <dc:if test="dc:has-result()"> <dc:for-each> <channelseries name="{$seriesname}" description="{$seriesname}" ids="channelx-{$id}-{$seriesname}" factory="channelf" target_out="{$out}" info="{$info}" /> </dc:for-each> </dc:if> </dc:context> </dc:macro> <!-- tkh imported from CSV-files for S-INFO --> <dc:macro name="sinfo_predefined_tkh-berechnung"> <predefined_tkh_berechnung> <dc:variable name="tkh_groupname" expr="'berechnung'" /> <dc:call-macro name="sinfo_predefined_tkh" /> </predefined_tkh_berechnung> </dc:macro> <dc:macro name="sinfo_predefined_tkh-messung"> <predefined_tkh_messung> <dc:variable name="tkh_groupname" expr="'messung'" /> <dc:call-macro name="sinfo_predefined_tkh" /> </predefined_tkh_messung> </dc:macro> <dc:macro name="sinfo_predefined_tkh"> <dc:context> <dc:statement> SELECT sc.tkh_id AS tkh_id, sc.id AS tkh_col_id, MIN(sc.name) AS tkh_col_name, MIN(s.filename) AS tkh_name, MIN(v.station) AS km_min, MAX(v.station) AS km_max, MIN(s.filename) || '<br />' || MIN(s.kmrange_info) || ']<br />' || MIN(s.sounding_info) || '<br />' || MIN(s.evaluation_by) AS info FROM tkh_column sc INNER JOIN tkh s ON sc.tkh_id=s.id INNER JOIN tkh_values v ON sc.id=v.tkh_column_id WHERE (s.river_id=${river_id}) AND (lower(s.groupname)=${tkh_groupname}) AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001) GROUP BY sc.tkh_id, sc.id ORDER BY sc.id </dc:statement> <dc:if test="dc:has-result()"> <dc:group expr="$tkh_name"> <tkhx name="{dc:group-key()}" description="{dc:group-key()}"> <dc:for-each> <tkhcolumn name="{$tkh_col_name}" description="{$tkh_col_name}" ids="tkhx-{$tkh_col_id}-{$tkh_id}" factory="tkhxf" target_out="{$out}" info="{$info}" /> </dc:for-each> </tkhx> </dc:group> </dc:if> </dc:context> </dc:macro> <!-- depth_evolution imported from CSV-files for S-INFO --> <dc:macro name="sinfo_predefined_depthevol-aktuell"> <predefined_depthevol_aktuell> <dc:variable name="depthevol_groupname" expr="'aktuell'" /> <dc:call-macro name="sinfo_predefined_depthevol" /> </predefined_depthevol_aktuell> </dc:macro> <dc:macro name="sinfo_predefined_depthevol-etappe"> <predefined_depthevol_etappe> <dc:variable name="depthevol_groupname" expr="'etappe'" /> <dc:call-macro name="sinfo_predefined_depthevol" /> </predefined_depthevol_etappe> </dc:macro> <dc:macro name="sinfo_predefined_depthevol"> <dc:context> <dc:statement> SELECT s.id AS depthevol_id, MIN(s.filename) AS depthevol_name, MIN(v.station) AS km_min, MAX(v.station) AS km_max, MIN(s.filename) || '<br />' || MIN(s.kmrange_info) || ']<br />' || MIN(s.start_year) || ' - ' || MIN(s.reference_year) || '<br />' || MIN(s.old_sounding) || ' - ' || MIN(s.curr_sounding) || '<br />' || MIN(s.old_glw) || ' - ' || MIN(s.curr_glw) AS info FROM depth_evolution s INNER JOIN depth_evolution_values v ON s.id=v.depth_evolution_id WHERE (s.river_id=${river_id}) AND (lower(s.groupname)=${depthevol_groupname}) AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001) GROUP BY s.id ORDER BY s.id </dc:statement> <dc:for-each> <depth_evol name="{$depthevol_name}" description="{$depthevol_name}" ids="depthevolx-{$depthevol_id}-{$depthevol_name}" factory="depthevolxf" target_out="{$out}" info="{$info}" /> </dc:for-each> </dc:context> </dc:macro> <!-- flow depth imported from CSV-files for S-INFO --> <dc:macro name="sinfo_predefined_flowdepth-m"> <dc:call-macro name="sinfo_predefined_flowdepth-m1" /> </dc:macro> <dc:macro name="sinfo_predefined_flowdepth-m1"> <dc:context> <dc:statement> SELECT sc.flow_depth_id AS flowdepth_id, sc.id AS flowdepth_col_id, MIN(sc.name) AS flowdepth_col_name, MIN(s.filename) AS flowdepth_name, MIN(v.station) AS km_min, MAX(v.station) AS km_max, MIN(s.filename) || '<br />' || MIN(s.kmrange_info) || ']<br />' || MIN(s.sounding_info) || '<br />' || MIN(s.evaluation_by) AS info FROM flow_depth_column sc INNER JOIN flow_depth s ON sc.flow_depth_id=s.id INNER JOIN flow_depth_values v ON sc.id=v.flow_depth_column_id WHERE (s.river_id=${river_id}) AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001) GROUP BY sc.flow_depth_id, sc.id ORDER BY sc.id </dc:statement> <dc:if test="dc:has-result()"> <dc:group expr="$flowdepth_name"> <sinfo_predefined_flowdepth> <dc:for-each> <flowdepthcolumn name="{$flowdepth_col_name}" description="{$flowdepth_col_name}" ids="flowdepthx-{$flowdepth_col_id}-{$flowdepth_id}" factory="flowdepthxf" target_out="{$out}" info="{$info}" /> </dc:for-each> </sinfo_predefined_flowdepth> </dc:group> </dc:if> </dc:context> </dc:macro> <!-- infrastructure height imported from CSV-files for S-INFO --> <dc:macro name="sinfo_infrastructure"> <dc:context> <dc:statement> SELECT s.id AS id, MIN(s.filename) AS seriesname, MIN(v.station) AS km_min, MAX(v.station) AS km_max, MIN(x.name) AS typename, MIN(s.filename) || '<br />' || MIN(s.kmrange_info) || '<br />' || MIN(s.year) || '<br />' AS info FROM infrastructure s INNER JOIN infrastructure_values v ON s.id=v.infrastructure_id INNER JOIN annotation_types x ON s.annotation_type_id=x.id WHERE (s.river_id=${river_id}) AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001) GROUP BY s.id ORDER BY MIN(s.filename) DESC </dc:statement> <dc:if test="dc:has-result()"> <dc:for-each> <infrastructureseries name="{$seriesname}" description="{$seriesname}" ids="infrastructurex-{$id}-{$seriesname}" factory="infrastructuref" target_out="{$out}" info="{$info}" /> </dc:for-each> </dc:if> </dc:context> </dc:macro> <!-- collisions imported from CSV-files for S-INFO --> <dc:macro name="sinfo_collisions"> <dc:context> <dc:statement> SELECT s.id AS id, MIN(s.filename) AS seriesname, MIN(v.station) AS km_min, MAX(v.station) AS km_max, MIN(s.year) AS year, MIN(s.filename) || '<br />' || MIN(s.kmrange_info) || '<br />' || MIN(s.year) || '<br />' AS info FROM collision s INNER JOIN collision_values v ON s.id=v.collision_id WHERE (s.river_id=${river_id}) AND (v.station BETWEEN ${fromkm}-0.0001 AND ${tokm}+0.0001) GROUP BY s.id ORDER BY MIN(s.year) </dc:statement> <dc:if test="dc:has-result()"> <dc:for-each> <collisionseries name="{$seriesname}" description="{$seriesname}" ids="collisionx-{$id}-{$year}-{$seriesname}" factory="collisionf" target_out="{$out}" info="{$info}" /> </dc:for-each> </dc:if> </dc:context> </dc:macro> <!-- Vegetation zones, edited by the user --> <dc:macro name="vegetationzones"> <dc:filter expr="$a_state = 'state.uinfo.vegetation_zones' and $facet_name = 'csv'"> <!-- we misuse the csv-facet --> <dc:if test="dc:has-result()"> <dc:for-each> <dc:variable name="vegzonedata" expr="dc:data_from_artifact($a_gid,'vegzones')" /> <dc:variable name="vegzonedatalabel" expr="dc:get('ld_from'))" /> <dc:variable name="label_temp" type="string" expr="dc:coalesce($collection_name, dc:toString($a_gid))" /> <dc:variable name="fromkm" type="number" expr="dc:fromValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_from'))" /> <dc:variable name="tokm" type="number" expr="dc:fromValue(dc:get('ld_mode'), dc:get('ld_locations'), dc:get('ld_to'))" /> <dc:element name="${facet_name}"> <dc:attribute name="factory" value="dummy" /> <dc:attribute name="target_out" value="${out}" /> <dc:attribute name="description" value="${label_temp}" /> <!-- veg zones string as attribute --> <dc:attribute name="data" value="${vegzonedata}" /> <dc:attribute name="from_km" value="${fromkm}" /> <dc:attribute name="to_km" value="${tokm}" /> </dc:element> </dc:for-each> </dc:if> </dc:filter> </dc:macro> </datacage> </dc:template>