UMN Mapserver & PostgreSQL/PostGIS: Unterschied zwischen den Versionen

GISWiki - Das freie Portal für Geoinformatik (GIS)
Wechseln zu: Navigation, Suche
Zeile 104: Zeile 104:
 
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)
 
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)
 
[[Image:pg_hba_editor.gif]]
 
[[Image:pg_hba_editor.gif]]
 +
 +
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole
 +
„createdb Testdatenbank“
 +
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:
 +
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt:
 +
“...user „Kalle“ does not exist“
 +
(siehe Abbildung 5).
 +
 +
Abbildung 5: Unschöne Fehlermeldung
 +
[[Image:fehlermeldung.gif]]
 +
 +
Ok, wie gehen wir damit um?
 +
Es gibt verschiedene Möglichkeiten:
 +
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.
 +
Der Befehl auf der MS-Dos-Ebene:
 +
"psql –U postgres template1"
 +
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.
 +
 +
'''2. oder:'''
 +
Sie arbeiten als ein registrierter Benutzer durch den Zusatz
 +
„-U [Nutzername]“
 +
,also in diesem Beispiel auf MS-Dos-Ebene z.B.
 +
„createdb -U postgres testdatenbank“
 +
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).
 +
 +
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).
 +
Der Befehl dafür lautet:
 +
„Create User “ Kalle“ Createdb Createuser;“ (
 +
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).
 +
 +
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal
 +
„\du“
 +
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).
 +
 +
 +
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen
 +
[[Image:createuser_du.gif]]
 +
 +
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.
 +
 +
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:
 +
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".
 +
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.
 +
Es enthält ein Mapfile (mapdatei.map) zwei Templates (template.html & ausgabetemplatefuerpostgis.html) eine Start-datei (Start.html), einen fonts bzw. symbols-Ordner sowie den Ordner „data“, welcher wiederum zwei Shapes (Lan.shp & testdaten.shp) mit den dazu gehörigen Dateien enthält.
 +
 +
[[Image:4.Einspielen einer Shape-Datei]]
 +
 +
 +
Zunächst geht es uns um die Datei „testdaten.shp“.
 +
Diese Datei enthält Probedaten aus der wunderschönen Wesermarsch in Norddeutschland. Mittels Punkt-Daten werden zufällig ausgewählte Standorte dargestellt (über Gauß-Krüger-Koordinaten) und mittels einiger zufällig ausgewählter Attribute beschrieben. Selbstredend haben die hier angehängten Daten nichts mit den tatsächlich an dieser Position vorzufindenden Geoobjekten zu tun.
 +
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.
 +
 +
Wir wollen im folgenden Beispiel nun eine Datenbank anlegen und die Daten aus der Shape-Datei dort einspielen (öffnen Sie doch einmal die Attributtabelle der Shapedatei (namentlich: testdaten.dbf) und schauen Sie sich an, was da eigentlich eingetragen wurde).
 +
 +
Wie schon gesagt, es gibt für verschiedene Funktionen verschiedene Wege. Um eine Datenbank (nennen wir sie „Geodaten“) anzulegen, wählen wir in diesem Fall einmal den Weg über die psql-Konsole.
 +
Geben Sie dort
 +
„Create Database Geodaten;“
 +
ein und kontrollieren Sie mittels des Befehls
 +
„\l“
 +
ob die Datenbank angelegt wurde.
 +
 +
Unter PostgreSQL gibt es verschiedene prozedurale Sprachen, welche für die Erstellung bestimmter Funktionen notwendig sind. Für PostGIS bedarf es der Sprache „plpgsql“. Normalerweise sollte diese durch die Installation von PostGIS automatisch bei jeder neu angelegten Datenbank vorhanden sein. Damit Sie nicht aus der Übung kommen geben Sie diesmal bitte wieder auf MS-DOS-Ebene
 +
„Createlang –list Geodaten“
 +
ein (siehe Abbildung 7).
 +
 +
Abbildung 7: plpgsql vorhanden?
 +
[[Image:sprachueberpruefung.gif]]

Version vom 2. August 2005, 18:19 Uhr

Quellen:

Diese Anleitung soll die Verbindung zwischen dem UMN MapServer und dem Datenbanksystem PostgreSQL/PostGIS etwas verdeutlichen. Die dargestellten Informationen stammen im Wesentlichen aus den folgenden:

