verfahrensgebiet aus Flst
This commit is contained in:
+84
-22
@@ -13,8 +13,12 @@ from sn_basis.modules.Pruefmanager import Pruefmanager
|
||||
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
|
||||
from qgis.utils import iface
|
||||
|
||||
from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis import verfahrensgebiet_alkis, LoadStatus
|
||||
from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis import LoadStatus
|
||||
from sn_verfahrensgebiet.functions.flurstueck_alkis import flurstueck_alkis
|
||||
from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis_komplett import verfahrensgebiet_alkis_komplett
|
||||
# TODO Grenzpunkt-Pipeline: Import reaktivieren, sobald grenzpunkt_alkis.py
|
||||
# mit der neuen Pipeline (PunktortTA → istTeilVon → Einzel-URN) umgeschrieben wurde.
|
||||
# from sn_verfahrensgebiet.functions.grenzpunkt_alkis import grenzpunkt_alkis
|
||||
from sn_verfahrensgebiet.functions.verfahrensgebiet_edit_service import (
|
||||
pruefe_flurstueck_layer,
|
||||
pruefe_auswahl,
|
||||
@@ -87,6 +91,20 @@ class WorkingTab(QWidget):
|
||||
row_flurst_buttons.addWidget(self.btn_flurst_shape)
|
||||
layout.addLayout(row_flurst_buttons)
|
||||
|
||||
# Abschnitt 2b: Grenzpunkte
|
||||
row_grenz_header = QHBoxLayout()
|
||||
lbl_grenz = QLabel("<b>Grenzpunkte</b>")
|
||||
self.haken_grenz = self._haken_label()
|
||||
row_grenz_header.addWidget(lbl_grenz)
|
||||
row_grenz_header.addWidget(self.haken_grenz)
|
||||
row_grenz_header.addStretch()
|
||||
layout.addLayout(row_grenz_header)
|
||||
|
||||
row_grenz_buttons = QHBoxLayout()
|
||||
self.btn_grenz_alkis = QPushButton("Grenzpunkte aus ALKIS laden")
|
||||
row_grenz_buttons.addWidget(self.btn_grenz_alkis)
|
||||
layout.addLayout(row_grenz_buttons)
|
||||
|
||||
# Abschnitt 3: Verfahrensgebiet erstellen
|
||||
row_verf_erstellen_header = QHBoxLayout()
|
||||
lbl_verf_erstellen = QLabel("<b>Verfahrensgebiet erstellen</b>")
|
||||
@@ -110,6 +128,7 @@ class WorkingTab(QWidget):
|
||||
# Signale verbinden
|
||||
self.btn_verf_alkis.clicked.connect(self.handle_verf_alkis)
|
||||
self.btn_flurst_alkis.clicked.connect(self.handle_flurst_alkis)
|
||||
self.btn_grenz_alkis.clicked.connect(self.handle_grenz_alkis)
|
||||
self.btn_verf_aus_auswahl.clicked.connect(self.handle_verf_aus_auswahl)
|
||||
self.btn_verf_aus_liste.clicked.connect(self.handle_verf_aus_liste)
|
||||
# self.btn_verf_shape.clicked.connect(self.handle_verf_shape)
|
||||
@@ -118,36 +137,43 @@ class WorkingTab(QWidget):
|
||||
# Beim Init: aktuelle Verfahrensgebiet-Layer-ID laden und im Dropdown anzeigen
|
||||
self._restore_verf_layer_selection()
|
||||
|
||||
def handle_verf_alkis(self):
|
||||
def handle_verf_alkis(self) -> None:
|
||||
"""Startet den vollständigen VG-Lade-Workflow (ALKIS → Gemarkungen → Flurstücke → Verschneidung).
|
||||
|
||||
Delegiert an :func:`~sn_verfahrensgebiet.functions.verfahrensgebiet_alkis_komplett.verfahrensgebiet_alkis_komplett`.
|
||||
Nach Erfolg werden enriched VG-Layer und Flurstücks-Layer ins Projekt eingefügt,
|
||||
Styles angewendet und die UI-Elemente aktualisiert.
|
||||
"""
|
||||
self._set_busy(self.btn_verf_alkis, True, "Aus ALKIS laden")
|
||||
try:
|
||||
layer, status = verfahrensgebiet_alkis(self)
|
||||
if not layer or not layer.isValid():
|
||||
enriched_layer, flst_layer, status = verfahrensgebiet_alkis_komplett(self)
|
||||
|
||||
if status == LoadStatus.NONE or not enriched_layer:
|
||||
set_verfahrensgebiet_layer_id("")
|
||||
return
|
||||
|
||||
if status in (LoadStatus.FIRST, LoadStatus.RELOAD):
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
iface.mapCanvas().setExtent(layer.extent())
|
||||
project = QgsProject.instance()
|
||||
|
||||
apply_style(layer, "verfahrensgebiet.qml")
|
||||
iface.mapCanvas().refresh()
|
||||
self.setze_haken(self.haken_verf, True)
|
||||
# Flurstücks-Layer ins Projekt (sofern neu geladen)
|
||||
if flst_layer and flst_layer.isValid():
|
||||
existing_flst = project.mapLayersByName(flst_layer.name())
|
||||
if not existing_flst:
|
||||
project.addMapLayer(flst_layer)
|
||||
apply_style(flst_layer, "GIS_Flst_Beschriftung_ALKIS_NAS.qml")
|
||||
self.setze_haken(self.haken_flurst, True)
|
||||
|
||||
self.verf_layer_combo.setLayer(layer)
|
||||
self._on_verf_layer_changed(layer)
|
||||
# Enriched VG-Layer ins Projekt
|
||||
project.addMapLayer(enriched_layer)
|
||||
apply_style(enriched_layer, "verfahrensgebiet.qml")
|
||||
iface.mapCanvas().setExtent(enriched_layer.extent())
|
||||
iface.mapCanvas().refresh()
|
||||
self.setze_haken(self.haken_verf, True)
|
||||
|
||||
msg = "erstmalig geladen" if status == LoadStatus.FIRST else "neu geladen"
|
||||
success("Verfahrensgebiet", f"Layer wurde {msg}.", duration=5)
|
||||
self.verf_layer_combo.setLayer(enriched_layer)
|
||||
self._on_verf_layer_changed(enriched_layer)
|
||||
|
||||
elif status == LoadStatus.KEEP:
|
||||
self.verf_layer_combo.setLayer(layer)
|
||||
self._on_verf_layer_changed(layer)
|
||||
info("Verfahrensgebiet", "Vorhandener Layer wurde behalten.", duration=4)
|
||||
|
||||
elif status == LoadStatus.NONE:
|
||||
self._on_verf_layer_changed(None)
|
||||
warning("Verfahrensgebiet", "Layer konnte nicht geladen werden.", duration=None)
|
||||
msg = "erstmalig geladen" if status == LoadStatus.FIRST else "neu geladen"
|
||||
success("Verfahrensgebiet", f"Layer wurde {msg} (inkl. Flurstücksverschneidung).", duration=5)
|
||||
|
||||
finally:
|
||||
self._set_busy(self.btn_verf_alkis, False, "Aus ALKIS laden")
|
||||
@@ -368,3 +394,39 @@ class WorkingTab(QWidget):
|
||||
"Die Funktion 'Aus Liste' steht in einer zukünftigen Version zur Verfügung.",
|
||||
parent=self,
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Grenzpunkt-Handler
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def handle_grenz_alkis(self) -> None:
|
||||
"""Lädt Grenzpunkte (AX_PunktortTA + AX_Grenzpunkt) aus ALKIS.
|
||||
|
||||
TODO Grenzpunkt-Pipeline: Implementierung ausstehend.
|
||||
Neue Pipeline: VG-Geometrie → PunktortTA (spatial filter) →
|
||||
istTeilVon-Attribute → Grenzpunkt per Einzel-URN laden.
|
||||
Bis dahin ist dieser Handler deaktiviert.
|
||||
"""
|
||||
# TODO Grenzpunkt-Pipeline: Körper reaktivieren, sobald grenzpunkt_alkis.py
|
||||
# mit der neuen Pipeline umgeschrieben wurde.
|
||||
#
|
||||
# self._set_busy(self.btn_grenz_alkis, True, "Grenzpunkte aus ALKIS laden")
|
||||
# try:
|
||||
# punktort_layer, grenzpunkt_layer = grenzpunkt_alkis(self)
|
||||
#
|
||||
# if grenzpunkt_layer and grenzpunkt_layer.isValid():
|
||||
# iface.mapCanvas().refresh()
|
||||
# self.setze_haken(self.haken_grenz, True)
|
||||
# success("Grenzpunkte", "Grenzpunkte erfolgreich geladen.", duration=5)
|
||||
# elif punktort_layer and punktort_layer.isValid():
|
||||
# iface.mapCanvas().refresh()
|
||||
# self.setze_haken(self.haken_grenz, True)
|
||||
# info(
|
||||
# "Grenzpunkte",
|
||||
# "PunktortTA-Layer geladen. Grenzpunkt-IDs konnten nicht aufgelöst werden.",
|
||||
# duration=6,
|
||||
# )
|
||||
# finally:
|
||||
# self._set_busy(self.btn_grenz_alkis, False, "Grenzpunkte aus ALKIS laden")
|
||||
from sn_basis.functions.message_wrapper import warning as _warn
|
||||
_warn("Grenzpunkte", "Grenzpunkt-Pipeline ist noch nicht implementiert.", duration=5)
|
||||
|
||||
Reference in New Issue
Block a user