verfahrensgebiet aus Flst
This commit is contained in:
@@ -60,23 +60,28 @@ def _check_existing_layer(tab_widget):
|
||||
|
||||
def verfahrensgebiet_alkis(tab_widget):
|
||||
"""Lädt Verfahrensgebiet aus ALKIS-WFS basierend auf Verfahrensnummer.
|
||||
|
||||
|
||||
Args:
|
||||
tab_widget: Parent-Widget für Dialoge und Meldungen
|
||||
|
||||
|
||||
Returns:
|
||||
Tuple[Optional[QgsVectorLayer], LoadStatus]: Geladener Layer und Status
|
||||
Tuple[Optional[QgsVectorLayer], LoadStatus, List[QgsFeature]]:
|
||||
Geladener Memory-Layer, Lade-Status und Liste der Roh-WFS-Features
|
||||
(für geometriebasierte Weiterverarbeitung, z.B. Gemarkungsschlüssel-
|
||||
Ermittlung via Spatial-Join). Bei Abbruch oder Fehler: ``(None,
|
||||
LoadStatus.NONE, [])``. Bei ``LoadStatus.KEEP`` werden keine
|
||||
WFS-Features neu geladen; die Feature-Liste ist in diesem Fall leer.
|
||||
"""
|
||||
verfahrensnummer = get_variable("verfahrensnummer")
|
||||
if not verfahrensnummer:
|
||||
QMessageBox.critical(tab_widget, "Fehler",
|
||||
"In den Projekteigenschaften ist noch keine Verfahrensnummer eingetragen!")
|
||||
return None, LoadStatus.NONE
|
||||
return None, LoadStatus.NONE, []
|
||||
|
||||
# Vorhandenen Layer prüfen
|
||||
existing, status = _check_existing_layer(tab_widget)
|
||||
if status == LoadStatus.KEEP:
|
||||
return existing, status
|
||||
return existing, status, []
|
||||
|
||||
# WFS mit Filter laden
|
||||
wfs_uri_find = (
|
||||
@@ -88,18 +93,18 @@ def verfahrensgebiet_alkis(tab_widget):
|
||||
|
||||
if not temp_layer.isValid():
|
||||
QMessageBox.critical(tab_widget, "Fehler", "Layer konnte nicht geladen werden.")
|
||||
return None, LoadStatus.NONE
|
||||
return None, LoadStatus.NONE, []
|
||||
|
||||
features = list(temp_layer.getFeatures())
|
||||
if not features:
|
||||
QMessageBox.critical(tab_widget, "Fehler",
|
||||
f"Verfahrenskennzeichen {verfahrensnummer} nicht im WFS gefunden.")
|
||||
return None, LoadStatus.NONE
|
||||
return None, LoadStatus.NONE, []
|
||||
|
||||
union_geom = QgsGeometry.unaryUnion([f.geometry() for f in features])
|
||||
if union_geom is None or union_geom.isEmpty():
|
||||
QMessageBox.critical(tab_widget, "Fehler", "Keine Geometrien zum Verschmelzen gefunden.")
|
||||
return None, LoadStatus.NONE
|
||||
return None, LoadStatus.NONE, []
|
||||
|
||||
# Memory-Layer erzeugen
|
||||
crs = temp_layer.crs().authid()
|
||||
@@ -114,5 +119,5 @@ def verfahrensgebiet_alkis(tab_widget):
|
||||
pr.addFeatures([feat_union])
|
||||
memory_layer.updateExtents()
|
||||
|
||||
# Status: FIRST oder RELOAD
|
||||
return memory_layer, status
|
||||
# Status: FIRST oder RELOAD; features für Gemarkungsermittlung weitergeben
|
||||
return memory_layer, status, features
|
||||
|
||||
Reference in New Issue
Block a user