Literatur: CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn

Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin

Internet: http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)

http://freegis.org (Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)

http://www.mapserver.uni-vechta.de/webgis/webgis.htm (Homepage mit vielen Infos zum Thema WebGis)

http://www.postgresql.de (Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von Cornelia Boenigk)

http://www.postgresql.org (Infos zu PostgreSQL und Download der Versionen)

http://postgis.refractions.net (PostGIS-Website mit Dokumentation)

http://www.umn-mapserver.de (Die Standardseite zum Thema UMN Mapserver)

Daten: Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser Stelle gedankt werden.

1.PostgreSQL und PostGis - Eine kurze Einführung

Datenbanken eignen sich herrvorragend zur Verwaltung großer Datensätze, da ein diesbezüglicher Zugriff bzw. eine Speicherung bedeutend schneller als in einem herkömmlichen Dateisystem geschieht. Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird. PostGIS bezeichnet einen Aufsatz für das Datenbanksystem PostgreSQL, dessen Funktion in der Verwaltung von Geodaten liegt. Über PostGIS ist es möglich PostgreSQL als optimale Datenbank für GIS-Anwendungen zu benutzen, gesteuerte Mehrbenutzerfähigkeit und SQL-Abfragen werden möglich. Das bedeutet z.B. dass innerhalb eines Datenbestandes eine Selektion schnell und einfach lediglich die gewünschten Einträge präsentiert. Da es sich um ein relationales Datenbanksystem handelt, werden Redundanz und Inkonsistenz der Daten vermieden. Der UMN Mapserver unterstützt die Implikation von PostGIS-Daten.

Innerhalb von PostGIS sind eine Fülle von Funktionen zur Abfrage und Manipulation von Geodaten enthalten, somit wird eine OGC (OpenGis Consortium)-konforme Anwendung interessierten Nutzern zur Verfügung gestellt. Es ist sogar möglich, ESRI Shapedateien zu importieren bzw. zu exportieren oder von externen Anwendungen (z.B. MS Access) über die ODBC Schnittstelle (oder aber JDBC) auf PostgreSQL/PostGIS zuzugreifen. Auch ist über Programmiersprachen wie z.B. PHP ein Zugriff auf angelegte Datenbanken problemlos möglich.


2. Die Installation

Ausgehend davon, dass Sie bei sich bereits den Apache-Webser, PHP sowie den UMN Mapserver installiert haben (sollte dieses nicht der Fall finden Sie eine Anleitung dafür unter http://www.umn-mapserver-communtiy.de.tc), installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner. Ob Ihr UMN-Mapserver auch tatsächlich PostGIS unterstützt, können Sie auf der Kommandozeilenebene von MS DOS überprüfen. Gehen Sie in das Verzeichnis, in welchem die Datei "mapserv.exe" liegt und geben Sie ein:

„mapserv -v“.

Sie erhalten nun die Versions-Daten, der Eintrag „INPUT=POSTGIS“ muss erhalten sein. Sollte dieses nicht zutreffen, müssen Sie eventuell eine neuere UMN Mapserver Version installieren oder aber die vorhandene neu kompilieren.

Eine Version von PostgreSQL können Sie sich bei http://www.postgres.org herunterladen (eine Version ab 8.0 sollte es auf jeden Fall sein). Eine ausgezeichnete Installationsanleitung von Cornelia Boenigk finden Sie auf der Seite von http://www.postgresql.de (genauer: http://www.postgresql.de/postgresql8_win.html).


3. Die Tools

Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:

1. Die MS-DOS Kommandozeile. Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.


Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“) auf der MS-Dos-Kommandozeilenebene Bild1.gif


2. Die sogenannte psql-Konsole. Ein ganz ausgesprochen nützliches und mächtiges Tool. Sie können es z.B. unter „Start -> Alle Programme -> PostgreSQL 8.0 -> psql zu template1“ aufrufen, oder aber auf der MS-DOS-Ebene im PostgreSQL-Unterverzeichnis „bin“ über den Befehl

„psql –U postgres template1“

(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel). Mittels dieser Konsole können SQL-Befehle an den Datenbankserver geliefert werden. Beim Aufruf der psql-Konsole muss, sofern nicht von Ihnen in der Konfigurationsdatei „pg_hba.conf"(liegt im Data-Verzeichnis von PostgreSQL) geändert, ein Paßwort eingegeben werden (eben jenes, welches Sie bei der Installation von PostgreSQL vergeben haben). Beim Eintrag dieses Paßwortes bewegt sich der Cursor NICHT (das ist normal und kein Programmfehler oder so...).

