Installation von PostNAS und Zugriff mit kvwmap

Aus kvwmap
Wechseln zu: Navigation, Suche

Auf dieser Seite wird beschrieben, wie man PostNAS installiert, eine PostNAS-Datenbank einrichtet, NAS-Daten einspielt und mit kvwmap darauf zugreifen kann. Die PostNAS-Anleitung entspricht dabei im Großen und Ganzen der Anleitung der PostNAS-Entwickler und unterscheidet sich nur in wenigen Anpassungen, die z.B. das in MV benutzte Koordinatensystem und den Zugriff von kvwmap betreffen.

PostNAS installieren

Systemvoraussetzungen

  • gcc, PostgreSQL-devel, Xerces, PROJ und GEOS - kann man unter OpenSuse alles über yast installieren


GDAL/OGR bauen und installieren

  • Code beziehen (mit normalen Benutzerrechten z.B. in /home/fgs/fgs):
 mkdir postnas
 cd postnas
 wget http://download.osgeo.org/gdal/gdal-1.9.2.tar.gz
 tar -xzf gdal-1.9.2.tar.gz
  • Konfigurieren und kompilieren (hier wird gdal in /home/fgs/fgs/postnas/gdal-1.9.2 installiert)
cd gdal-1.9.2 
./configure --prefix=/home/fgs/fgs/postnas/gdal-1.9.2 --with-xerces
make
  • Installation mit root-Rechten:
 sudo make install

Erstellung eines PostNAS-Schemas

Datenbank

  • Die PostNAS-Tabellen und -Sichten werden in einem extra Datenbank-Schema "alkis" angelegt. Es kann somit die bestehende PostGIS-Datenbank von kvwmap verwendet werden. Oder man legt eine neue PostGIS-Datenbank mit Encoding UTF8 und einem postgis_template als Vorlage an. Zum Testen der verschiedenen Fachschalen und anderen Komponenten mit Katasterbezug empfiehlt es sich aber, eine bestehende kvwmap-Datenbank (oder eine Kopie davon) mit den darin enthaltenen Fachschalen-Tabellen zu verwenden.

Datenbankschema erstellen

  • Das Schema "alkis" muss nicht vorher angelegt werden. Man führt einfach einer der folgenden SQL-Dateien aus. Je nach dem welche Zone man unterstützen möchte. Beide Zonen in einem Schema geht derzeit nicht.

Das SQL-Script alkis-schema_epsg_25833.sql setzt sich aus folgenden Teil-Skripten zusammen:

Der Unterschied zu den SQL-Skripten, die unter http://trac.wheregroup.com/PostNAS/browser/trunk/data/konvert/postnas_0.7 zu finden sind, besteht nur darin, dass alles im Schema "alkis" angelegt wird, dass das Koordiantensystem EPSG:25833 statt EPSG:25832 verwendet wird und alle Tabellen mit oids angelegt werden.

Nach dem Laden der NAS-Daten in die Datenbank, können noch spezielle Erweiterungen geladen werden, die von kvwmap-Nutzern erstellt wurden. Die dabei entstehenden Tabellen und Sichten haben den Prefix "lk_". Zum Laden aller Erweiterung muss die folgende Datei ausgeführt werden:

Die Datei alkis-schema_nach_dem_laden.sql besteht aus folgenden Teil-Skripten:

Einspielen der NAS-Daten

Um die NAS-Daten in die PostNAS-DB einzuspielen wird das Programm ogr2ogr des zu Beginn installierten GDALs verwendet. Man wechselt dazu nach

/home/fgs/fgs/postnas/gdal-1.9.2/bin

und führt folgenden Befehl aus:

./ogr2ogr -f "PostgreSQL" -skipfailures -append PG:"dbname=<POSTNASDB> active_schema=alkis user=<DBUSER> host=localhost port=5432" -a_srs EPSG:25833  /PFAD/ZU/DEN/NASDATEN.XML 2>> postnas_err.log

wobei <POSTNASDB> durch den Datenbanknamen, <DBUSER> durch den Datenbanknutzer und /PFAD/ZU/DEN/NASDATEN durch den Pfad zu den NAS-Daten ersetzt werden muss.

