changeset 9619:63bbd5e45839

#21 WMS Legend
author dnt_bjoernsen <d.tironi@bjoernsen.de>
date Thu, 10 Oct 2019 16:08:47 +0200
parents af671ee7835e
children 26e113e8224f 36d201244529
files artifacts/doc/conf/modules/wms_uedauern_jahre_Beispielfluss.tsv artifacts/doc/conf/modules/wms_uedauern_jahre_Elbe.tsv artifacts/doc/conf/modules/wms_uedauern_jahre_Rhein.tsv artifacts/doc/conf/modules/wms_uedauern_mittel_Beispielfluss.tsv artifacts/doc/conf/modules/wms_uedauern_mittel_Elbe.tsv artifacts/doc/conf/modules/wms_uedauern_mittel_Rhein.tsv artifacts/doc/conf/modules/wms_uedauern_szenario_Beispielfluss.tsv artifacts/doc/conf/modules/wms_uedauern_szenario_Elbe.tsv artifacts/doc/conf/modules/wms_uedauern_szenario_Rhein.tsv artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSLayerFacet.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResult.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java artifacts/src/main/java/org/dive4elements/river/exports/MapGenerator.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/LegendWindow.java
diffstat 17 files changed, 355 insertions(+), 406 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/conf/modules/wms_uedauern_jahre_Beispielfluss.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_jahre_Beispielfluss.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,40 +1,40 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.					
 
-1990	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1991	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1992	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1993	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1994	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1995	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1996	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1997	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1998	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1999	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-
-2000	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2001	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2002	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2003	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2004	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2005	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2006	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2007	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2008	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2009	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-
-2010	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2011	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2012	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2013	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2014	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2015	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2016	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
\ No newline at end of file
+1990	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1991	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1992	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1993	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1994	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1995	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1996	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1997	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1998	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+1999	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	Legende_UEFD.png
+			
+2000	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2001	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2002	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2003	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2004	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2005	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2006	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2007	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2008	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+2009	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	Legende_UEFD.png
+			
+2010	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
+2011	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
+2012	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
+2013	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
+2014	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
+2015	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
+2016	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	Legende_UEFD.png
\ No newline at end of file
--- a/artifacts/doc/conf/modules/wms_uedauern_jahre_Elbe.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_jahre_Elbe.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,13 +1,13 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.			
+# Änderungen werden erst nach einem Neustart des Servers wirksam.		
 
 1990	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
 1991	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
--- a/artifacts/doc/conf/modules/wms_uedauern_jahre_Rhein.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_jahre_Rhein.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,11 +1,11 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
 # Änderungen werden erst nach einem Neustart des Servers wirksam.		
 
--- a/artifacts/doc/conf/modules/wms_uedauern_mittel_Beispielfluss.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_mittel_Beispielfluss.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,16 +1,16 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_mittel_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
 # Änderungen werden erst nach einem Neustart des Servers wirksam.		
-  
-Mittelwert (1990-2016)	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Median (1990-2016)	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Minimum (1990-2016)	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Maximum (1990-2016)	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Standardabweichung (1990-2016)	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
\ No newline at end of file
+
+Mittelwert (1990-2016)	Flut3_Mean_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_UEFD.png	Flut3_Mean_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_Standardvegetationszonen.png
+Median (1990-2016)	Flut3_Median_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_UEFD.png	Flut3_Median_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_Standardvegetationszonen.png
+Minimum (1990-2016)	Flut3_Min_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_UEFD.png	Flut3_Min_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_Standardvegetationszonen.png
+Maximum (1990-2016)	Flut3_Max_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_UEFD.png	Flut3_Max_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_Standardvegetationszonen.png
+Standardabweichung (1990-2016)	Flut3_STD_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Legende_UEFD.png			
\ No newline at end of file
--- a/artifacts/doc/conf/modules/wms_uedauern_mittel_Elbe.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_mittel_Elbe.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,16 +1,16 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_mittel_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.		
   
-Mittelwert (1990-2016)	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Median (1990-2016)	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Minimum (1990-2016)	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Maximum (1990-2016)	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Standardabweichung (1990-2016)	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer		
\ No newline at end of file
+Mittelwert (1990-2016)	Flut3_Mean_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Flut3_Mean_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer
+Median (1990-2016)	Flut3_Median_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Flut3_Median_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer
+Minimum (1990-2016)	Flut3_Min_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Flut3_Min_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer
+Maximum (1990-2016)	Flut3_Max_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer	Flut3_Max_1990_2016_VegZ	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer
+Standardabweichung (1990-2016)	Flut3_STD_1990_2016	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016_named/MapServer/WmsServer		
\ No newline at end of file
--- a/artifacts/doc/conf/modules/wms_uedauern_mittel_Rhein.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_mittel_Rhein.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,13 +1,13 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_mittel_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.			
+# Änderungen werden erst nach einem Neustart des Servers wirksam.		
   
 Mittelwert (1990-2016)	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Rhein_Statistik_1990_2016/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Rhein_Statistik_1990_2016/MapServer/WMSServer
 Median (1990-2016)	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Rhein_Statistik_1990_2016/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Rhein_Statistik_1990_2016/MapServer/WMSServer
