norGIS-ALKIS-Import - norBIT GmbH

  • norGIS-ALKIS-Import

Überblick

norGIS-ALKIS-Import ist ein freies Werkzeug zum Import von ALKIS-Daten im NAS-Format in eine PostgreSQL/PostGIS Datenbank.

Der eigentliche Import erfolgt über GDAL/OGR (mit dem NAS-Treiber). Die darüber hinausgehende Leistung der Software besteht aus:

  • Bereitstellung einer graphische Oberfläche und eines Shellskript zur Steuerung des Imports
  • Anlegen des Datenmodells
  • Aufruf von ogr2ogr für alle gewählten Dateien
  • Fortschrittsanzeige und Protokollierung während des Imports
  • Aufbereitung der eingelesenen Daten nach GeoInfoDok.

Wobei der letzte Punkt der wesentlichste ist: Es wurden die Ableitungsregeln aus dem ALKIS-Signaturkatalog, Teil C: Präsentation, die die Darstellung regeln, annähernd vollständig umgesetzt. Dazu ist zu bemerken, dass sich die Darstellung vornehmlich aus diesen Regeln ergibt und die eigentliche Daten nur dann Informationen zur Art und Weise der Darstellung enthalten, wenn sie von den Ableitungsregeln abweichen - dies wirkt sich insbesondere auf Beschriftungen, Flächensignaturierungen und Punktsymbolik aus.

Ergebnis der Ableitungsregeln sind gesonderte Tabelle in der ALKIS-Datenbank, die zur nahezu unmittelbar zur Darstellung verwenden können. Die eigentlich Darstellung findet auf Clientseite statt. Client-Implementationen existieren derzeit für QGIS, UMN-Mapserver und AutoCAD/BricsCAD. Dort sind auch die Signaturen zu finden.

Download & Installation

Die Software wird derzeit unter Windows und Linux verwendet. Es ist freie Software. Der Code wird auf GitHub unter https://github.com/norBIT/alkisimport vorgehalten.

Windows

Für Windows steht sie zusammen mit allen notwendigen Abhängigkeiten in OSGeo4W zur Verfügung (sowohl in 32 als auch 64 Bit). Das Paket heißt alkis-import und ist in der fortgeschrittenen Installation unter Desktop zu finden. Nach der Installation ist die graphische Oberfläche über das OSGeo4W-Programmmenü zu starten.

Linux

Für Linux sind derzeit keine gesonderten installierbare Pakete vorhanden. Die Skripte alkisImport.py und alkis-import.sh aus dem github-Repository laufen dort allerdings direkt, sodaß hier nur sichergestellt sein muß, dass die notwendigen Abhängigkeiten verfügbar sind.

Dies sind:

  • python & PyQt4 (inkl. dem QtSql-PostgreSQL-Treiber; i.d.R. ein gesondertes Plugin)
  • psql (PostgreSQL-Kommandointerface)
  • GDAL/OGR ab 1.11.1

Unter Debian/Ubuntu GNU Linux entspricht das folgenden Paketen:

 apt-get install python-qt4 libqt4-sql-psql postgresql-client-common gdal-bin

Zu beachten ist allerdings, dass die GDAL/OGR-Pakete für Debian/Ubuntu auch noch nicht ausreichend aktuell sind. Für Debian etch, squeeze und wheezy und Ubuntu lucid und precise halten wir GDAL 1.11.0-Pakete mit passenden Patches vor unter:

 deb http://utroper.norbit.de:9999/norBIT dist main

Alternativ dazu muß GDAL selbst kompiliert werden. Eine Beschreibung ist unter BuildingOgrPostNASDriver zu finden.

 

Nutzung

Es wird davon ausgegangen, dass PostgreSQL mit PostGIS bereits installiert ist und eine PostGIS-Datenbank bereits angelegt wurde.  Die Daten werden in das public-Schema importiert und es dürfen keine ALKIS-Tabellen in anderen Schemata vorhanden sein.

Graphische Benutzeroberfläche

In der Oberfläche sind die Zugangsdaten zur PostGIS-Datenbank einzugeben und beim Erstbestand noch Datenbestand (neu)anlegen zu aktivieren und ein Koordinatensystem festzulegen (i.d.R. UTM32N; in Baden-Württemberg 2GK2 oder 3GK3 und in Bayern 3GK4 - außer für UTM32N muß der Datenbankbenutzer auch das INSERT-Privileg auf die Tabelle spatial_ref_sys haben). Außerdem kann unter Flurstücksnummerndarstellung gewählt werden, ob Flurstücksnummern ohne explizite Angabe in Bruchstrich- oder Schrägstrichdarstellung angezeigt werden sollen.

