﻿Für manche Anwendungen könnte es wünschenswert sein, an offene Bestände grenzenden Lücken zu bereinigen, da sie durch Randeffekte entstehen 
oder einen Übergang zwischen offenen und geschlossenen Beständen darstellen. Ein Ansatz hierzu bietet das zusätzliche Skript „luecken_aufloesen.py“. 
Dieses Skript wird nicht auf die Daten im F³-Projekt angewandt um die Ergebnisse der Lückenerkennung weiterhin universell nutzen zu können. 
Es soll jedoch als Hilfestellung dienen, falls für manche Anwendungen eine Verschmelzung dieser Lücken in die benachbarten offenen Bestände notwendig ist.  
Mit „luecken_aufloesen.py“ werden Lückenflächen erfasst, deren gemeinsame Grenze mit offenen Beständen mindestens 25% ihres Gesamtumfangs ausmacht. 
Diese Flächen werden dann der Klasse „1“ offene Bestände zugeschlagen. Dies geschieht über die im Skript luecken_aufloesen.py implementierte Funktion „join_border_based“. 
In dieser Funktion werden die Rasterdaten basierend auf den Klassenwert in Vektordaten umgewandelt:

	a.	RasterToPolygon_conversion(raster_luecke, polygons, "NO_SIMPLIFY", "VALUE")
	
In den Vektordaten werden dann gemeinsame Grenzabschnitte zwischen Klasse „3“ (Lücken) und Klasse „1“ (offene Bestände) gefunden (b) 
und mit dem Umfang des jeweiligen Lückenpolygons ins Verhältnis gesetzt. 

	b.	Intersect_analysis([polygons_open_forest, polygons_gaps], borders, "", "", "LINE")
	
Alle Lücken, für die gilt gemeinsame Grenze ≥ Umfang*0,25 werden selektiert. Diesen wird der Klassenwert „1“ zugewiesen (c) bevor aus ihnen wieder ein Raster abgeleitet wird (d).

	c.	CalculateField_management(selected_gaps, "gridcode", "1", "PYTHON_9.3", "")
	d.	PolygonToRaster_conversion(selected_gaps, "gridcode", selected_gaps_raster, "", "", "1")
	
Dabei erhalten nur Pixel im Bereich der selektierten Lücken einen Wert (Klassenwert „1“), alle übrigen Pixel erhalten einen „NoData“-Wert. 
Mit “Map Algebra” werden dann die Pixel des Eingaberasters (raster_luecke) denen ein Wert (≠ NoData) im Raster mit den selektierten Lücken (selected_gaps_raster; s. d) 
gegenübersteht durch diesen ersetzt:

	e.	Con(IsNull(selected_gaps_raster), raster_luecke, selected_gaps_raster)

Es wird empfohlen dieses Skript auf gepufferte Daten anzuwenden, damit es an den Kachelrändern nicht zu Fehlern durch Randeffekte kommt. Das heißt, es müsste eine Möglichkeit 
geschaffen werden, die Ergebnisse der Lückenklassifizierung aus dem F³-Projekt zu puffern. 


Erstelldatum: 14.06.2019
Datum letzte Änderung: 22.01.2020 (Umbenennung von dissolve_gaps.py zu luecken_aufloesen.py)
Autorin: Melanie Kirchhöfer