# ALKIS 6 → ALKIS 7: Vergleich und Anpassungsbedarf in den Plugins Stand 04.09.2026. Vorschlag/Prüfliste, noch kein Beschluss. Betroffen ist ausschließlich **`sn_verfahrensgebiet`** (`functions/*_alkis*.py`); `sn_plan41` spricht kein ALKIS an. „ALKIS 6/7" meint die GeoInfoDok-Version des AAA-Modells: ALKIS 6 = **GID 6.0**, ALKIS 7 = **GID 7.1**. Das Referenzmaterial unter `referenz/alkis/` (lokal, nicht versioniert) ist bereits GID 7.1.2. Verwandte Doku: [`../wissen/wfs_dienste.md`](../wissen/wfs_dienste.md), [`../wissen/alkis_objektarten.md`](../wissen/alkis_objektarten.md). --- ## Teil 1 – Was sich für uns als WFS-/NAS-Konsument ändert | Thema | ALKIS 6 (GID 6.0) | ALKIS 7 (GID 7.1) | Wirkung auf uns | |---|---|---|---| | **NAS-/GML-Namespace** | `http://www.adv-online.de/namespaces/adv/gid/6.0` | `…/adv/gid/7.1` | **Hart.** Jeder fest verdrahtete Namespace findet keine Elemente mehr. | | **Codelisten** | viele Attribute sind `Enumeration` mit Ganzzahlwert (`2110`) | dieselben Attribute sind **extern verwaltete `CodeList`** (adv-Registry, versioniert); Wert kommt als Code **oder** als Registry-URI, neue Werte ohne Schemaänderung | `artDerFestlegung` kann als URI statt `2110` ankommen; neue FlurbG-nahe Werte (z. B. 2180 Freiwilliger Nutzungstausch) | | **ISO-Angleichung** | ältere ISO-19100-Stände | Raumbezug/Zeit/Metadaten/Datenqualität an 19107/19108/19115/**19157** angeglichen | `qualitaetsangaben` (`AX_DQ*`) umstrukturiert | | **Modellpflege** | — | neue Supertypen (`AX_Flurstueck_Kerndaten`), normalisierte Relationsrollen, Anschrift/Lagebezeichnung angepasst | abgeflachte WFS-Feldnamen können sich verschieben | | **Objektarten** | — | neue/geänderte Objektarten v. a. in Tatsächlicher Nutzung und Bau-/Raum-/Bodenordnung | BROR-Filterung prüfen | | **Dienst-Infrastruktur** | vorhandener `public_alkis`-WFS | GeoSN stellt i. d. R. neue Capabilities-Version, ggf. neuen Pfad, Parallelbetrieb für Übergangszeit; `outputFormat`-Profilstring ändert sich | Endpunkt/Capabilities neu verifizieren | **Unverändert:** WFS 2.0.0, GML 3.2, EPSG:25833. Die WAF-Grenzen (POST/GML-Filter blockiert, URL-Länge, `COUNT`-Limit) sind sächsische Infrastruktur, nicht Schema – trotzdem gegen die neue Instanz neu sondieren (`referenz/wfs/`). --- ## Teil 2 – Konkrete Anpassungen ### A. Fest verdrahteter NAS-Namespace — der harte Bruch - **`functions/grenzpunkt_alkis.py:274`** — `_ADV = "…/gid/6.0"` in `_erstelle_layer_aus_gml`. Diese Funktion parst PunktortTA- und Grenzpunkt-GML von Hand; gegen einen 7.1-Dienst liefert `root.findall(".//{…/6.0}…")` nichts → `None` → „keine Grenzpunkte". **Fix:** Namespace aus dem GML-Wurzelelement ableiten (bzw. Liste bekannter Namespaces akzeptieren), nicht als Konstante. - Betrifft auch die verschachtelte Suche `.//{_ADV}genauigkeitsstufe` (Zeile ~340) und `referenz/wfs/_test_wfs_post.py:8,55` (nur Referenz). ### B. Fest verdrahtete, abgeflachte Attributnamen in `sql=`-Filtern Der QGIS-WFS-Provider flacht verschachtelte Datentypen zu `eltern_kind_…`-Feldnamen ab. Ändert GID 7.1 den Schemapfad, ändert sich der Feldname — und jedes `WHERE = …` liefert **stillschweigend 0 Features**: | Datei | Feld / Filter | |---|---| | `functions/flurstueck_alkis.py:101` | `gemarkung_ax_gemarkung_schluessel_gemarkungsnummer` | | `functions/verfahrensgebiet_alkis.py` (~112) | `bezeichnung LIKE '%'` auf BROR | | `functions/verfahrensgebiet_alkis.py:20–28` | Liste `BROR_ATTRIBUTE_FELDER` | | `functions/verfahrensgebiet_edit_service.py:26–27` | `FELD_KENNZEICHEN`, `FELD_GEMARKUNG` (Pflichtfelder) | | `functions/beteiligung_pruefung.py` | `flurstueckskennzeichen`, `zaehler`, `nenner`, `land`, `gemarkungsnummer` | | `functions/gemarkung_alkis.py` | `schluessel`, `ave_name` (vereinf. Dienst — separat prüfen, Sachsen-eigenes Schema) | **Aktion:** sobald ein ALKIS-7-Testdienst verfügbar ist, je Objektart `DescribeFeatureType` ziehen, Feldnamen diffen, alle Namen als benannte Konstanten an **einer** Stelle sammeln; wo möglich tolerante Feldsuche wie bereits `_erkenne_gehoert_zu_feld`. ### C. `artDerFestlegung` als Codeliste `functions/verfahrensgebiet_alkis.py` / `verfahrensgebiet_dialoge.py` (`ask_bror_kombinationen`): falls auf `artderfestlegung` verglichen/gruppiert wird, vor dem Vergleich normalisieren (letztes URI-Segment nehmen). Werteliste in [`../wissen/alkis_objektarten.md`](../wissen/alkis_objektarten.md) um neue GID-7.1-Werte ergänzen. Der `bezeichnung LIKE`-Filter bleibt unberührt (String-Attribut). ### D. PunktortTA → Grenzpunkt-Referenz `grenzpunkt_alkis.py:64` `_GEHOERT_ZU_KANDIDATEN = ["istTeilVon","gehoertZu","gehoertZuAX_Grenzpunkt"]` ist bereits tolerant — den in GID 7.1 tatsächlich abgeflachten Namen prüfen und ggf. aufnehmen. `xlink:href="urn:adv:oid:DE…"` sollte bleiben. ### E. Qualitätsangaben `qualitaetsangaben_ax_dqpunktort_genauigkeitsstufe` (`grenzpunkt_alkis.py:292`) und die Container-Erkennung gegen die 7.1-DQ-Struktur (ISO 19157) prüfen; Containername kann sich ändern. ### F. Endpunkte konsolidieren und neu sondieren Die URLs stehen als Literale in vier Dateien (`gemarkung_alkis.py`, `flurstueck_alkis.py`, `grenzpunkt_alkis.py`, `verfahrensgebiet_alkis.py`). In **ein** Modul ziehen, dann klären, ob GeoSN den Pfad behält. WAF-Verhalten (POST, KVP-BBOX, ResourceId, `COUNT`-Limit) gegen die neue Instanz mit den Skripten in `referenz/wfs/` neu testen. ### G. Tests (Projektregel: zuerst der Test, der den Bruch zeigt) - Für den manuellen GML-Parser gibt es aktuell offenbar **keinen** direkten Test (die Testdateien enthalten kein GML). Fixtures mit je einem 6.0- und einem 7.1-Namespace-GML anlegen und parametrisieren. - `python scripts/run_tests.py sn_verfahrensgebiet --baseline` + `python scripts/testkatalog.py`. - QGIS-Test gegen den echten ALKIS-7-Dienst im PR dokumentieren. ### H. Doku nachziehen [`../wissen/wfs_dienste.md`](../wissen/wfs_dienste.md), [`../wissen/alkis_objektarten.md`](../wissen/alkis_objektarten.md), [`../wissen/externe_dienste.md`](../wissen/externe_dienste.md), [`../wissen/fallstricke.md`](../wissen/fallstricke.md); ADR unter `../entscheidungen/` für die Umstellungsstrategie. ### Strategie GeoSN fährt ALKIS 6 und 7 vermutlich eine Zeit lang parallel — daher **tolerant** umsetzen (Namespace aus der Antwort, tolerante Feldsuche), nicht hart umschalten. --- ## Offen / nur am echten ALKIS-7-Dienst klärbar - exakte abgeflachte Feldnamen in GID 7.1 (`DescribeFeatureType` je Objektart) - genauer Namespace-Suffix (`7.1` vs. Unterversion) - ob GeoSN den WFS-Endpunkt / -Pfad wechselt (`GetCapabilities`) - ob der vereinfachte Dienst (`ave:KatasterBezirk`) mitgezogen wird - aktualisiertes WAF-Verhalten der neuen Deployment-Instanz ## Nächste Schritte 1. Gitea-Issue in `Plugin_SN_Verfahrensgebiet` anlegen (Entwurf vorbereiten). 2. Sobald ALKIS-7-Testdienst erreichbar: `GetCapabilities` + `DescribeFeatureType` sichern, Abschnitt B mit echten Feldnamen füllen. 3. Umsetzung als eigener `feature/`-Branch, Namespace-Toleranz zuerst (Abschnitt A).