3. Die Oberfläche von pgAdmin III (wird ab der Version 8.0 standardmässig mit installiert). Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.


Abbildung 2: Die Oberfläche von pgAdmin III Bild2a.gif

3.1 Arbeit auf der MS-DOS-Eingabekonsole

Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier

„psql --help“

ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).

Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl Psql--help.gif

In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“. Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer). Geben Sie nun einmal zur Verdeutlichung den Befehl

„createdb Testdatenbank“

ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung. Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist. Öffnen Sie diese Datei einmal mit einem Texteditor und ändern Sie am Ende der Datei den Eintrag von „md5“ in „trust „(siehe Abbildung 4)(Wenn Sie lieber mit Passwörtern arbeiten, dann können Sie diese Datei später natürlich wieder in den Ursprungszustand bringen.....).

Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’) Pg hba editor.gif

Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole

„createdb Testdatenbank“ 

eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist: Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt:

“...user „Kalle“ does not exist“ 

(siehe Abbildung 5).

Abbildung 5: Unschöne Fehlermeldung Fehlermeldung.gif

Ok, wie gehen wir damit um? Es gibt verschiedene Möglichkeiten: 1. Sie loggen sich als registrierter PostgreSQL-Benutzer ein. Der Befehl auf der MS-Dos-Ebene:

"psql –U postgres template1" 

(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.

2. oder: Sie arbeiten als ein registrierter Benutzer durch den Zusatz

„-U [Nutzername]“

,also in diesem Beispiel auf MS-Dos-Ebene z.B.

„createdb -U postgres testdatenbank“ 

(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).

3.oder aber Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“). Der Befehl dafür lautet:

„Create User “ Kalle“ Createdb Createuser;“ (

mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).

Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal

„\du“ 

eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).


Abbildung 6: Auf psql-Ebene User anlegen und überprüfen Createuser du.gif

Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.

Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an: Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS". Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es. Es enthält ein Mapfile (mapdatei.map) zwei Templates (template.html & ausgabetemplatefuerpostgis.html) eine Start-datei (Start.html), einen fonts bzw. symbols-Ordner sowie den Ordner „data“, welcher wiederum zwei Shapes (Lan.shp & testdaten.shp) mit den dazu gehörigen Dateien enthält.

Datei:4.Einspielen einer Shape-Datei


Zunächst geht es uns um die Datei „testdaten.shp“. Diese Datei enthält Probedaten aus der wunderschönen Wesermarsch in Norddeutschland. Mittels Punkt-Daten werden zufällig ausgewählte Standorte dargestellt (über Gauß-Krüger-Koordinaten) und mittels einiger zufällig ausgewählter Attribute beschrieben. Selbstredend haben die hier angehängten Daten nichts mit den tatsächlich an dieser Position vorzufindenden Geoobjekten zu tun. Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.

Wir wollen im folgenden Beispiel nun eine Datenbank anlegen und die Daten aus der Shape-Datei dort einspielen (öffnen Sie doch einmal die Attributtabelle der Shapedatei (namentlich: testdaten.dbf) und schauen Sie sich an, was da eigentlich eingetragen wurde).

Wie schon gesagt, es gibt für verschiedene Funktionen verschiedene Wege. Um eine Datenbank (nennen wir sie „Geodaten“) anzulegen, wählen wir in diesem Fall einmal den Weg über die psql-Konsole. Geben Sie dort

„Create Database Geodaten;“ 

ein und kontrollieren Sie mittels des Befehls

„\l“

ob die Datenbank angelegt wurde.

Unter PostgreSQL gibt es verschiedene prozedurale Sprachen, welche für die Erstellung bestimmter Funktionen notwendig sind. Für PostGIS bedarf es der Sprache „plpgsql“. Normalerweise sollte diese durch die Installation von PostGIS automatisch bei jeder neu angelegten Datenbank vorhanden sein. Damit Sie nicht aus der Übung kommen geben Sie diesmal bitte wieder auf MS-DOS-Ebene

„Createlang –list Geodaten“ 

ein (siehe Abbildung 7).

Abbildung 7: plpgsql vorhanden? Sprachueberpruefung.gif