OGC API Features: alle Layer (Vorerhebung bis Massnahmenblatt) als editierbare OAPIF-Layer
Seit dem 07.09.2026 bietet die API OGC API Features (Part 1/2/3/4) unter /v2/ogc. Neu: - vln_karten/ogc_layers.py: Auth-Konfiguration "APIHeader" (X-API-Key aus dem Login, kein Passwort in QGIS), GET /ogc/collections?vkz=, je Sammlung ein QgsVectorLayer(..., "OAPIF") in Gruppen (Vorerhebung / Massnahmenblaetter / Verfahren); Speicher-CRS je Sammlung (EPSG:25833 bzw. CRS84). - plugin.py: Toolbar-Aktion "Alle Layer (OGC API) laden" (run_load_ogc). - README: Weg ohne Plugin (Datenquellenverwaltung, Basic oder API-Header), Sammlungs-IDs, Schreibregeln (in place, Vorerhebung nur "bearbeitung", Massnahmenblatt blatt_*), Routenuebersicht; klassischer GeoJSON-Weg bleibt als zweiter Abschnitt. - metadata: 0.2.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,7 @@ from .layer_manager import (
|
||||
plugin_layers,
|
||||
)
|
||||
from .login_dialog import LoginDialog, SETTINGS_GROUP
|
||||
from . import ogc_layers
|
||||
|
||||
MENU_TITLE = "&VLN Karten"
|
||||
|
||||
@@ -102,6 +103,11 @@ class VlnKartenPlugin:
|
||||
self.dataset_actions.append(
|
||||
self._add_action("Aktiven Layer hochladen", self.run_upload_active_layer)
|
||||
)
|
||||
# OGC API Features (seit 07.09.2026): alle Sammlungen des Verfahrens als native,
|
||||
# editierbare OAPIF-Layer — QGIS schreibt jede Änderung selbst zurück (Part 4).
|
||||
self.dataset_actions.append(
|
||||
self._add_action("Alle Layer (OGC API) laden", self.run_load_ogc)
|
||||
)
|
||||
|
||||
self.iface.projectRead.connect(self.restore_project_selection)
|
||||
self.iface.newProjectCreated.connect(self.restore_project_selection)
|
||||
@@ -402,6 +408,40 @@ class VlnKartenPlugin:
|
||||
duration=5,
|
||||
)
|
||||
|
||||
def run_load_ogc(self):
|
||||
"""Alle Sammlungen des gewählten Verfahrens (Verfahrens-Layer, Vorerhebung,
|
||||
Maßnahmenblätter) als OAPIF-Layer laden — editierbar in QGIS, Rückschreiben je Feature."""
|
||||
if not self._ensure_logged_in():
|
||||
return
|
||||
vkz = self._current_vkz()
|
||||
if not vkz:
|
||||
self._show_error("Kein Verfahren", "Bitte zuerst ein Verfahren auswählen.")
|
||||
return
|
||||
authcfg = ogc_layers.authcfg_sicherstellen(self.client.api_key, SETTINGS_GROUP)
|
||||
if not authcfg:
|
||||
self.iface.messageBar().pushMessage(
|
||||
"VLN Karten",
|
||||
"Keine QGIS-Authentifizierungskonfiguration angelegt — QGIS fragt beim ersten "
|
||||
"Zugriff nach Anmeldename und Passwort (HTTP Basic, Manager-Login).",
|
||||
level=Qgis.Warning, duration=8)
|
||||
try:
|
||||
collections = ogc_layers.collections_laden(self.client, vkz)
|
||||
except AuthError:
|
||||
self._handle_session_expired()
|
||||
return
|
||||
except ApiError as exc:
|
||||
self._show_error("OGC API", str(exc))
|
||||
return
|
||||
if not collections:
|
||||
self._show_error("OGC API", "Für dieses Verfahren gibt es keine Sammlungen "
|
||||
"(oder keine Berechtigung).")
|
||||
return
|
||||
geladen, fehler = ogc_layers.layer_hinzufuegen(
|
||||
self.iface, self.client.base_url, vkz, self.combo.currentText(), collections, authcfg)
|
||||
if fehler:
|
||||
self._show_error("OGC API — nicht geladen",
|
||||
"\n".join("%s: %s" % f for f in fehler))
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Hilfsfunktionen
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user