--- a/artifacts/doc/conf/modules/wms_uedauern_szenario_Beispielfluss.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_szenario_Beispielfluss.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,51 +1,51 @@
 # Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
  				
 # Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
-				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
-				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.					
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
--200	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--190	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--180	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--170	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--160	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--150	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--140	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--130	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--120	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--110	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--100	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--90	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--80	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--70	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--60	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--50	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--40	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--30	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--20	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
--10	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer
-10	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-20	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-30	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-40	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-50	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-60	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-70	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-80	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-90	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-100	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer
-110	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-120	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-130	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-140	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-150	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-160	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-170	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-180	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-190	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
-200	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer
\ No newline at end of file
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
+				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+				
+-200	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-190	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-180	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-170	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-160	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-150	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-140	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-130	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-120	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-110	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer	Legende_UEFD.png
+-100	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-90	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-80	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-70	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-60	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-50	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-40	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-30	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-20	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+-10	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m010100/MapServer/WMSServer	Legende_UEFD.png
+10	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+20	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+30	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+40	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+50	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+60	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+70	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+80	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+90	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+100	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p110200/MapServer/WMSServer	Legende_UEFD.png
+110	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+120	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+130	7	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+140	6	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+150	5	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+160	4	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+170	3	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+180	2	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+190	1	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
+200	0	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_p010100/MapServer/WMSServer	Legende_UEFD.png
\ No newline at end of file
--- a/artifacts/doc/conf/modules/wms_uedauern_szenario_Elbe.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_szenario_Elbe.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,13 +1,13 @@
 # Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
  				
 # Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.		
 				
 -200	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
 -190	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Elbe_m110200/MapServer/WMSServer
--- a/artifacts/doc/conf/modules/wms_uedauern_szenario_Rhein.tsv	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_szenario_Rhein.tsv	Thu Oct 10 16:08:47 2019 +0200
@@ -1,13 +1,13 @@
 # Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschreibung beim Gewässernamen ist zu beachten!				
  				
 # Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
 # Für jede Auswahlmöglichkeit ist eine Zeile folgender Form anzulegen:			
-#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>
+#<Themen-Bezeichnung><Tab><WMS-Layer-Name (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><Legendengrafik><Tab><WMS-Layer-Name (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)><Tab><Legendengrafik (Vegetationszone)>
 				
-# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer ist dabei optional.			
+# Die Angabe einer Vegetationszonen-URL mit dazugehöriger Vegetationszonen-Layer-Nummer und Legendengrafik ist dabei optional.			
 				
-# Änderungen werden erst nach einem Neustart des Servers wirksam.					
+# Änderungen werden erst nach einem Neustart des Servers wirksam.						
 				
 -200	9	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Rhein_m110200/MapServer/WMSServer
 -190	8	https://geoportal.bafg.de/arcgis3/services/Flut3/UFD_Salix231_Rhein_m110200/MapServer/WMSServer
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSLayerFacet.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSLayerFacet.java	Thu Oct 10 16:08:47 2019 +0200
@@ -8,8 +8,10 @@
 
 package org.dive4elements.river.artifacts.model.map;
 
-import com.vividsolutions.jts.geom.Envelope;
+import java.util.ArrayList;
+import java.util.List;
 
+import org.apache.log4j.Logger;
 import org.dive4elements.artifactdatabase.state.DefaultFacet;
 import org.dive4elements.artifactdatabase.state.Facet;
 import org.dive4elements.artifacts.Artifact;
@@ -18,183 +20,157 @@
 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
 import org.dive4elements.river.utils.GeometryUtils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
+import com.vividsolutions.jts.geom.Envelope;
 