Achtung: Falls es auf dem Server bereits ein anderes gdal gibt, kann es beim Ausführen von ogr2ogr zu Fehlern kommen. Ist auf dem Server z.B FGS installiert, so kann es sein, dass das gdal von FGS benutzt wird, was dann natürlich nicht funktioniert. Man kann das auch nachprüfen, indem man

ldd /home/fgs/fgs/postnas/gdal-1.9.2/bin/ogr2ogr

ausführt und sich anschaut, auf welches gdal gelinkt wird. Falls dort nicht auf das PostNAS-gdal gelinkt wird, muss man, bevor man ogr2ogr aufruft, den Library-Path entsprechend setzen:

export LD_LIBRARY_PATH=/home/fgs/fgs/postnas/gdal-1.9.2/lib

Nach dem Einlesen der Daten müssen die folgenden beiden Skripte ausgeführt werden:

Zugriff mit kvwmap

Umstellung von ALB/ALK auf ALKIS

Um in kvwmap alle katasterbezogenen Komponenten von ALK/ALB auf ALKIS umzustellen, muss man nur einige Parameter in der config.php setzen:

$pgdbname='kvwmapsp';                                 // muss auf die DB gesetzt werden, die das Schema "alkis" enthält
define('ALKIS', true);                                // muss auf true gesetzt werden
define("LAYERNAME_FLURSTUECKE",'Flurstuecke_Alkis');  // muss auf den neuen ALKIS-Flurstückslayer gesetzt werden
define('EPSGCODE_ALKIS','25833');                     // muss auf 25833 gesetzt werden


Layerdefinitionen

Hier findet man eine Sammlung der Layerdefinitionen, die auf das PostNAS-Schema zugreifen.

Testdaten

Zum Testen eigenen sich NAS-Daten aus der DHK, die aus einem NBA-Verfahren stammen. Wer noch keine eigenen NBA-Daten hat, kann zunächst mit Testdaten arbeiten. Erfolgreich getestet wurden Daten aus MV vom LAiV und Daten aus Brandenburg, die auch in EPSG 25833 liegen.

Testdaten:

  • ALKIS®-Beispieldaten Brandenburg: [1]
Beim Einlesen werden Fehlermeldungen folgender Form ausgegeben:
...
ERROR 1: Did not get 2+ values in <gml:pos>23.1600</gml:pos> tuple.
ERROR 1: Did not get 2+ values in <gml:pos>31.3500</gml:pos> tuple.
ERROR 1: Did not get 2+ values in <gml:pos>25.8700</gml:pos> tuple.
...
  • ALKIS®-Beispieldaten Mecklenburg-Vorpommern vom LAiV: [2]
Hier scheint es Probleme mit den Geometrietypen zu geben. Es werden Fehlermeldungen folgender Form ausgegeben:
...
Command: INSERT INTO "ax_transportanlage" ("wkb_geometry" , "gml_id", "identifier", "beginnt", "advstandardmodell", "anlass", "bauwerksfunktion") VALUES ('0101000020E9640000F6285C8F6CDC0D412506813D4FCC5641'::GEOMETRY, 'DEMV000000138982', 'urn:adv:oid:DEMV000000138982', '2012-06-04T06:31:41Z', 'DLKM', 0, 1103) RETURNING "ogc_fid"
Warning 1: Geometry to be inserted is of type 3D Line String, whereas the layer geometry type is 3D Point.
Insertion is likely to fail
ERROR 1: INSERT command for new feature failed.
ERROR:  new row for relation "ax_einrichtunginoeffentlichenbereichen" violates check constraint "enforce_geotype_wkb_geometry"

Command: INSERT INTO "ax_einrichtunginoeffentlichenbereichen" ("wkb_geometry" , "gml_id", "identifier", "beginnt", "anlass", "art") VALUES ('0102000020E96400000200000052B81E8540D50D416ABC742366CD56419A99999944D50D415EBA49A460CD5641'::GEOMETRY, 'DEMV000000040186', 'urn:adv:oid:DEMV000000040186', '2012-06-04T06:26:22Z', 0, 1500) RETURNING "ogc_fid"
ERROR 1: INSERT command for new feature failed.
ERROR:  new row for relation "ax_einrichtunginoeffentlichenbereichen" violates check constraint "enforce_geotype_wkb_geometry"
...

Trotz der Fehlermeldungen beim Einlesen funktioniert bei beiden Testdatensätzen die Kartendarstellung als auch die Katasterrecherche in kvwmap.