Danach kann man über Datei hinzufügen... einzelne Dateien bzw. Verzeichnis hinzufügen ganze Verzeichnisse (inkl. Unterverzeichnissen) angeben und so die Dateiliste mit den einzulesenden NAS-Daten füllen. Danach Starten um den Import auszulösen.

Dadurch wird dann das Datenmodell angelegt, die Dateien einzeln per ogr2ogr eingelesen, danach die Ableitungsregeln ausgeführt und im Anschluß die Liegenschaftsbuchdaten aufbereitet (postprocessing.d/nas2alb.sql für unser ursprüngliches ALB-Modell; das Skript kann ggf. entfernt und/oder im Verzeichnis andere Skripte ergänzt werden).  Startet man den Import ohne Dateien in der Liste werden nur die nachverarbeiteten Schritte durchgeführt.

In der graphischen Oberfläche gibt es außerdem noch die Optionen Importfehler überspringen und COPY benutzen. Ist die erste aktiviert wird ogr2ogr mit der Option -skipfailures ausgeführt. Dies sollte nur nötig sein, wenn man Datenbestände mit doppelten Datensätzen importiert (etwa Datensätzen für verschiedenen Gemeinden bei denen sich die Katalogeinträge überschneiden). COPY benutzen dient dazu den PostgreSQL-Import mit der Option --config PG_USE_COPY YES aufzurufen. Dies kann den Import deutlich beschleunigen.

Der Import wird in der Datenbank protokolliert. Mit Protokoll löschen wird es beim Import gelöscht. Zur Ansicht kann man nachträglich die Protokolltabelle laden, um sie anzusehen.

Shellscript

Alternativ kann man auch alkis-import.sh ausführen, um das gleiche zu erreichen. Hierzu erstellt man eine Dateiliste in einer Datei. Z.B. mit

 find . -name "*.xml" >nas.lst

und ergänzt oben in der Datei eine Zeile mit den Zugangsdaten zur Datenbank in OGR-Notation (z.B. PG:dbname=alkis user=alkis password=alkis) und eine Zeile mit create, um das Anlegen des Schemas auszulösen und eine weitere mit log um eine Logdatei zu erzeugen (ohne Argumente erzeugt log eine Protokolldatei, die den Namen der Dateiliste plus Zeitstempel und .log statt .lst hat).

Neben den unkomprimierten .xml-Dateien werden auch .gz und .zip-Dateien unterstützt (auch in der graphischen Variante). Bei letzteren wird vorausgesetzt, dass sie jeweils nur eine XML-Datei enthalten, deren Name bis auf die Erweiterung .xml statt .zip mit dem des Archivs übereinstimmt.

Das Koordinatensystem kann hier optional mit einer Zeile mit führendem epsg gefolgt von einem Leerzeichen und der Koordinatensystemnummer (SRID) angegeben werden (Vorgabe ist 25832 für UTM32N). Für Baden-Württemberg sollte 134166 (GK3) bzw. 131467 (GK3) und in Bayern 131468 (GK4) für das jeweilige DHDN-Koordinatensystem ohne führendes Meridianstreifensystem angegeben werden. Es besteht zudem die Möglichkeit mit fnbruch off die voreingestellte Bruchdarstellung für Flurstücksnummern ohne explizite Darstellungsangaben ab und damit auf die Schrägstrichdarstellung umzuschalten.

Beispiel nas.lst:

 PG:dbname=alkis user=alkis password=alkis
 epsg 25832
 create
 log
 1.xml
 2.xml
 3.xml
 ...

alkis-import.sh nas.lst startet dann den Import.

Zum Überspringen von Fehlern kann eine Zeile mit options -skipfailures eingefügt werden, die im Unterschied zur graphischen Oberfläche auch zwischen Dateien angegeben werden kann. Ebenso kann mit options --config PG_USE_COPY YES dafür gesorgt werden, dass zum Einfügen in die Datenbank nicht INSERT, sondern COPY verwendet wird, was deutlich schneller sein kann. Es besteht auch die Möglichkeit SQL-Anweisungen auszuführen. z.B.: execute TRUNCATE alkis_importlog, um das Importprotokoll in der Datenbank zu löschen.