Beteiligungsprüfung portiert (ohne automatisches Hintergrund-Laden)
Portiert aus origin/unstable (Feature "Beteiligung prüfen": Abgleich einer BI-Server-CSV-Exportliste mit dem ALKIS-Flurstücksbestand des Verfahrensgebiets), bewusst OHNE den dortigen silent-Modus für verfahrensgebiet_alkis()/verfahrensgebiet_alkis_komplett(): - try1 (Verfahrensgebiet-Layer mit Kennzeichen vorhanden) bleibt unverändert – schneller Mengenvergleich ohne WFS-Zugriff. - try2 (Layer vorhanden, aber ohne verwertbare Kennzeichen) und try3 (kein Layer vorhanden) laden nicht mehr automatisch/silent über die komplette ALKIS-Pipeline, sondern fordern den Nutzer per Meldung auf, das Verfahrensgebiet zunächst regulär über "Aus ALKIS laden" zu laden und die Beteiligungsprüfung danach erneut zu starten (landet dann automatisch bei try1). Grund: ein automatischer Durchlauf ohne Nutzerinteraktion (mehrdeutige BROR-Treffer, Flächenabweichungen) hat sich in der Praxis nicht als zuverlässig genug erwiesen. - verfahrensgebiet_alkis.py/verfahrensgebiet_alkis_komplett.py bleiben dadurch unangetastet – kein silent-Parameter, kein Konflikt mit dem heutigen Zwei-Dialog-Split und dem Landkreis-Fallback. - Neuer Button "Beteiligung prüfen" in working_tab.py, delegiert an beteiligung_pruefen(). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
7b48d29d56
commit
d5db43bc57
@@ -26,6 +26,10 @@ from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis_komplett import (
|
||||
BROR_LAYER_NAME,
|
||||
)
|
||||
from sn_verfahrensgebiet.functions.verfahrensgebiet_shape_komplett import verfahrensgebiet_shape_komplett
|
||||
from sn_verfahrensgebiet.functions.beteiligung_pruefung import (
|
||||
beteiligung_pruefen,
|
||||
BeteiligungPruefungFehler,
|
||||
)
|
||||
from sn_verfahrensgebiet.functions.grenzpunkt_alkis import grenzpunkte_gemarkungsweise, JOINED_LAYER_NAME
|
||||
from sn_verfahrensgebiet.functions.gemarkung_alkis import (
|
||||
gemarkung_schluessel_und_namen_von_vg_geometrie,
|
||||
@@ -75,6 +79,15 @@ class WorkingTab(QWidget):
|
||||
row_verf_buttons.addWidget(self.btn_verf_shape)
|
||||
layout.addLayout(row_verf_buttons)
|
||||
|
||||
row_beteiligung_buttons = QHBoxLayout()
|
||||
self.btn_beteiligung_pruefen = QPushButton("Beteiligung prüfen")
|
||||
self.btn_beteiligung_pruefen.setToolTip(
|
||||
"CSV-Export aus dem BI-Server verwenden. benötigte Spalten: "
|
||||
"FLA_Verfahren-VEF_VKZF, FLA-Flurstuecke-Flurstueck, FLA_Beteiligung"
|
||||
)
|
||||
row_beteiligung_buttons.addWidget(self.btn_beteiligung_pruefen)
|
||||
layout.addLayout(row_beteiligung_buttons)
|
||||
|
||||
# Abschnitt 1b: Verfahrensgebiet-Layer auswählen
|
||||
row_layer_label = QHBoxLayout()
|
||||
lbl_layer = QLabel("Oder: Verfahrensgebiet-Layer auswählen")
|
||||
@@ -174,6 +187,7 @@ class WorkingTab(QWidget):
|
||||
self.btn_verf_aus_liste.clicked.connect(self.handle_verf_aus_liste)
|
||||
self.btn_verf_shape.clicked.connect(self.handle_verf_shape)
|
||||
# self.btn_flurst_shape.clicked.connect(self.handle_flurst_shape)
|
||||
self.btn_beteiligung_pruefen.clicked.connect(self.handle_beteiligung_pruefen)
|
||||
|
||||
# Beim Init: aktuelle Verfahrensgebiet-Layer-ID laden und im Dropdown anzeigen
|
||||
self._restore_verf_layer_selection()
|
||||
@@ -285,6 +299,42 @@ class WorkingTab(QWidget):
|
||||
finally:
|
||||
self._set_busy(self.btn_verf_shape, False, "Aus Shape laden")
|
||||
|
||||
def handle_beteiligung_pruefen(self) -> None:
|
||||
"""Gleicht eine BI-Server-CSV-Beteiligungsliste mit dem Verfahrensgebiet ab.
|
||||
|
||||
Delegiert an :func:`~sn_verfahrensgebiet.functions.beteiligung_pruefung.beteiligung_pruefen`.
|
||||
Ist noch kein (verwertbares) Verfahrensgebiet geladen, fordert die
|
||||
Funktion den Nutzer per Meldung auf, es zunächst über "Aus ALKIS
|
||||
laden" zu laden – es gibt kein automatisches Laden im Hintergrund.
|
||||
Sonst werden ein oder mehrere Ergebnis-Layer ins Projekt eingefügt,
|
||||
gestylt und eine Statistik als Messagebox angezeigt.
|
||||
"""
|
||||
self._set_busy(self.btn_beteiligung_pruefen, True, "Beteiligung prüfen")
|
||||
try:
|
||||
try:
|
||||
ergebnis = beteiligung_pruefen(self)
|
||||
except BeteiligungPruefungFehler as exc:
|
||||
QMessageBox.critical(self, "Beteiligung prüfen", str(exc))
|
||||
return
|
||||
|
||||
if ergebnis is None:
|
||||
return # Nutzerabbruch des Dateidialogs
|
||||
|
||||
project = QgsProject.instance()
|
||||
for layer, style_name in ergebnis.layers:
|
||||
if layer is None or not layer.isValid():
|
||||
continue
|
||||
if not project.mapLayer(layer.id()):
|
||||
project.addMapLayer(layer)
|
||||
if style_name:
|
||||
apply_style(layer, style_name)
|
||||
|
||||
iface.mapCanvas().refresh()
|
||||
QMessageBox.information(self, "Beteiligung prüfen", ergebnis.statistik_text)
|
||||
|
||||
finally:
|
||||
self._set_busy(self.btn_beteiligung_pruefen, False, "Beteiligung prüfen")
|
||||
|
||||
def _set_busy(self, button: QPushButton, busy: bool, original_text: str = "Aus ALKIS laden") -> None:
|
||||
"""Setzt den Busy-State eines Buttons.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user