-public class WMSLayerFacet
-extends      DefaultFacet
-{
-    protected ComputeType  type;
+public class WMSLayerFacet extends DefaultFacet {
+    private static final long serialVersionUID = 1L;
+    protected ComputeType type;
     protected List<String> layers;
-    protected String       stateId;
-    protected String       hash;
-    protected String       url;
-    protected Envelope     extent;
-    protected Envelope     originalExtent;
-    protected String       srid;
-
+    protected String stateId;
+    protected String hash;
+    protected String url;
+    protected Envelope extent;
+    protected Envelope originalExtent;
+    protected String srid;
+    private String legend;
+    private String imagepath;
 
     private static final Logger log = Logger.getLogger(WMSLayerFacet.class);
 
     public WMSLayerFacet() {
     }
 
-
-    public WMSLayerFacet(int index, String name, String description) {
+    public WMSLayerFacet(final int index, final String name, final String description) {
         this(index, name, description, ComputeType.FEED, null, null);
     }
 
-
-    public WMSLayerFacet(
-        int         index,
-        String      name,
-        String      description,
-        ComputeType type,
-        String      stateId,
-        String      hash
+    public WMSLayerFacet(final int index, final String name, final String description, final ComputeType type, final String stateId, final String hash
 
     ) {
         super(index, name, description);
-        this.layers  = new ArrayList<String>();
-        this.type    = type;
+        this.layers = new ArrayList<>();
+        this.type = type;
         this.stateId = stateId;
-        this.hash    = hash;
+        this.hash = hash;
     }
 
-
-    public WMSLayerFacet(
-        int         index,
-        String      name,
-        String      description,
-        ComputeType type,
-        String      stateId,
-        String      hash,
-        String      url
-    ) {
+    public WMSLayerFacet(final int index, final String name, final String description, final ComputeType type, final String stateId, final String hash,
+            final String url) {
         this(index, name, description, type, stateId, hash);
         this.url = url;
     }
 
-
-    public void addLayer(String name) {
+    public void addLayer(final String name) {
         if (name != null && name.length() > 0) {
-            layers.add(name);
+            this.layers.add(name);
         }
     }
 
-
     public List<String> getLayers() {
-        return layers;
+        return this.layers;
     }
 
-
-    public void removeLayer(String layer) {
-        if (layers != null) {
-            layers.remove(layer);
+    public void removeLayer(final String layer) {
+        if (this.layers != null) {
+            this.layers.remove(layer);
         }
     }
 
-
-    public void setExtent(Envelope extent) {
+    public void setExtent(final Envelope extent) {
         if (extent != null) {
             this.extent = extent;
-        }
-        else {
+        } else {
             log.debug("setExtent(): extent is null");
         }
     }
 
-
     public Envelope getExtent() {
-        return extent;
+        return this.extent;
     }
 
-
-    public void setOriginalExtent(Envelope originalExtent) {
+    public void setOriginalExtent(final Envelope originalExtent) {
         this.originalExtent = originalExtent;
     }
 
-
     public Envelope getOriginalExtent() {
-        return originalExtent;
+        return this.originalExtent;
     }
 
-
-    public void setSrid(String srid) {
+    public void setSrid(final String srid) {
         if (srid != null) {
             this.srid = srid;
         }
     }
 
-
     public String getSrid() {
-        return srid;
+        return this.srid;
     }
 
-
     @Override
-    public Object getData(Artifact artifact, CallContext context) {
+    public Object getData(final Artifact artifact, final CallContext context) {
         return null;
     }
 
-
     @Override
-    public Node toXML(Document doc) {
-        ElementCreator ec = new ElementCreator(
-            doc,
-            ArtifactNamespaceContext.NAMESPACE_URI,
-            ArtifactNamespaceContext.NAMESPACE_PREFIX);
+    public Node toXML(final Document doc) {
+        final ElementCreator ec = new ElementCreator(doc, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX);
 
-        Element facet = ec.create("facet");
-        ec.addAttr(facet, "description", description, true);
-        ec.addAttr(facet, "index", String.valueOf(index), true);
-        ec.addAttr(facet, "name", name, true);
-        ec.addAttr(facet, "url", url, true);
-        ec.addAttr(facet, "layers", layers.get(0), true);
-        ec.addAttr(facet, "srid", srid != null ? srid : "", true);
-        ec.addAttr(facet, "extent", originalExtent != null
-            ? GeometryUtils.jtsBoundsToOLBounds(originalExtent)
-            : "", true);
+        final Element facet = ec.create("facet");
+        ec.addAttr(facet, "description", this.description, true);
+        ec.addAttr(facet, "index", String.valueOf(this.index), true);
+        ec.addAttr(facet, "name", this.name, true);
+        ec.addAttr(facet, "url", this.url, true);
+        ec.addAttr(facet, "layers", this.layers.get(0), true);
+        ec.addAttr(facet, "srid", this.srid != null ? this.srid : "", true);
+        ec.addAttr(facet, "extent", this.originalExtent != null ? GeometryUtils.jtsBoundsToOLBounds(this.originalExtent) : "", true);
         ec.addAttr(facet, "queryable", String.valueOf(isQueryable()), true);
+        ec.addAttr(facet, "imagepath", this.imagepath, true);
+        ec.addAttr(facet, "legend", this.legend, true);
 
         return facet;
     }
 
+    public void setLegend(final String legend) {
+        this.legend = legend;
+    }
+
+    /* Code-Kongruenz */
+    public String getLegend() {
+        return this.legend;
+    }
 
     public boolean isQueryable() {
         return false;
     }
 
-
     /** Clone facet-bound data. */
-    protected void cloneData(WMSLayerFacet copy) {
-        copy.type    = type;
-        copy.stateId = stateId;
-        copy.hash    = hash;
+    protected void cloneData(final WMSLayerFacet copy) {
+        copy.type = this.type;
+        copy.stateId = this.stateId;
+        copy.hash = this.hash;
 
-        if (layers != null) {
-            copy.layers  = new ArrayList<String>(layers);
-        }
-        else {
-            copy.layers = new ArrayList<String>();
+        if (this.layers != null) {
+            copy.layers = new ArrayList<>(this.layers);
+        } else {
+            copy.layers = new ArrayList<>();
         }
 
-        copy.originalExtent = originalExtent;
-        copy.url     = url;
-        copy.extent  = extent;
-        copy.srid    = srid;
+        copy.originalExtent = this.originalExtent;
+        copy.url = this.url;
+        copy.extent = this.extent;
+        copy.srid = this.srid;
+        
+        copy.imagepath = imagepath;
+        copy.legend = legend;
     }
 
     @Override
     public Facet deepCopy() {
-        WMSLayerFacet copy = new WMSLayerFacet();
+        final WMSLayerFacet copy = new WMSLayerFacet();
         copy.set(this);
 
         cloneData(copy);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/CalculationSelectUinfo.java	Thu Oct 10 16:08:47 2019 +0200
@@ -61,7 +61,7 @@
 
             final String river = uinfo.getRiver();
             if (!UedauernConfiguration.filesExistsForRiver(river))
-                throw new IllegalArgumentException("error_no_data_for_river");
+                throw new IllegalArgumentException("error_no_data_for_river"); // wrong config could be thrown here as well...
         }
         return true;
     }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java	Thu Oct 10 16:08:47 2019 +0200
@@ -123,11 +123,12 @@
         final String layerLabelFinal = Resources.getMsg(context.getMeta(), layerLabel, new Object[] { selectedItem });
         final String url = config.getUrl();
         final String layer = config.getLayer();
+        final String legend = config.getLegend();
 
-        if (url != null && layer != null) {
+        if (url != null && layer != null && legend != null) {
             // final String realUrl = classification.configureAddress(serverAddress, url, vegZoneId);
 
-            return new WmsLayer(layerLabelFinal, url, layer, showLayerLink);
+            return new WmsLayer(layerLabelFinal, url, layer, showLayerLink, legend);
         }
         return null;
     }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResult.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculationResult.java	Thu Oct 10 16:08:47 2019 +0200
@@ -30,11 +30,14 @@
 
         private final String layer;
 
-        public WmsLayer(final String label, final String url, final String layer, final boolean showLayerLink) {
+        final String legend;
+
+        public WmsLayer(final String label, final String url, final String layer, final boolean showLayerLink, final String legend) {
             this.label = label;
             this.url = url;
             this.layer = layer;
             this.showLayerLink = showLayerLink;
+            this.legend = legend;
         }
 
         public String getLabel() {
@@ -52,6 +55,10 @@
         public boolean isShowLayerLink() {
             return this.showLayerLink;
         }
+
+        public String getLegend() {
+            return this.legend;
+        }
     }
 
     private static final long serialVersionUID = 1L;
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java	Thu Oct 10 16:08:47 2019 +0200
@@ -96,8 +96,10 @@
 
             final String label = layer.getLabel();
             final String url = layer.getUrl();
+            final String legend = layer.getLegend();
 
             final WMSLayerFacet wmsFacet = new WMSLayerFacet(index, FLOODMAP_EXTERNAL_WMS_INUNDATIONDUR + index, label, type, getID(), hash, url);
+            wmsFacet.setLegend(legend); // not in constructor, because this ugly pattern is being used so far
             wmsFacet.addLayer(layer.getLayer());
 
             facets.add(wmsFacet);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java	Thu Oct 10 16:08:47 2019 +0200
@@ -32,11 +32,13 @@
         private final String label;
         private final String url;
         private final String layer_default;
+        private final String legend_image;
 
-        public WmsConfig(final String label, final String url, final String layer) {
+        public WmsConfig(final String label, final String url, final String layer, final String legendImage) {
             this.label = label;
             this.url = url;
             this.layer_default = layer;
+            this.legend_image = legendImage;
         }
 
         public String getLabel() {
@@ -50,6 +52,10 @@
         public String getLayer() {
             return this.layer_default;
         }
+
+        public String getLegend() {
+            return this.legend_image;
+        }
     }
 
     public static enum YearType {
@@ -82,7 +88,7 @@
 
         final String configFile = makeFileName(rivername, type);
         final File file = TsvHelper.makeFile2(configFile, rivername);
-        final List<String[]> tsv = TsvHelper.readTsv(file, 5);
+        final List<String[]> tsv = TsvHelper.readTsv(file, 7); // changed to 7
 
         final Map<String, WmsConfig[]> wmsConfigs = new LinkedHashMap<>(tsv.size());
 
@@ -92,11 +98,11 @@
                 WmsConfig defaultConfig = null;
                 WmsConfig vegZoneConfig = null;
 
-                if (line.length > 2 && !StringUtils.isEmpty(line[1]) && !StringUtils.isEmpty(line[2])) {
-                    defaultConfig = new WmsConfig(label, line[2], line[1]);
+                if (line.length > 3 && !StringUtils.isEmpty(line[1]) && !StringUtils.isEmpty(line[2]) && !StringUtils.isEmpty(line[3])) {
+                    defaultConfig = new WmsConfig(label, line[2], line[1], line[3]);
 
-                    if (line.length > 4 && !StringUtils.isEmpty(line[3]) && !StringUtils.isEmpty(line[4])) {
-                        vegZoneConfig = new WmsConfig(label, line[4], line[3]);
+                    if (line.length > 6 && !StringUtils.isEmpty(line[4]) && !StringUtils.isEmpty(line[5]) && !StringUtils.isEmpty(line[6])) {
+                        vegZoneConfig = new WmsConfig(label, line[5], line[4], line[6]);
                     }
                 }
                 wmsConfigs.put(label, new WmsConfig[] { defaultConfig, vegZoneConfig });
--- a/artifacts/src/main/java/org/dive4elements/river/exports/MapGenerator.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/MapGenerator.java	Thu Oct 10 16:08:47 2019 +0200
@@ -8,6 +8,14 @@
 
 package org.dive4elements.river.exports;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
 import org.dive4elements.artifactdatabase.data.StateData;
 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
 import org.dive4elements.artifactdatabase.state.Facet;
@@ -27,21 +35,11 @@
 import org.dive4elements.river.themes.ThemeDocument;
 import org.dive4elements.river.utils.ArtifactMapfileGenerator;
 import org.dive4elements.river.utils.GeometryUtils;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import com.vividsolutions.jts.geom.Envelope;
 
-
 public class MapGenerator implements OutGenerator, FacetTypes {
 
     private static Logger log = Logger.getLogger(MapGenerator.class);
@@ -67,62 +65,53 @@
 
     protected String outName;
 
+    private String legend;
+
     @Override
-    public void setup(Object config) {
+    public void setup(final Object config) {
         log.debug("MapGenerator.setup");
     }
 
     @Override
-    public void init(
-        String outName,
-        Document request,
-        OutputStream out,
-        CallContext context
-    ) {
+    public void init(final String outName, final Document request, final OutputStream out, final CallContext context) {
         log.debug("MapGenerator.init");
 
-        this.outName  = outName;
-        this.request  = request;
-        this.out      = out;
-        this.context  = context;
+        this.outName = outName;
+        this.request = request;
+        this.out = out;
+        this.context = context;
 
-        this.layers = new ArrayList<WMSLayerFacet>();
+        this.layers = new ArrayList<>();
 
         this.maxExtent = null;
         this.initialExtent = null;
     }
 
-
     @Override
-    public void setMasterArtifact(Artifact master) {
+    public void setMasterArtifact(final Artifact master) {
         log.debug("MapGenerator.setMasterArtifact");
         this.master = master;
     }
 
     @Override
-    public void setCollection(D4EArtifactCollection collection) {
+    public void setCollection(final D4EArtifactCollection collection) {
         this.collection = collection;
     }
 
     @Override
-    public void doOut(
-        ArtifactAndFacet artifactFacet,
-        ThemeDocument    attr,
-        boolean          visible)
-    {
-        String name = artifactFacet.getFacetName();
+    public void doOut(final ArtifactAndFacet artifactFacet, final ThemeDocument attr, final boolean visible) {
+        final String name = artifactFacet.getFacetName();
 
-        log.debug("MapGenerator.doOut: " +
-                artifactFacet.getArtifact().identifier() + " | " + name);
-        D4EArtifact flys = (D4EArtifact) artifactFacet.getArtifact();
+        log.debug("MapGenerator.doOut: " + artifactFacet.getArtifact().identifier() + " | " + name);
+        final D4EArtifact flys = (D4EArtifact) artifactFacet.getArtifact();
 
-        Facet nativeFacet = artifactFacet.getFacet();
+        final Facet nativeFacet = artifactFacet.getFacet();
 
         if (nativeFacet instanceof WMSLayerFacet) {
-            WMSLayerFacet wms = (WMSLayerFacet) nativeFacet;
-            Envelope   extent = wms.getOriginalExtent();
+            final WMSLayerFacet wms = (WMSLayerFacet) nativeFacet;
+            final Envelope extent = wms.getOriginalExtent();
 
-            layers.add(wms);
+            this.layers.add(wms);
 
             setMaxExtent(extent);
             setSrid(wms.getSrid());
@@ -133,95 +122,67 @@
             }
             // FIXME: Already generated by HWSBarrierState
             // wms has a wrong SRID which would break that layer
-            //else if (FLOODMAP_USERSHAPE.equals(name)) {
-            //    createUserShapeLayer(flys, wms);
-            //}
+            // else if (FLOODMAP_USERSHAPE.equals(name)) {
+            // createUserShapeLayer(flys, wms);
+            // }
             else {
                 log.debug("doOut: createDatabaseLayer for facet name: " + name);
                 createDatabaseLayer(flys, wms, attr);
             }
-        }
-        else {
+        } else {
             log.warn("Facet not supported: " + nativeFacet.getClass());
         }
     }
 
-
-    protected void createWSPLGENLayer(
-        D4EArtifact   flys,
-        WMSLayerFacet wms,
-        ThemeDocument attr
-    ) {
+    protected void createWSPLGENLayer(final D4EArtifact flys, final WMSLayerFacet wms, final ThemeDocument attr) {
         try {
-            if(wms instanceof WSPLGENLayerFacet) {
+            if (wms instanceof WSPLGENLayerFacet) {
                 // Retrieve waterlevel ground differences from artifact
-                StateData dFrom =
-                    flys.getData(WaterlevelGroundDifferences.LOWER_FIELD);
-                StateData dTo =
-                    flys.getData(WaterlevelGroundDifferences.UPPER_FIELD);
-                StateData dStep =
-                    flys.getData(WaterlevelGroundDifferences.DIFF_FIELD);
+                final StateData dFrom = flys.getData(WaterlevelGroundDifferences.LOWER_FIELD);
+                final StateData dTo = flys.getData(WaterlevelGroundDifferences.UPPER_FIELD);
+                final StateData dStep = flys.getData(WaterlevelGroundDifferences.DIFF_FIELD);
 
-                String fromStr = dFrom != null
-                    ? (String) dFrom.getValue()
-                    : null;
-                String toStr   = dTo   != null
-                    ? (String) dTo.getValue()
-                    : null;
-                String stepStr = dStep != null
-                    ? (String) dStep.getValue()
-                    : null;
+                final String fromStr = dFrom != null ? (String) dFrom.getValue() : null;
+                final String toStr = dTo != null ? (String) dTo.getValue() : null;
+                final String stepStr = dStep != null ? (String) dStep.getValue() : null;
 
-                float from = Float.parseFloat(fromStr);
-                float to   = Float.parseFloat(toStr);
-                float step = Float.parseFloat(stepStr);
+                final float from = Float.parseFloat(fromStr);
+                final float to = Float.parseFloat(toStr);
+                final float step = Float.parseFloat(stepStr);
 
-                ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
-                mfg.createUeskLayer(
-                    flys,
-                    (WSPLGENLayerFacet) wms,
-                    attr.createDynamicMapserverStyle(
-                        from, to, step, context.getMeta()),
-                    context);
-            }
-            else {
-                log.warn("Cannot create WSPLGEN layer from: " +
-                        wms.getClass());
+                final ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
+                mfg.createUeskLayer(flys, (WSPLGENLayerFacet) wms, attr.createDynamicMapserverStyle(from, to, step, this.context.getMeta()), this.context);
+            } else {
+                log.warn("Cannot create WSPLGEN layer from: " + wms.getClass());
             }
         }
-        catch (IOException ioe) {
+        catch (final IOException ioe) {
             log.error(ioe, ioe);
         }
     }
 
-
-    protected void createUserShapeLayer(D4EArtifact flys, WMSLayerFacet wms) {
-        ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
+    protected void createUserShapeLayer(final D4EArtifact flys, final WMSLayerFacet wms) {
+        final ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
 
         try {
             mfg.createUserShapeLayer(flys, wms);
         }
-        catch (FileNotFoundException fnfe) {
+        catch (final FileNotFoundException fnfe) {
             log.error(fnfe, fnfe);
         }
-        catch (IOException ioe) {
+        catch (final IOException ioe) {
             log.error(ioe, ioe);
         }
     }
 
-
-    protected void createDatabaseLayer(
-        D4EArtifact   flys,
-        WMSLayerFacet wms,
-        ThemeDocument attr
-    ) {
+    protected void createDatabaseLayer(final D4EArtifact flys, final WMSLayerFacet wms, final ThemeDocument attr) {
         log.debug("createDatabaseLayer for facet: " + wms.getName());
 
-        ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
+        final ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
 
         try {
-            File baseDir = mfg.getShapefileBaseDir();
-            File artDir  = new File(baseDir, flys.identifier());
+            final File baseDir = mfg.getShapefileBaseDir();
+            final File artDir = new File(baseDir, flys.identifier());
 
             if (artDir != null && !artDir.exists()) {
                 log.debug("Create new directory: " + artDir.getPath());
@@ -229,41 +190,31 @@
             }
 
             if (wms instanceof WMSDBLayerFacet) {
-                mfg.createDatabaseLayer(
-                        flys,
-                        (WMSDBLayerFacet) wms,
-                        attr.createMapserverStyle());
-            }
-            else {
+                mfg.createDatabaseLayer(flys, (WMSDBLayerFacet) wms, attr.createMapserverStyle());
+            } else {
                 log.warn("Cannot create DB layer from: " + wms.getClass());
             }
         }
-        catch (FileNotFoundException fnfe) {
+        catch (final FileNotFoundException fnfe) {
             log.error(fnfe, fnfe);
         }
-        catch (IOException ioe) {
+        catch (final IOException ioe) {
             log.error(ioe, ioe);
         }
     }
 
-
     @Override
-    public void generate()
-            throws IOException
-    {
+    public void generate() throws IOException {
         log.debug("MapGenerator.generate");
 
-        ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
+        final ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator();
         mfg.generate();
 
-        Document response = XMLUtils.newDocument();
-        ElementCreator c  = new ElementCreator(
-                response,
-                ArtifactNamespaceContext.NAMESPACE_URI,
-                ArtifactNamespaceContext.NAMESPACE_PREFIX);
+        final Document response = XMLUtils.newDocument();
+        final ElementCreator c = new ElementCreator(response, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX);
 
-        Element root   = c.create("floodmap");
-        Element layers = c.create("layers");
+        final Element root = c.create("floodmap");
+        final Element layers = c.create("layers");
 
         response.appendChild(root);
         root.appendChild(layers);
@@ -271,18 +222,16 @@
         appendLayers(layers);
         appendMapInformation(root, c);
 
-        XMLUtils.toStream(response, out);
+        XMLUtils.toStream(response, this.out);
     }
 
-
-    protected void appendLayers(Element parent) {
-        for (WMSLayerFacet facet: layers) {
+    protected void appendLayers(final Element parent) {
+        for (final WMSLayerFacet facet : this.layers) {
             parent.appendChild(facet.toXML(parent.getOwnerDocument()));
         }
     }
 
-
-    protected void setMaxExtent(Envelope maxExtent) {
+    protected void setMaxExtent(final Envelope maxExtent) {
         if (maxExtent == null) {
             return;
         }
@@ -296,16 +245,14 @@
         this.maxExtent.expandToInclude(maxExtent);
     }
 
-
-    protected void setInitialExtent(Envelope initialExtent) {
+    protected void setInitialExtent(final Envelope initialExtent) {
         if (this.initialExtent == null && initialExtent != null) {
             log.debug("Set initial extent to: " + initialExtent);
             this.initialExtent = new Envelope(initialExtent);
         }
     }
 
-
-    protected void setSrid(String srid) {
+    protected void setSrid(final String srid) {
         if (srid == null || srid.length() == 0) {
             return;
         }
@@ -313,8 +260,7 @@
         this.srid = srid;
     }
 
-
-    protected void appendMapInformation(Element parent, ElementCreator c) {
+    protected void appendMapInformation(final Element parent, final ElementCreator c) {
         String mE;
         if (this.maxExtent != null) {
             mE = GeometryUtils.jtsBoundsToOLBounds(this.maxExtent);
@@ -323,17 +269,17 @@
             mE = "0 0 1 1";
         }
 
-        Element maxExtent = c.create("maxExtent");
+        final Element maxExtent = c.create("maxExtent");
         maxExtent.setTextContent(mE);
 
-        if(this.initialExtent != null) {
-            String iE = GeometryUtils.jtsBoundsToOLBounds(this.initialExtent);
-            Element initExtent = c.create("initialExtent");
+        if (this.initialExtent != null) {
+            final String iE = GeometryUtils.jtsBoundsToOLBounds(this.initialExtent);
+            final Element initExtent = c.create("initialExtent");
             initExtent.setTextContent(iE);
             parent.appendChild(initExtent);
         }
 
-        Element srid = c.create("srid");
+        final Element srid = c.create("srid");
         srid.setTextContent(this.srid);
 
         // TODO zoom levels
@@ -343,7 +289,6 @@
         parent.appendChild(srid);
     }
 
-
     /**
      * Returns an instance of <i>EmptySettings</i> currently!
      *
@@ -354,9 +299,8 @@
         return new EmptySettings();
     }
 
-
     @Override
-    public void setSettings(Settings settings) {
+    public void setSettings(final Settings settings) {
         this.settings = settings;
     }
 }
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/LegendWindow.java	Thu Oct 10 16:02:31 2019 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/LegendWindow.java	Thu Oct 10 16:08:47 2019 +0200
@@ -10,8 +10,15 @@
 
 import java.util.List;
 
+import org.dive4elements.river.client.client.FLYSConstants;
+import org.dive4elements.river.client.shared.MapUtils;
+import org.dive4elements.river.client.shared.model.AttributedTheme;
+import org.dive4elements.river.client.shared.model.Theme;
+import org.dive4elements.river.client.shared.model.ThemeList;
+
 import com.google.gwt.core.client.GWT;
-
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Widget;
 import com.smartgwt.client.types.ImageStyle;
 import com.smartgwt.client.types.VerticalAlignment;
 import com.smartgwt.client.widgets.Canvas;
@@ -21,59 +28,49 @@
 import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
 
-import org.dive4elements.river.client.client.FLYSConstants;
-
-import org.dive4elements.river.client.shared.MapUtils;
-import org.dive4elements.river.client.shared.model.AttributedTheme;
-import org.dive4elements.river.client.shared.model.Theme;
-import org.dive4elements.river.client.shared.model.ThemeList;
-
-
 public class LegendWindow extends Window {
 
     protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
 
     private ThemeList themeList;
 
-    private VLayout legendContainer;
+    private final VLayout legendContainer;
 
-
-    public LegendWindow(ThemeList themeList) {
+    public LegendWindow(final ThemeList themeList) {
         this.themeList = themeList;
         this.legendContainer = new VLayout();
 
         init();
     }
 
-    public void update(ThemeList themeList) {
+    public void update(final ThemeList themeList) {
         this.themeList = themeList;
 
-        Canvas[] legends = legendContainer.getMembers();
-        legendContainer.removeMembers(legends);
+        final Canvas[] legends = this.legendContainer.getMembers();
+        this.legendContainer.removeMembers(legends);
 
         addLegends();
     }
 
     private void addLegends() {
-        List<Theme> themes = themeList.getActiveThemes();
+        final List<Theme> themes = this.themeList.getActiveThemes();
 
-        for (Theme theme : themes) {
+        for (final Theme theme : themes) {
             if (theme.getActive() == 0) {
                 continue;
             }
 
             if (theme instanceof AttributedTheme) {
-                legendContainer.addMember(
-                    createLegendGraphicsRow((AttributedTheme) theme));
+                this.legendContainer.addMember(createLegendGraphicsRow((AttributedTheme) theme));
             }
         }
     }
 
-    private Canvas createLegendGraphicsRow(AttributedTheme at) {
-        Label label = new Label(at.getDescription());
-        Img img = createLegendGraphics(at);
+    private Canvas createLegendGraphicsRow(final AttributedTheme at) {
+        final Label label = new Label(at.getDescription());
+        final Widget img = createLegendGraphics(at);
 
-        HLayout row = new HLayout();
+        final HLayout row = new HLayout();
         row.addMember(label);
         row.addMember(img);
 
@@ -83,11 +80,27 @@
         return row;
     }
 
-    private Img createLegendGraphics(AttributedTheme at) {
-        String imgUrl = MapUtils.getLegendGraphicUrl(at.getAttr("url"),
-            at.getAttr("layers"));
+    private Widget createLegendGraphics(final AttributedTheme at) {
 
-        Img img = new Img(imgUrl);
+        final String legend = at.getAttr("legend");
+        // TEST: final Image img = new Image("/images/FLYS_Donau.png"); (funktioniert!), ebenso FLYSResources.getTest();
+        if (legend != null && !"".equals(legend)) {
+            final Image image = new Image("/images/wms_legend/" + legend);
+            final int imageWidth = image.getWidth();
+            final int imageHeight = image.getHeight();
+            final double widthPercent = imageWidth / 400.;
+            final double heightPercent = imageHeight / 150.;
+            if (widthPercent > 1 || heightPercent > 1) {
+                if (widthPercent > heightPercent)
+                    image.setSize((int) (imageWidth / widthPercent) + "px", (int) (imageHeight / widthPercent) + "px");
+                else
+                    image.setSize((int) (imageWidth / heightPercent) + "px", (int) (imageHeight / heightPercent) + "px");
+            }
+            return image;
+        }
+        final String imgUrl = MapUtils.getLegendGraphicUrl(at.getAttr("url"), at.getAttr("layers"));
+
+        final Img img = new Img(imgUrl);
         img.setImageType(ImageStyle.CENTER);
         img.setAutoFit(true);
 
@@ -95,11 +108,11 @@
     }
 
     private void init() {
-        legendContainer.setAutoHeight();
-        legendContainer.setLayoutAlign(VerticalAlignment.TOP);
-        legendContainer.setAlign(VerticalAlignment.CENTER);
+        this.legendContainer.setAutoHeight();
+        this.legendContainer.setLayoutAlign(VerticalAlignment.TOP);
+        this.legendContainer.setAlign(VerticalAlignment.CENTER);
 
-        setTitle(MSG.wms_legend());
+        setTitle(this.MSG.wms_legend());
         setAutoSize(true);
         setCanDragResize(true);
         setIsModal(false);
@@ -107,7 +120,7 @@
         setLayoutAlign(VerticalAlignment.TOP);
         setAlign(VerticalAlignment.TOP);
 
-        addItem(legendContainer);
+        addItem(this.legendContainer);
         addLegends();
 
         centerInPage();

http://dive4elements.wald.intevation.org