WRRL Bewirtschaftungspläne 2022 bis 2027

Bewirtschaftungspläne der Wasserrahmenrichtlinie für 2022 bis 2027 veröffentlicht

Baden-Württemberg hat den 3. Zyklus bei der Umsetzung der Europäischen Wasserrahmenrichtlinie (WRRL) eingeleitet und die Bewirtschaftungspläne für die Flusseinzugsgebiete Rhein und Donau veröffentlicht. Ziel der Wasserrahmenrichtlinie ist es, Flüsse, Seen und Grundwasser zu schützen und deren ökologische und chemische Qualität zu verbessern.

„Unsere Flüsse, Seen und das Grundwasser in einen guten Zustand zu versetzen wie ihn die Europäische Union europaweit definiert, ist eine ambitionierte und langwierige Aufgabe. Und trotz aller Fortschritte sind wir noch nicht am Ziel“, erklärte Umweltministerin Thekla Walker. Das liege zum einen am Umfang der Aufgabe und zum anderen wirkten viele der Maßnahmen erst langfristig. Zudem stelle der Klimawandel neue Herausforderungen an die Gewässer im Land.

Die nun vom Umweltministerium veröffentlichten Bewirtschaftungspläne samt dazugehörender Maßnahmenprogramme geben den Weg für die kommenden 6 Jahre vor. Wir wollen in den Flusseinzugsgebieten Rhein und Donau gesunde und durchgängige Lebensräume für im Wasser lebende Pflanzen und Tiere schaffen und die Wasserqualität erhalten oder verbessern.

Aachquelle © Patrick Seeger/dpa

Bis 2027: weit über 2.000 Maßnahmen im Land

Wichtige Handlungsfelder sind:

  • Um aquatische Lebensräume zu schaffen und miteinander zu vernetzen sind mit dem Maßnahmenprogramm „Hydromorphologie“ rund 1.500 Maßnahmen für die Durchgängigkeit und eine ausreichende Mindestwasserführung in den Gewässern vorgesehen. Darüber hinaus sollen mit einem Gesamtumfang von rund 1.500 Kilometern die Gewässerstruktur verbessert werden.
  • Damit weniger Nährstoffe – wie Phosphor, Phosphat und Nitrat – aus der Landwirtschaft und der Abwasserbehandlung in die Gewässer gelangen, sind im Maßnahmenprogramm „Punktquellen“ rund 450 Maßnahmen an kommunalen Kläranlagen und ungefähr 110 Maßnahmen an Regenwasseranlagen vorgesehen.
  • Im Maßnahmenprogramm „diffuse Quellen“ sind landwirtschaftliche Maßnahmen enthalten, um die Gewässerqualität weiter zu verbessern. Einen wichtigen Beitrag liefert hier auch die seit 2019 im baden-württembergischen Wassergesetz geltende weitergehende Regelung zum Gewässerrandstreifen.

Link: wrrl.baden-wuerttemberg.de

