grenzpunktemit 200m puffer um verfahrensgebiet laden

This commit is contained in:
2026-05-01 23:32:28 +02:00
parent 821ea4ec2b
commit 00ee470e08
2 changed files with 1265 additions and 70 deletions
File diff suppressed because it is too large Load Diff
+57 -31
View File
@@ -16,9 +16,8 @@ from qgis.utils import iface
from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis import LoadStatus from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis import LoadStatus
from sn_verfahrensgebiet.functions.flurstueck_alkis import flurstueck_alkis from sn_verfahrensgebiet.functions.flurstueck_alkis import flurstueck_alkis
from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis_komplett import verfahrensgebiet_alkis_komplett from sn_verfahrensgebiet.functions.verfahrensgebiet_alkis_komplett import verfahrensgebiet_alkis_komplett
# TODO Grenzpunkt-Pipeline: Import reaktivieren, sobald grenzpunkt_alkis.py from sn_verfahrensgebiet.functions.grenzpunkt_alkis import grenzpunkte_gemarkungsweise
# mit der neuen Pipeline (PunktortTA → istTeilVon → Einzel-URN) umgeschrieben wurde. from sn_verfahrensgebiet.functions.gemarkung_alkis import gemarkung_schluessel_und_namen_von_vg_geometrie
# from sn_verfahrensgebiet.functions.grenzpunkt_alkis import grenzpunkt_alkis
from sn_verfahrensgebiet.functions.verfahrensgebiet_edit_service import ( from sn_verfahrensgebiet.functions.verfahrensgebiet_edit_service import (
pruefe_flurstueck_layer, pruefe_flurstueck_layer,
pruefe_auswahl, pruefe_auswahl,
@@ -405,36 +404,63 @@ class WorkingTab(QWidget):
# ------------------------------------------------------------------ # ------------------------------------------------------------------
def handle_grenz_alkis(self) -> None: def handle_grenz_alkis(self) -> None:
"""Lädt Grenzpunkte (AX_PunktortTA + AX_Grenzpunkt) aus ALKIS. """Lädt Grenzpunkte gemarkungsweise aus ALKIS.
TODO Grenzpunkt-Pipeline: Implementierung ausstehend. Verwendet denselben Gemarkungsfilter wie "Verfahrensgebiet aus ALKIS laden":
Neue Pipeline: VG-Geometrie → PunktortTA (spatial filter) → Die Gemarkungsschlüssel werden per Spatial-Join aus der Geometrie des
istTeilVon-Attribute → Grenzpunkt per Einzel-URN laden. aktuell gewählten Verfahrensgebiet-Layers abgeleitet.
Bis dahin ist dieser Handler deaktiviert.
""" """
# TODO Grenzpunkt-Pipeline: Körper reaktivieren, sobald grenzpunkt_alkis.py # Verfahrensgebiet-Layer aus dem Dropdown holen
# mit der neuen Pipeline umgeschrieben wurde. vg_layer = self.verf_layer_combo.currentLayer()
# if not vg_layer or not vg_layer.isValid():
# self._set_busy(self.btn_grenz_alkis, True, "Grenzpunkte aus ALKIS laden") warning(
# try: "Grenzpunkte",
# punktort_layer, grenzpunkt_layer = grenzpunkt_alkis(self) "Kein Verfahrensgebiet-Layer gewählt. Bitte zuerst ein Verfahrensgebiet laden.",
# duration=6,
# if grenzpunkt_layer and grenzpunkt_layer.isValid(): )
# iface.mapCanvas().refresh() return
# self.setze_haken(self.haken_grenz, True)
# success("Grenzpunkte", "Grenzpunkte erfolgreich geladen.", duration=5) # Geometrie des ersten Features als Suchgeometrie
# elif punktort_layer and punktort_layer.isValid(): feats = list(vg_layer.getFeatures())
# iface.mapCanvas().refresh() if not feats:
# self.setze_haken(self.haken_grenz, True) warning("Grenzpunkte", "Verfahrensgebiet-Layer enthält keine Features.", duration=5)
# info( return
# "Grenzpunkte",
# "PunktortTA-Layer geladen. Grenzpunkt-IDs konnten nicht aufgelöst werden.", # Geometrie über alle Features vereinen
# duration=6, from qgis.core import QgsGeometry # type: ignore[import]
# ) vg_geom = QgsGeometry.unaryUnion([f.geometry() for f in feats if f.hasGeometry()])
# finally:
# self._set_busy(self.btn_grenz_alkis, False, "Grenzpunkte aus ALKIS laden") if not vg_geom or vg_geom.isEmpty():
from sn_basis.functions.message_wrapper import warning as _warn warning("Grenzpunkte", "Verfahrensgebiet-Layer hat keine Geometrie.", duration=5)
_warn("Grenzpunkte", "Grenzpunkt-Pipeline ist noch nicht implementiert.", duration=5) return
# Gemarkungsschlüssel per Spatial-Join ermitteln (identisch zu VG-Workflow)
schluessel_namen = gemarkung_schluessel_und_namen_von_vg_geometrie(vg_geom)
schluessel_liste = [nr for nr, _ in schluessel_namen]
if not schluessel_liste:
warning(
"Grenzpunkte",
"Keine Gemarkungen für das Verfahrensgebiet gefunden. "
"Bitte Netzwerkverbindung prüfen.",
duration=6,
)
return
self._set_busy(self.btn_grenz_alkis, True, "Grenzpunkte aus ALKIS laden")
try:
joined_layer = grenzpunkte_gemarkungsweise(self, schluessel_liste, vg_geom=vg_geom)
if joined_layer and joined_layer.isValid():
iface.mapCanvas().refresh()
self.setze_haken(self.haken_grenz, True)
success(
"Grenzpunkte",
f"Grenzpunkte erfolgreich geladen ({joined_layer.featureCount()} Objekte).",
duration=5,
)
finally:
self._set_busy(self.btn_grenz_alkis, False, "Grenzpunkte aus ALKIS laden")
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------