Verfahrensgebietsprüfung auf Knickpunkte umgestellt
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -12,13 +12,18 @@ optionaler Umringsprüfung:
|
||||
6. Flächenvergleich zwischen BROR-Objekt und abgeleitetem Verfahrensgebiet.
|
||||
|
||||
- **Übereinstimmung** (≤ Toleranz): modale OK-Meldung, Ablauf beendet.
|
||||
- **Abweichung**: Ja/Nein-Abfrage für Detailprüfung.
|
||||
- **Abweichung**: 3-Optionen-Dialog (Detailprüfung / Als VG laden / Abbrechen).
|
||||
|
||||
7. Optionale Umringsprüfung (Variante 1):
|
||||
7. Bei Wahl „Als VG laden":
|
||||
|
||||
- BROR-Umring gegen Flurstücksgrenzen vergleichen.
|
||||
- Ergebnislayer (grün/rot) ins Projekt einfügen.
|
||||
- Abschlussmeldung mit Konfliktanzahl.
|
||||
- BROR-Objekt direkt mit VG-Namen ins Projekt übernehmen.
|
||||
|
||||
8. Bei Wahl „Detailprüfung" (knickpunktbasiert):
|
||||
|
||||
- Grenzpunkte (AX_PunktortTA) per BBox laden.
|
||||
- Knickpunkte des BROR mit PunktortTA vergleichen (grün/rot/orange).
|
||||
- Ergebnislayer (Punkte) ins Projekt einfügen.
|
||||
- Abschlussmeldung mit Zählung.
|
||||
|
||||
Das BROR-Objekt (``AX_BauRaumOderBodenordnungsrecht``) bleibt bei Erfolg als
|
||||
temporärer Layer ``BauRaumOrdnungsrecht (ALKIS)`` im Projekt erhalten.
|
||||
@@ -42,7 +47,7 @@ from sn_basis.functions.variable_wrapper import get_variable
|
||||
from sn_basis.functions.dialog_wrapper import (
|
||||
create_progress_dialog,
|
||||
show_info_dialog,
|
||||
ask_yes_no,
|
||||
ask_detailpruefung_oder_vg_laden,
|
||||
)
|
||||
|
||||
from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis import (
|
||||
@@ -57,7 +62,11 @@ from sn_verfahrensgebiet.functions.verfahrensgebiet_edit_service import (
|
||||
erstelle_verfahrensgebiet_aus_auswahl,
|
||||
VERF_LAYER_NAME,
|
||||
)
|
||||
from sn_verfahrensgebiet.functions.umringspruefung import umringspruefung
|
||||
from sn_verfahrensgebiet.functions.grenzpunkt_alkis import lade_punktort_ta
|
||||
from sn_verfahrensgebiet.functions.knickpunkt_pruefung import (
|
||||
knickpunkt_pruefung,
|
||||
_extrahiere_knickpunkte,
|
||||
)
|
||||
|
||||
# Feldname für das Verfahrenskennzeichen im enriched Layer
|
||||
FELD_VKZ = "verfahrensnummer"
|
||||
@@ -417,51 +426,96 @@ def verfahrensgebiet_alkis_komplett(
|
||||
return enriched_layer, flst_layer, alkis_vg_layer, vg_status
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Flächenabweichung → Nutzerabfrage für Detailprüfung
|
||||
# Flächenabweichung → 3-Optionen-Dialog
|
||||
# ------------------------------------------------------------------
|
||||
progress.close()
|
||||
diff = abs(bror_flaeche - vg_flaeche)
|
||||
starten = ask_yes_no(
|
||||
entscheidung = ask_detailpruefung_oder_vg_laden(
|
||||
tab_widget,
|
||||
"Abweichung erkannt",
|
||||
f"Abweichung zwischen BauRaumOrdnungsrecht-Objekt und abgeleitetem "
|
||||
f"Verfahrensgebiet erkannt. Detailprüfung starten?\n\n"
|
||||
f"Verfahrensgebiet erkannt.\n\n"
|
||||
f"BauRaumOrdnungsrecht: {bror_flaeche:.2f} m²\n"
|
||||
f"Verfahrensgebiet: {vg_flaeche:.2f} m²\n"
|
||||
f"Differenz: {diff:.2f} m²",
|
||||
default=True,
|
||||
parent=tab_widget,
|
||||
f"Differenz: {diff:.2f} m²\n\n"
|
||||
f"Wie möchten Sie fortfahren?",
|
||||
)
|
||||
|
||||
if not starten:
|
||||
if entscheidung == "abbrechen":
|
||||
abgeschlossen = True
|
||||
return enriched_layer, flst_layer, alkis_vg_layer, vg_status
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Umringsprüfung (Variante 1: linienbasierter Umringvergleich)
|
||||
# Option: Bodenordnungsobjekt direkt als Verfahrensgebiet laden
|
||||
# ------------------------------------------------------------------
|
||||
umring_progress = create_progress_dialog(
|
||||
3, "Detailprüfung (Umringe)", "Starte Umringsprüfung …"
|
||||
if entscheidung == "als_vg_laden":
|
||||
# Layer bleibt im Projekt – nur umbenennen. working_tab überspringt
|
||||
# addMapLayer wenn der Layer bereits registriert ist.
|
||||
alkis_vg_layer.setName(VERF_LAYER_NAME)
|
||||
bror_was_added_by_us = False
|
||||
abgeschlossen = True
|
||||
return alkis_vg_layer, None, None, vg_status
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Option: Detailprüfung (knickpunktbasiert)
|
||||
# ------------------------------------------------------------------
|
||||
# Knickpunkte vorab extrahieren, um Schrittanzahl zu bestimmen
|
||||
knickpunkte = _extrahiere_knickpunkte(alkis_vg_layer)
|
||||
n_knick = len(knickpunkte)
|
||||
# Gesamtschritte: 0=Start, 1=PTA-Index, 2…n+1=Knickpunkte, n+2=Orange, n+3=Fertig
|
||||
# + 1 Schritt vorab für Grenzpunkte laden
|
||||
gesamt_schritte = n_knick + 5
|
||||
|
||||
detail_progress = create_progress_dialog(
|
||||
gesamt_schritte,
|
||||
"Detailprüfung (Knickpunkte)",
|
||||
"Schritt 1: Grenzpunkte laden …",
|
||||
)
|
||||
detail_progress.set_value(0)
|
||||
|
||||
# Schritt 1: PunktortTA gemarkungsweise laden (Hits + 5000er-Batches)
|
||||
punktort_layer = lade_punktort_ta(
|
||||
vorgabe_schluessel, vg_geom, progress=detail_progress
|
||||
)
|
||||
|
||||
ergebnis_layer, konflikt_anzahl = umringspruefung(
|
||||
alkis_vg_layer, flst_layer, progress=umring_progress
|
||||
)
|
||||
|
||||
if umring_progress.is_canceled():
|
||||
umring_progress.close()
|
||||
if detail_progress.is_canceled():
|
||||
detail_progress.close()
|
||||
abgeschlossen = True
|
||||
return enriched_layer, flst_layer, alkis_vg_layer, vg_status
|
||||
|
||||
umring_progress.set_value(3)
|
||||
umring_progress.close()
|
||||
detail_progress.set_value(1)
|
||||
|
||||
if punktort_layer is None:
|
||||
detail_progress.close()
|
||||
abgeschlossen = True
|
||||
return enriched_layer, flst_layer, alkis_vg_layer, vg_status
|
||||
|
||||
# Schritte 2…Ende: Knickpunktprüfung
|
||||
ergebnis_layer, identisch, kein_pta, fehlender_knick = knickpunkt_pruefung(
|
||||
alkis_vg_layer,
|
||||
punktort_layer,
|
||||
flst_layer,
|
||||
progress=detail_progress,
|
||||
knickpunkte=knickpunkte,
|
||||
)
|
||||
|
||||
if detail_progress.is_canceled():
|
||||
detail_progress.close()
|
||||
abgeschlossen = True
|
||||
return enriched_layer, flst_layer, alkis_vg_layer, vg_status
|
||||
|
||||
detail_progress.set_value(gesamt_schritte)
|
||||
detail_progress.close()
|
||||
|
||||
if ergebnis_layer and ergebnis_layer.isValid():
|
||||
project.addMapLayer(ergebnis_layer)
|
||||
|
||||
show_info_dialog(
|
||||
"Detailprüfung",
|
||||
f"Detailprüfung abgeschlossen. "
|
||||
f"Es wurden {konflikt_anzahl} Konfliktstellen identifiziert.",
|
||||
"Detailprüfung abgeschlossen",
|
||||
f"Knickpunkte geprüft: {n_knick}\n"
|
||||
f" Identisch (grün): {identisch}\n"
|
||||
f" Kein PunktortTA (rot): {kein_pta}\n"
|
||||
f" Fehlende Knickpunkte (orange): {fehlender_knick}",
|
||||
parent=tab_widget,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user