An error occurred while processing the template.
The following has evaluated to null or missing:
==> formField.getValue().getString(locale)  [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 22, column 43]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign altTag = formField.getValue()...  [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getAltText" at line 22, column 25]
----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common> 
2 
3<#assign namespace = randomNamespace /> 
4<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
5<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
6 
7<#function getDownloadLink content> 
8    <#assign 
9    dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") 
10    dlUrlHelperUtil = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper") 
11    json = jsonFactoryUtil.createJSONObject(content) 
12    fileEntryGroupId = json.getLong("groupId") 
13    fileEntryUuid = json.getString("uuid") 
14    fileEntry = dlAppService.getFileEntryByUuidAndGroupId(fileEntryUuid, fileEntryGroupId) 
15
16    <#return httpUtil.removeParameter(dlUrlHelperUtil.getDownloadURL(fileEntry, fileEntry.getLatestFileVersion(), themeDisplay, "", false, true), "download") /> 
17</#function> 
18 
19 
20<#if entries?has_content> 
21    <#assign 
22    parentLayoutPlid = layout.getParentPlid() 
23    parentLayout = layoutLocalService.fetchLayout(parentLayoutPlid)!"" 
24    parentAssetPublisherId = "" 
25    /> 
26    <#if validator.isNotNull(parentLayout)> 
27        <#if parentLayout.isTypePortlet()> 
28            <#assign parentLayoutTypePortlet = parentLayout.getLayoutType() /> 
29            <#assign parentPortlets = parentLayoutTypePortlet.getExplicitlyAddedPortlets() /> 
30            <#list parentPortlets as parentPortlet> 
31                <#if parentPortlet.getRootPortletId() == "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"> 
32                    <#assign parentAssetPublisherId = parentPortlet.getPortletId() /> 
33 
34                    <#break /> 
35                </#if> 
36            </#list> 
37        </#if> 
38    </#if> 
39 
40<#--    <#list entries as entry>--> 
41<#--        <#assign assetRenderer = entry.getAssetRenderer() />--> 
42 
43<#--        <#if assetRenderer.getClassName()=="com.liferay.journal.model.JournalArticle">--> 
44<#--            <pre>--> 
45<#--                ${assetRenderer.getArticle().getContent()}--> 
46<#--            </pre>--> 
47<#--        </#if>--> 
48<#--    </#list>--> 
49 
50<#--    <div style="background-color: red;height: 50px;color:white;">--> 
51<#--        ###########################################--> 
52<#--    </div>--> 
53 
54    <section class="slider-related" id="slider_${namespace}"> 
55        <h2 class="headline">Das könnte Sie auch interessieren</h2> 
56 
57        <div class="slides-wrapper"> 
58 
59            <div class="slides-list" aria-roledescription="Karusell"> 
60 
61                <#list entries as curEntry> 
62 
63 
64                    <#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) /> 
65                    <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
66                    <#assign renderer= curEntry.getAssetRenderer()/> 
67 
68                    <#if assetLinkBehavior != "showFullContent"> 
69                        <#assign viewURL = renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
70                    </#if> 
71 
72 
73 
74                    <#assign 
75                    linkTarget = "" 
76                    linkHref= viewURL 
77                    headline = docXml.valueOf("//dynamic-element[@name='HeadlineArticle']/dynamic-content/text()") 
78                    imgUrlExisting =    docXml.valueOf("//dynamic-element[@name='ExistingSlider']//dynamic-element[@name='Image']/dynamic-content/text()") 
79                    imgUrlNew =         docXml.valueOf("//dynamic-element[@name='NeuerSlider']//dynamic-element[@name='Image']/dynamic-content/text()") 
80                    imgLarge =          docXml.valueOf("//dynamic-element[@name='ImageLarge']/dynamic-content/text()") 
81                    imgUrl = "" 
82                    altText =           "" 
83                    Copyright = "" 
84                    /> 
85 
86                    <#if imgUrlNew!=""> 
87                        <#assign 
88                            imgUrl = getDownloadLink(imgUrlNew) + "&imageThumbnail=1" 
89                            altText = common.getAltText(imgUrlNew) 
90                            Copyright = common.getCopyrightTag("",imgUrlNew) 
91                        /> 
92 
93                    <#elseif imgUrlExisting!=""> 
94                        <#assign 
95                            imgUrl = getDownloadLink(imgUrlExisting) + "&imageThumbnail=1" 
96                            altText = common.getAltText(imgUrlExisting) 
97                            Copyright = common.getCopyrightTag("",imgUrlExisting) 
98                        /> 
99                    <#elseif imgLarge!=""> 
100                        <#assign 
101                        imgUrl = getDownloadLink(imgLarge) + "&imageThumbnail=1" 
102                        altText = common.getAltText(imgLarge) 
103                        Copyright = common.getCopyrightTag("",imgLarge) 
104                        /> 
105                    </#if> 
106 
107                    <div class="slide" role="group" aria-roledescription="Folie" aria-label="Folie ${curEntry?index + 1} von ${entries?size}"> 
108                        <div class="slide-content"> 
109                            <div class="slide-content-image image-with-caption"> 
110                                <a href="${linkHref}" ${linkTarget}> 
111                                    <#if imgUrl!=""> 
112                                        <img src="${imgUrl}" data-src="${imgUrl}" class="slide__image" alt="${altText}"/> 
113                                    <#else> 
114                                        <img src="/o/blaues-gut-theme/images/no-image_blaues-gut.png" data-src="/o/blaues-gut-theme/images/logo_bg_mobile.svg" 
115                                             class="slide__image no-image" alt=""/> 
116                                    </#if> 
117                                </a> 
118                                ${Copyright} 
119                            </div> 
120 
121 
122                            <ul class="tags"> 
123                                <#assign assetCategories = assetCategoryLocalService.getAssetEntryAssetCategories(curEntry.entryId) /> 
124                                <#list assetCategories as assetCategory> 
125                                    <#assign 
126                                    categoryURL = portletURLFactory.create(renderRequest, parentAssetPublisherId, parentLayoutPlid, "RENDER_PHASE") 
127                                    href = categoryURL.toString() 
128                                    href = httpUtil.setParameter(href, "_" + parentAssetPublisherId + "_categoryId", assetCategory.getCategoryId()?string) 
129                                    href = httpUtil.setParameter(href, "_" + parentAssetPublisherId + "_resetCur", "true") 
130                                    /> 
131 
132 
133                                    <li class="tag"> 
134                                        <a href="${href}">${assetCategory.getTitle(locale)}</a> 
135                                    </li> 
136                                </#list> 
137                            </ul> 
138                            <h4 class="title"><a href="${linkHref}" ${linkTarget}>${headline}</a></h4> 
139                        </div> 
140                    </div> 
141                </#list> 
142            </div> 
143        </div> 
144    </section> 
145 
146    <script> 
147        window.addEventListener("load", function () { 
148            function ${namespace}_updateInfo(info) { 
149                if (info.navItems) { 
150                    for (var i = 0; i < info.navItems.length; i++) { 
151                        info.navItems[i].setAttribute('aria-label', 'Folie ' + (i + 1)); 
152
153 
154                    info.navItems[info.navCurrentIndex].setAttribute('aria-label', 'Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)'); 
155
156 
157                if (info.controlsContainer) { 
158                    info.controlsContainer.setAttribute('aria-label', 'Navigationselemente'); 
159
160                if (info.prevButton) { 
161                    info.prevButton.setAttribute('aria-label', 'zur vorhergehenden Folie springen'); 
162
163                if (info.nextButton) { 
164                    info.nextButton.setAttribute('aria-label', 'zur nächsten Folie springen'); 
165
166                if (info.navContainer) { 
167                    info.navContainer.setAttribute('aria-label', 'Auswahl der Folien') 
168
169
170 
171            var slider = tns({ 
172                container: '#slider_${namespace} .slides-list', 
173                items: 1.5, 
174                slideBy: 'page', 
175                lazyload: true, 
176                lazyloadSelector: '.slide__image', 
177                loop: false, 
178                controls: false, 
179                nav: false, 
180                controlsPosition: 'bottom', 
181                navPosition: 'bottom', 
182                touch: true, 
183                mouseDrag: true, 
184                freezable: true, 
185                speed: 600, 
186                arrowKeys: true, 
187                edgePadding: 16, 
188                fixedWidth: 300, 
189                // viewportMax: 1600, 
190                controlsText: ['<span class="icon-bg icon-bg--arrow2-left"></span>', '<span class="icon-bg icon-bg--arrow2-right"></span>'], 
191                responsive: { 
192                    768: { 
193                        items: 1.5, 
194                        edgePadding: 0, 
195                        gutter: 0 
196                    }, 
197                    900: { 
198                        items: 3, 
199                        edgePadding: 0 
200                    }, 
201                    1280: { 
202                        items: 4, 
203                        controls: true 
204                    }, 
205                    1600: { 
206                        controls: true, 
207                        items: 5 
208
209                }, 
210                onInit: function (info) { 
211                    ${namespace}_updateInfo(info); 
212
213            }); 
214            slider.events.on('indexChanged', function(info) { 
215                ${namespace}_updateInfo(info); 
216            }); 
217        }); 
218    </script> 
219</#if>