[PostNAS Suite] ALKIS2NAS - Konverter
Frank Jäger
urbi at orbi.space
Fr Jan 29 07:53:06 PST 2021
Am 28.01.21 um 22:26 schrieb LWB Ressen - Lindchen:
> Vielen Dank in die Runde!
>
> Meine wahnwitzige Idee war es, in meiner ALKIS-Datenbank in der
> ax_flurstueck rumzupfuschen, damit sie die Flurstücke eines Jagdbezirkes
> enthält.
> Dann wieder in die xml-Datei verpacken, damit die Jagdkatastersoftware
> dieses frißt und man nicht in mühseliger Kleinarbeit die überflüssigen
> Flurstücke händisch entfernen muss.
> Das wären dann keine ALKIS - Daten, es wäre NALKIS (nichtamtlich...).
> Aber rein theoretisch müsste doch der norGIS - Import auch analog
> umgekehrt zu programmieren sein!?!?
>
> Gruß aus NZL
> Martin
Hallo,
> Aber rein theoretisch müsste doch der norGIS - Import auch analog
umgekehrt zu programmieren sein!?!?
Im Prinzip ja, aber ich glaube hier unterschätzt du gewaltig die Menge
an Arbeit, die in den letzten Jahren in dieses Projekt geflossen ist,
insbesondere durch Jürgen E. Fischer von NorBIT.
Dies wurde von vielen Auftraggebern und Spendern ermöglicht.
> ... in meiner ALKIS-Datenbank in der ax_flurstueck rumzupfuschen
Keine Gute Idee!
Wird diese Datenbank durch ein NBA-Verfahren gefüttert?
Wir haben für einige Jagdgenossenschaften solche NBA-Verfahren
eingerichtet. Einmal jährlich im Frühjahr, einen Monat vor der
Hauptversammlung der Genossenschaft, werden die Aktualisierungen
ausgegeben. Damit wird der Sekundärbestand dann aktualisiert damit er
zum Zeitpunkt der Versammlung aktuell ist.
Definition: NBA = Nutzerbezogene Bestandsdaten-Aktualisierung
Die abgebende Stelle, also das Katasteramt, merkt sich für einen
"Bezieher" welchen Stand dieser bekommen hat und generiert beim nächsten
Abgabe-Termin dazu die passenden Differenzdaten.
Die erste große Lieferung enthält nur "Insert"-Anweisungen, die sind
relativ einfach zu verarbeiten.
Bei folgenden (kleinen) Aktualisierung sind dann auch Löschanweisungen
(Delete) und Aktualisierungen (Update/Replace) enthalten. Wenn das zu
löschende oder das zu ändernde Objekt (Flurstück) aber nicht mehr
vorhanden ist, dann wird sich der Konverter dabei verschlucken.
In einer Datenbank ist vieles mit einander verbunden. Darum heißt das
auch "Relationale Datenbank" (Relation = Beziehung).
Ein Flurstück ist z.B. Teil eines Grundstücks (also einer Buchung auf
einem Grundbuchblatt) und hat daher eine Relation zur "Buchungsstelle".
Über eine NBA-Aktualisierung werden beide Seiten der Relation
gleichzeitig aktualisiert. Ein manuelles einseitiges Löschen macht die
Relation aber kaputt.
> man nicht in mühseliger Kleinarbeit die überflüssigen
> Flurstücke händisch entfernen muss.
Wenn ein manuelles Löschen kurzfristig die einzige Möglichkeit ist, dann
bitte nur mit einem Script in einer *Kopie* der Datenbank löschen.
Im nächsten Jahr dann die Original-Datenbank mit PostNAS aktualisieren,
eine neue Kopie machen, diese mit dem gleichen Script wieder ausdünnen.
Das Script wäre aber auch jährlich zu aktualisieren (siehe unten bei
"Flurstücksliste").
Beispiel SQL-Script:
DELETE FROM ax_flurstueck WHERE gml_id IN ('DENWnn0123456789',
'DENWnn0123456790', 'DENWnn0123456791', ...);
Eine sinnvolle Lösung hängt davon ab, wie diese "Jagdkatastersoftware"
arbeitet.
Verwendet die auch PostNAS für den Import nach PostGIS?
Das Problem müsste m.E. über sinnvolle *Filter* gelöst werden und das
ist m.E. genau die Aufgabe, die diese Software erfüllen sollte.
Ich habe selbst schon Auswertungen für Zwecke des Jagdkatasters
programmiert. Die aktuell verwendete Software, ihren Zweck und ihre
Vorgehensweise kenne ich aber nicht. Daher kann ich hier nur ein
bisschen ins Blaue hinein raten.
Ein Filter kann bereits bei der Einrichtung des NBA-Verfahrens im
Katasteramt angewendet werden oder später im Sekundärbestand.
Im Sekundärbestand (PostGIS-Datenbank) würde man das am besten über
"Views" (Sichten) realisieren und die Tabellen und deren Inhalt aus den
oben beschriebenen Gründen unangetastet lassen.
Arten von Filtern:
- Filter: Räumlich
Äußere Begrenzung auf das in der Satzung definierte Gebiet der
Jagdgenossenschaft. Hier ist das oft ein Ortsteil (Gemarkung).
Aussparungen (Löcher im Gebiet) z.B. als ausreichender Abstand von
"bebauten Gebieten", die als "nicht bejagbar" gelten.
"Bebautes Gebiet" könnte über Gebäude-Objekte definiert werden und/oder
über die Nutzungsart (Wohngebiet).
- Filter: Nutzungsart
In den 1980er Jahren habe ich mal auf dem IBM-Großrechner eine
Jagdkataster-Liste programmiert auf Basis des Verfahrens BEDV. BEDV war
der Vorgänger von ALB welches Vorgänger von ALKIS ist. Da war also nur
das "Buchwerk" enthalten, keine Geometrie. Die Karte war damals noch
analog (Tusche auf Karton). Räumliche Kriterien bleiben daher
unberücksichtigt.
Die Liste diente der Abrechnung der Jagdpacht mit den Eigentümern.
Es wurden dazu alle "bejagbaren" Flächen in einem Jagdbezirk nach
Eigentümer gruppiert und summiert.
Als Filter diente dabei die Nutzungsart. Jemand mit Kenntnissen des
Landes-Jagdgesetzes *und* des Katasters hatte die Tabelle der
Nutzungsarten nach "bejagbar" (ja/nein) qualifiziert. Alles was nicht
bejagbar war, fiel komplett raus.
Als Vater von 3 Kindern war ich entsetzt, dass auch die Nutzungsart
"Spielplatz" als bejagbar qualifiziert war. Vor meinem inneren Auge
erschien jemand mit einer Schrotflinte, der zwischen Wippe und Schaukel
herum ballerte.
Ein Anruf klärte auf, dass das natürlich verboten ist. Aber da man dort
Kaninchenfallen aufstellen darf, kann für die Fläche eine Jagdpacht
abgerechnet werden. Das war ja das Ziel dieser Auswertung.
- Filter: Flurstücksliste
Wenn gar nichts anderes geht, wäre auch das möglich.
Aber diese Liste müsste Jahr für Jahr manuell aktualisiert werden. Das
ist mühsam und fehleranfällig. Man müsste
Vorgänger-Nachfolger-Beziehungen recherchieren bei geteilten oder
verschmolzenen Flurstücken. Das wäre prinzipiell über PostNAS möglich.
Dazu muss aber in den NAS-Daten die Flurstücks-Historie mit ausgegeben
werden.
Die Software müsste m.E. eine komfortable Definition dieser Filter
erlauben, auch für Personen ohne Kenntnisse der ALKIS-Strukturen oder
der Datenbank-Sprache "SQL".
Was macht denn noch diese Software, wenn man die Filter-Probleme im
Vorfeld mühsam selbst behandeln muss?
Beispiel "View":
In der Datenbank
CREATE VIEW flurstueck_gefiltert AS SELECT * FROM ax_flurstueck WHERE
NOT gml_id IN ('DENWnn0123456789', 'DENWnn0123456790',
'DENWnn0123456791', ...); -- Liste ausgeschlossener Flurstücke
Dann im QGIS bei der Datenquelle der Flurstücks-Ebene "ax_flurstueck"
austauschen gegen "flurstueck_gefiltert".
Damit hätte man bestimmte Flurstücke ausgenommen ohne sie gleich
komplett zu löschen.
--
Nomen est omen
Frank Jäger
Mehr Informationen über die Mailingliste NAS