view artifacts/doc/conf/artifacts/sinfo.xml @ 9265:e5367900dd6d

Small cleanup concerning getPoints Adding validStations as dataItem to flood duration calculation Flood duration now km aware
author gernotbelger
date Tue, 17 Jul 2018 19:48:28 +0200
parents 66b003701546
children 06a581ffdd3f
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8"?>
<artifact name="sinfo">

  <states>
    <state id="state.sinfo.river" description="state.sinfo.river" state="org.dive4elements.river.artifacts.states.RiverSelect" helpText="help.state.sinfo.river">
      <data name="river" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.DefaultTransition">
      <from state="state.sinfo.river" />
      <to state="state.sinfo.calculation_mode" />
    </transition>

    <state id="state.sinfo.calculation_mode" description="state.sinfo.calculation_mode" state="org.dive4elements.river.artifacts.sinfo.CalculationSelectSinfo" helpText="help.state.sinfo.calculation_mode">
      <data name="calculation_mode" type="String" />
    </state>

    <!-- Calculation Mode: Fließtiefen (Flow Depth) -->
    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.calculation_mode" />
      <to state="state.sinfo.distance_only" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth" operator="equal" />
    </transition>

    <state id="state.sinfo.distance_only" description="state.sinfo.distance_only" state="org.dive4elements.river.artifacts.states.DistanceOnlySelect" helpText="help.state.sinfo.distance_only">
      <data name="ld_from" type="Double" />
      <data name="ld_to" type="Double" />

      <!-- This data will hold the valid stations, needed for the Duration-Chart for the flood duration calculation
            It is ugly to put it here, but we cannot set the state-data of the current state inside the state calculation (only the data of the previous states is put into the collection description).
            So this is the only way to safely transport this information to the client.
       -->    
      <data name="validStations" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.distance_only" />
      <to state="state.sinfo.waterlevel_soundings_select" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth" operator="equal" />
    </transition>

    <state id="state.sinfo.waterlevel_soundings_select" description="state.sinfo.waterlevel_soundings_select" state="org.dive4elements.river.artifacts.sinfo.flowdepth.FlowDepthPairSelectState" helpText="help.state.sinfo.waterlevel_soundings_select">
      <data name="diffids" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.waterlevel_soundings_select" />
      <to state="state.sinfo.use_transport_bodies" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth" operator="equal" />
    </transition>

    <!-- FIXME: Nur Anzeigen, wenn Transportkörperhöhen vorliegen! -->
    <state id="state.sinfo.use_transport_bodies" description="state.sinfo.use_transport_bodies" state="org.dive4elements.river.artifacts.sinfo.flowdepth.UseTransportBodiesChoice" helpText="help.state.sinfo.use_transport_bodies">
      <data name="use_transport_bodies" type="Boolean" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.use_transport_bodies" />
      <to state="state.sinfo.flow_depth" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth" operator="equal" />
    </transition>

    <state id="state.sinfo.flow_depth" description="state.sinfo.flow_depth" state="org.dive4elements.river.artifacts.sinfo.flowdepth.FlowDepthState" helpText="help.state.sinfo.flow_depth">
      <outputmodes>
        <outputmode name="sinfo_flow_depth" description="output.flow_depth" mime-type="image/png" type="chart">
          <facets>
            <!-- REMARK: id's that ends with 'filtered' are handled differently
              ' -->
            <facet name="sinfo_facet_flow_depth.filtered" description="flow depth, filtered by current zoom state" />
            <facet name="sinfo_facet_flow_depth" description="flow depth" />

            <facet name="sinfo_facet_flow_depth_with_tkh.filtered" description="flow depth including tkh, filtered by current zoom state" />
            <facet name="sinfo_facet_flow_depth_with_tkh" description="flow depth including tkh" />

            <facet name="sinfo_facet_tkh" description="Facet for tkh" />

            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />

            <facet name="sinfo_flow_depth.manualpoints" description="Manual Points" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_flowdepth_export" description="output.sinfo_flowdepth_export" mime-type="text/plain" type="export">
          <facets>
            <facet name="csv" description="facet.sinfo_flowdepth_export.csv" />
            <facet name="pdf" description="facet.sinfo_flowdepth_export.pdf" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_flowdepth_report" description="output.sinfo_flowdepth_report" mime-type="text/xml" type="report">
          <facets>
            <facet name="report" description="facet.sinfo_flowdepth_report" />
          </facets>
        </outputmode>
      </outputmodes>
    </state>

    <!-- Calculation Mode: Minimale/maximale Fließtiefe -->
    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.calculation_mode" />
      <to state="state.sinfo.distance_only" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_minmax" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.distance_only" />
      <to state="state.sinfo.waterlevel_soundings_minmax_select" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_minmax" operator="equal" />
    </transition>

    <state id="state.sinfo.waterlevel_soundings_minmax_select" description="state.sinfo.waterlevel_soundings_minmax_select" state="org.dive4elements.river.artifacts.sinfo.flowdepthminmax.FlowDepthMinMaxPairSelectState" helpText="help.state.sinfo.waterlevel_soundings_minmax_select">
      <data name="diffids" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.waterlevel_soundings_minmax_select" />
      <to state="state.sinfo.flow_depth_minmax" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_minmax" operator="equal" />
    </transition>

    <state id="state.sinfo.flow_depth_minmax" description="state.sinfo.flow_depth_minmax" state="org.dive4elements.river.artifacts.sinfo.flowdepthminmax.FlowDepthMinMaxState" helpText="help.state.sinfo.flow_depth_minmax">
      <outputmodes>
        <outputmode name="sinfo_flow_depth_minmax" description="output.flow_depth" mime-type="image/png" type="chart">
          <facets>
            <facet name="sinfo_facet_flow_depth_min.filtered" description="min flow depth" />
            <facet name="sinfo_facet_flow_depth_min" description="min flow depth" />
            <facet name="sinfo_facet_flow_depth_max.filtered" description="max flow depth" />
            <facet name="sinfo_facet_flow_depth_max" description="max flow depth" />

            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />
            
            <facet name="sinfo_flow_depth_minmax.manualpoints" description="Manual Points" />            
          </facets>
        </outputmode>

        <outputmode name="sinfo_flowdepthminmax_export" description="output.sinfo_flowdepthminmax_export" mime-type="text/plain" type="export">
          <facets>
            <facet name="csv" description="facet.sinfo_flowdepthminmax_export.csv" />
            <facet name="pdf" description="facet.sinfo_flowdepthminmax_export.pdf" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_flowdepth_report" description="output.sinfo_flowdepth_report" mime-type="text/xml" type="report">
          <facets>
            <facet name="report" description="facet.sinfo_flowdepth_report" />
          </facets>
        </outputmode>
      </outputmodes>
    </state>

    <!-- Calculation Mode: Fließtiefenentwicklung -->
    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.calculation_mode" />
      <to state="state.sinfo.distance_only" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_development" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.distance_only" />
      <to state="state.sinfo.flowdepthdevlopment_current_select" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_development" operator="equal" />
    </transition>

    <state id="state.sinfo.flowdepthdevlopment_current_select" description="state.sinfo.flowdepthdevlopment_current_select" state="org.dive4elements.river.artifacts.sinfo.flowdepthdev.WaterlevelSoundingCurrentPairSelectState" helpText="help.state.sinfo.flowdepthdevlopment_current_select">
      <data name="diffid_current" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.flowdepthdevlopment_current_select" />
      <to state="state.sinfo.flowdepthdevlopment_historical_select" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_development" operator="equal" />
    </transition>

    <state id="state.sinfo.flowdepthdevlopment_historical_select" description="state.sinfo.flowdepthdevlopment_historical_select" state="org.dive4elements.river.artifacts.sinfo.flowdepthdev.WaterlevelSoundingHistoricalPairSelectState" helpText="help.state.sinfo.flowdepthdevlopment_historical_select">
      <data name="diffid_historical" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.flowdepthdevlopment_historical_select" />
      <to state="state.sinfo.flow_depth_development" />
      <condition data="calculation_mode" value="sinfo_calc_flow_depth_development" operator="equal" />
    </transition>

    <state id="state.sinfo.flow_depth_development" description="state.sinfo.flow_depth_development" state="org.dive4elements.river.artifacts.sinfo.flowdepthdev.FlowDepthDevelopmentState" helpText="help.state.sinfo.flow_depth_development">
      <outputmodes>
        <outputmode name="sinfo_flow_depth_development" description="output.flow_depth_development" mime-type="image/png" type="chart">
          <facets>
            <facet name="sinfo_facet_flow_depth_development.filtered" description="flow depth development" />
            <facet name="sinfo_facet_flow_depth_development" description="flow depth development" />

            <facet name="sinfo_facet_waterlevel_difference.filtered" description="waterlevel difference" />
            <facet name="sinfo_facet_bedheight_difference.filtered" description="bed Height difference" />

            <facet name="sinfo_facet_flow_depth_current.filtered" description="flow depth current" />
            <facet name="sinfo_facet_flow_depth_current" description="flow depth current" />
            <facet name="sinfo_facet_flow_depth_historical.filtered" description="flow depth historical" />
            <facet name="sinfo_facet_flow_depth_historical" description="flow depth historical" />

            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />
            
            <facet name="sinfo_flow_depth_development.manualpoints" description="Manual Points" />            
          </facets>
        </outputmode>

        <outputmode name="sinfo_flow_depth_development_peryear" description="output.flow_depth_development_peryear" mime-type="image/png" type="chart">
          <facets>
            <facet name="sinfo_facet_flow_depth_development_per_year.filtered" description="flow depth development per year" />
            <facet name="sinfo_facet_flow_depth_development_per_year" description="flow depth development per year" />

            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />
            
            <facet name="sinfo_flow_depth_development_peryear.manualpoints" description="Manual Points" />            
          </facets>
        </outputmode>

        <outputmode name="sinfo_flowdepthdevelopment_export" description="output.sinfo_flowdepthdevelopment_export" mime-type="text/plain" type="export">
          <facets>
            <facet name="csv" description="facet.sinfo_flowdepthdevelopment_export.csv" />
            <facet name="pdf" description="facet.sinfo_flowdepthdevelopment_export.pdf" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_flowdepthdevelopment_report" description="output.sinfo_flowdepthdevelopment_report" mime-type="text/xml" type="report">
          <facets>
            <facet name="report" description="facet.sinfo_flowdepthdevelopment_report" />
          </facets>
        </outputmode>
      </outputmodes>
    </state>




    <!-- Calculation Mode: Grundberührungen -->

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.calculation_mode" />
      <to state="state.sinfo.distance_only" />
      <condition data="calculation_mode" value="sinfo_calc_collision" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.distance_only" />
      <to state="state.sinfo.year_epoch" />
      <condition data="calculation_mode" value="sinfo_calc_collision" operator="equal" />
    </transition>

    <state id="state.sinfo.year_epoch" description="state.sinfo.year_epoch" state="org.dive4elements.river.artifacts.sinfo.collision.YearChoice" helpText="help.state.sinfo.year">
      <data name="ye_select" type="String" /> 
    </state>


    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.year_epoch" />
      <to state="state.sinfo.load.year" />
      <condition data="ye_select" value="state.sinfo.year" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.year_epoch" />
      <to state="state.sinfo.load.epoch" />
      <condition data="ye_select" value="state.sinfo.epoch" operator="equal" />
    </transition>

    <state id="state.sinfo.load.year" description="state.sinfo.load.year" state="org.dive4elements.river.artifacts.sinfo.collision.LoadMultipleYearSelectState" helpText="help.state.sinfo.load.year">
      <data name="years" type="String" /> 
    </state>

    <state id="state.sinfo.load.epoch" description="state.sinfo.load.epoch" state="org.dive4elements.river.artifacts.sinfo.collision.LoadMultipleEpochSelectState" helpText="help.state.sinfo.load.epoch">
      <data name="epochs" type="String" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.load.year" />
      <to state="state.sinfo.collision" />
      <condition data="calculation_mode" value="sinfo_calc_collision" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.load.epoch" />
      <to state="state.sinfo.collision" />
      <condition data="calculation_mode" value="sinfo_calc_collision" operator="equal" />
    </transition>

    <state id="state.sinfo.collision" description="state.sinfo.collision" state="org.dive4elements.river.artifacts.sinfo.collision.CollisionState" helpText="help.state.sinfo.collision">
      <outputmodes>
        <outputmode name="sinfo_collision" description="output.sinfo_collision" mime-type="image/png" type="chart">
          <facets>
            <facet name="sinfo_facet_collision_calc_count" description="bed collisions" />
            <facet name="sinfo_facet_collision_calc_count.2" description="bed collisions" />
            <facet name="sinfo_facet_collision_calc_count.3" description="bed collisions" />
            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />
            <facet name="sinfo_collision.manualpoints" description="Manual Points" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_collision_export" description="output.sinfo_collision_export" mime-type="text/plain" type="export">
          <facets>
            <facet name="csv" description="facet.sinfo_collision_export.csv" />
            <facet name="pdf" description="facet.sinfo_collision_export.pdf" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_collision_report" description="output.sinfo_collision_report" mime-type="text/xml" type="report">
          <facets>
            <facet name="report" description="facet.sinfo_collision_report" />
          </facets>
        </outputmode>
      </outputmodes>
    </state>

    <!-- Calculation Mode: Überflutungsdauern Infrastrukturen BWaStr -->
    <!-- Schrittweite benötigt für wq-state: TODO: vermutlich hier auch nicht? -->
    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.calculation_mode" />
      <to state="state.sinfo.distance_only" />
      <condition data="calculation_mode" value="sinfo_calc_flood_duration" operator="equal" />
    </transition> 

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.distance_only" />
      <to state="state.sinfo.riverside" />
      <condition data="calculation_mode" value="sinfo_calc_flood_duration" operator="equal" />
    </transition>

    <state id="state.sinfo.riverside" description="state.sinfo.riverside" state="org.dive4elements.river.artifacts.sinfo.flood_duration.RiversideRadioChoice" helpText="help.state.sinfo.riverside">
      <data name="riverside" type="String" />
    </state>

    <state id="state.sinfo.wspl" description="state.sinfo.wspl" state="org.dive4elements.river.artifacts.sinfo.flood_duration.WsplChoice" helpText="help.state.sinfo.wspl">
      <data name="wspl" type="Boolean" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.riverside" />
      <to state="state.sinfo.wspl" />
      <condition data="calculation_mode" value="sinfo_calc_flood_duration" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.wspl" />
      <to state="state.sinfo.wq" />
      <condition data="wspl" value="true" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.wspl" />
      <to state="state.sinfo.flood_duration" />
      <condition data="wspl" value="false" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.wq" />
      <to state="state.sinfo.flood_duration" />
      <condition data="calculation_mode" value="sinfo_calc_flood_duration" operator="equal" />
    </transition>

    <state id="state.sinfo.flood_duration" description="state.sinfo.flood_duration" state="org.dive4elements.river.artifacts.sinfo.flood_duration.FloodDurationState" helpText="help.state.sinfo.flood_duration">
      <outputmodes>
        <outputmode name="sinfo_flood_duration" description="output.sinfo_flood_duration" mime-type="image/png" type="chart">
          <facets>
            <facet name="sinfo_facet_flood_duration.left" description="flood duration of the heights of the left bank infrastructures (points)"/>
            <facet name="sinfo_facet_flood_duration.right" description="flood duration of the heights of the right bank infrastructures (points)"/>
            <facet name="mainvalue.duration" description="flood duration of W main value"/>
          </facets>
        </outputmode>
        <outputmode name="sinfo_flood_height" description="output.sinfo_flood_height" mime-type="image/png" type="chart">
          <facets>
            <facet name="sinfo_facet_flood_height.left" description="flood heights of the left bank infrastructures (points)"/>
            <facet name="sinfo_facet_flood_height.right" description="flood heights of the right bank infrastructures (points)"/>
            <facet name="mainvalue.w" description="W of main value"/>
       
          </facets>
        </outputmode>
        <outputmode name="sinfo_floodduration_curve" description="output.sinfo_duration_curve" mime-type="image/png" type="chart">
          <facets>
            <facet name="duration_curve.w" description="facet.duration_curve.w"/>
            <facet name="duration_curve.q" description="facet.duration_curve.q"/>
            <facet name="infrastructure.wq" description="w and q of the infrastructure"/>
            <facet name="sinfo.mainvalues.w" description="W Main Values"/>
            <facet name="sinfo.mainvalues.q" description="Q Main Values at optional second axis"/>
            <facet name="duration_curve.manualpoints" description="Manuelle Punkte"/>
          </facets>
        </outputmode>

        <outputmode name="sinfo_floodduration_export" description="output.sinfo_floodduration_export" mime-type="text/plain" type="export">
          <facets>
            <facet name="csv" description="facet.sinfo_flood_duration_export.csv" />
            <facet name="pdf" description="facet.sinfo_flood_duration_export.pdf" />
          </facets>
        </outputmode>
 
         <outputmode name="sinfo_flood_duration_report" description="output.sinfo_flood_duration_report" mime-type="text/xml" type="report">
          <facets>
            <facet name="report" description="facet.sinfo_flood_duration_report" />
          </facets>
        </outputmode>
      </outputmodes>
    </state>

    <!-- Calculation Mode: Transportkörperhöhen -->
    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.calculation_mode" />
      <to state="state.sinfo.distance_only" />
      <condition data="calculation_mode" value="sinfo_calc_transport_bodies_heights" operator="equal" />
    </transition>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.distance_only" />
      <to state="state.sinfo.wq" />
      <condition data="calculation_mode" value="sinfo_calc_transport_bodies_heights" operator="equal" />
    </transition>

    <state id="state.sinfo.wq" description="state.sinfo.wq" state="org.dive4elements.river.artifacts.states.WQSelect" helpText="help.state.sinfo.wq">
      <data name="wq_isq" type="Boolean" />
      <data name="wq_isfree" type="Boolean" />
      <data name="wq_isrange" type="Boolean" />
      <data name="wq_from" type="Double" />
      <data name="wq_to" type="Double" />
      <data name="wq_step" type="Double" />
      <data name="wq_single" type="Double[]" />
    </state>

    <transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
      <from state="state.sinfo.wq" />
      <to state="state.sinfo.transport_bodies_heights" />
      <condition data="calculation_mode" value="sinfo_calc_transport_bodies_heights" operator="equal" />
    </transition>

    <state id="state.sinfo.transport_bodies_heights" description="state.sinfo.transport_bodies_heights" state="org.dive4elements.river.artifacts.sinfo.tkhstate.TkhState" helpText="help.state.sinfo.transport_bodies_heights">
      <outputmodes>
        <outputmode name="sinfo_tkk" description="output.tkk" mime-type="image/png" type="chart">
          <facets>
            <!-- REMARK: id's that ends with 'filtered' are handled differently
              ' -->
            <!-- FIXME: should be filtered according to spec -->
            <facet name="sinfo_facet_tkh" description="Facet for tkh" />

            <facet name="longitudinal_section.annotations" description="facet.longitudinal_section.annotations" />

            <facet name="sinfo_tkk.manualpoints" description="Manual Points" />

            <facet name="sinfo_facet_flow_depth.filtered" description="mean flow depth" />
            <facet name="sinfo_facet_flow_depth" description="mean flow depth" />

            <facet name="sinfo_facet_velocity" description="Velocity" />
            <facet name="sinfo_facet_d50" description="D50" />
            <facet name="sinfo_facet_tau" description="Tau" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_tkh_export" description="output.sinfo_tkh_export" mime-type="text/plain" type="export">
          <facets>
            <facet name="csv" description="facet.sinfo_tkh_export.csv" />
            <facet name="pdf" description="facet.sinfo_tkh_export.pdf" />
          </facets>
        </outputmode>

        <outputmode name="sinfo_tkh_report" description="output.sinfo_tkh_report" mime-type="text/xml" type="report">
          <facets>
            <facet name="report" description="facet.sinfo_tkh_report" />
          </facets>
        </outputmode>
      </outputmodes>
    </state>
  </states>
</artifact>

http://dive4elements.wald.intevation.org