Version 19 (modified by astrid.emde, 12 years ago) (diff) |
---|
Installation PostNAS unter Linux
Systemvoraussetzungen
- PostgreSQL 8.x mit PostGIS-Erweiterung (in gängigen Linux-Distributionen verfügbar)
- C/C++-Compiler, make etc. (unter Debian/Ubuntu? im Metapaket build-essential enthalten)
- SVN-Client, um den aktuellen GDAL-Code zu beziehen (Debian: Paket subversion)
- Bibliotheken Xerces (obligatorisch), PROJ.4 und GEOS samt Headerdateien
- Beispiel unter Debian 5.0:
sudo apt-get install postgresql-8.3 postgresql-server-dev-8.3 postgresql-8.3-postgis \ libxerces-c2-dev libgeos-dev proj build-essential subversion
GDAL/OGR bauen und installieren
- Code beziehen (mit normalen Benutzerrechten):
mkdir postnas cd postnas svn checkout http://svn.osgeo.org/gdal/trunk/gdal
- Konfigurieren und kompilieren (wir gehen vom Installationsverzeichnis /opt/gdal-trunk aus)
cd gdal ./configure --prefix=/opt/gdal-trunk --with-xerces make
- Installation mit root-Rechten:
sudo make install
Datenbank vorbereiten
- PostGIS-Template erstellen
createdb -U postgres -h localhost postgis_template createlang -U postgres -d postgis_template plpgsql psql -U postgres -d postgis_template -f \ /usr/share/postgresql-8.3-postgis/lwpostgis.sql psql -U postgres -d postgis_template -f \ /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
- Datenbank erstellen
createdb -U postgres -h localhost -T postgis_template postnas_test
Aufbau der ALKIS Tabellenstruktur
Im SVN-Repository von PostNAS finden Sie die Datei alkis_PostNAS_0.5_schema.sql, mit der die komplette PostNAS-Tabellenstruktur aufgebaut werden kann: http://trac.wheregroup.com/PostNAS/browser/trunk/data/konvert/postnas_0.5/alkis_PostNAS_0.5_schema.sql?format=raw
Laden Sie die Datei auf Ihren Rechner und spielen Sie dieses Schema in Ihre neue Datenbank:
psql -U postgres -d postnas_test -f alkis_PostNAS_0.5_schema.sql
Mit einer zweiten Datei werden Verknüpfungen der Tabellen hergestellt:
http://trac.wheregroup.com/PostNAS/browser/trunk/data/konvert/postnas_0.5/alkis_sichten.sql?format=raw
Laden Sie die Datei auf Ihren Rechner und bauen Sie die Sichten über den folgenden Aufruf auf:
psql -U postgres -d postnas_test -f alkis_sichten.sql
Erstimport von NAS-Daten
Wir befinden uns im Verzeichnis mit dem Datensatz Bestandsdatenauszug-Mustermonzel-06.05.2010.xml. Die Verbindungsparameter müssen Sie ggf. an Ihre Umgebung anpassen. Je nach PostgreSQL-Konfiguration müssen Sie evtl. noch den Parameter password mit angeben.
/opt/gdal-trunk/bin/ogr2ogr -f "PostgreSQL" -skipfailures \ PG:"dbname=postnas_test user=postgres host=localhost port=5432" \ -a_srs EPSG:25832 Bestandsdatenauszug-Mustermonzel-06.05.2010.xml \ 2>> postnas_err.log
Import von Fortführungsdatensätzen
Info
/opt/gdal-trunk/bin/ogrinfo xxx.xml Delete
Laden der Lösch- und Replacedatensätze
Laden des Layers Delete
/opt/gdal-trunk/bin/ogr2ogr -f "PostgreSQL" -skipfailures \ PG:"dbname=postnas_test user=postgres host=localhost port=5432" \ -a_srs EPSG:25832 xxx.xml Delete\ 2>> postnas_err.log
Anlegen der Funktion deleteFeature
Die Funktion muss einmalig angelegt werden.
CREATE FUNCTION deleteFeature(typename text, featureid text) RETURNS text AS $$ DECLARE query text; res text; BEGIN query := 'DELETE FROM ' || $1 || ' WHERE gml_id = ''' || $2 || ''''; EXECUTE query; query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || $2 || ''' OR beziehung_zu = ''' || $2 || ''''; EXECUTE query; IF FOUND THEN RAISE NOTICE 'query successfull % ', query; res := 1; ELSE RAISE NOTICE 'query no object found % ', query; res := 0; END IF; RETURN res; END; $$ LANGUAGE plpgsql;
Löschen der in der Tabelle delete vermerkten Datensätze
Vorbereitung der Spalte featureid
UPDATE "delete" SET featureid = substring(featureid from 1 for 16);
Löschen der Einträge aus den Tabellen und der Beziehungen aus alkis_beziehungen
Select deleteFeature(typename, featureid) AS deletefeature from delete GROUP BY deletefeature;
Löschen der Einträge der Tabelle delete
TRUNCATE table "delete";
Laden der Fortführungsdaten
Laden ohne Layerangabe
/opt/gdal-trunk/bin/ogr2ogr -f "PostgreSQL" -skipfailures \ PG:"dbname=postnas_test user=postgres host=localhost port=5432" \ -a_srs EPSG:25832 xxx.xml \ 2>> postnas_err.log
Löschen der Einträge der Tabelle delete
TRUNCATE "delete";
Dienst mit UMN MapServer
Nachdem die Daten erfolgreich in die Datenbank geladen wurden, kann leicht eine OGC Web Map Service (WMS) mit MapServer aufgebaut werden.
Hierzu liegen Vorlagen im svn vor, die lediglich angepasst werden müssen.
Laden Sie die Dateien aus dem Verzeichnis umn auf Ihren Rechner: http://trac.wheregroup.com/PostNAS/browser/trunk/data/umn/
- Benennen Sie die Datei alkis05_muster.map um und passen Sie den Inhalt wie folgt an:
- Passen Sie den Parameter EXTENT (Umgebungsrechteck) an Ihr Projekt an:
EXTENT 349000 5529000 356000 5533000
- Passen Sie den Parameter ONLINERESOURCE an:
ONLINERESOURCE
- Ändern Sie gegebenenfalls den EPSG-Code
"init=epsg:25832"
- Geben Sie alle EPSG-Codes an, die Sie unterstützen möchten
WMS_SRS "epsg:31467 epsg:4326 epsg:25832"
- Passen Sie den Parameter CONNECTION an Ihre Umgebung an:
CONNECTION "host=localhost dbname=postnas_test user=postgres port=5432"
- Prüfen Sie den WMS über den getCapabilities-Aufruf in Ihrem Browser:
http://localhost/cgi-bin/mapserv?map=/data/umn/alkis05/alkis05muenster.map&REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1
Wenn Sie die Beschreibung des WMS als XML zurück bekommen, können Sie den Dienst anschließend in einem WMS Client wie Mapbender, OpenLayers oder QGIS laden.
Infoausgabe
Im svn-Repository liegen Skripte vor die zu den einzelnen Flurstücken Grundbuch-, Eigentümer, Gebäudeinformationen ausgeben. Diese Skripte können so abgelegt werden, dass Sie über die Infoabfrage des WMS aufgerufen werden können.
Legen Sie die Skripte des Verzeichnisses /info in Ihr Apache Document-ROOT Verzeichnis
http://trac.wheregroup.com/PostNAS/browser/trunk/var/www/info
In der Datei alkis_conf.php müssen Sie die Verbindungsparameter für den Zugriff auf die Datenbank anpassen.