http://giswiki.org/api.php?action=feedcontributions&user=Kai-Behncke&feedformat=atomGISWiki - Benutzerbeiträge [de]2024-03-29T07:32:34ZBenutzerbeiträgeMediaWiki 1.25.3http://giswiki.org/index.php?title=Veranstaltungen&diff=16626Veranstaltungen2009-03-10T12:05:56Z<p>Kai-Behncke: /* 2010 */</p>
<hr />
<div>Kennen Sie weitere '''Veranstaltungen''' aus dem Geosektor? [mailto:h-j.luecking@t-online.de Schreiben Sie eine Mail] oder [{{SERVER}}/index.php?title=GISWiki:Veranstaltungen&action=submit tragen Sie Ihre Veranstaltungen hier direkt ein] ein (s. a. Vorlage [[GISWiki:Vorlage Veranstaltungseintrag|Veranstaltungseintrag]]).<br />
<br />
<!-- <br />
<br />
DIESE SEITE BINDET WEITERE SEITEN EIN!<br />
<br />
ZUM BEARBEITEN DER SEITE BITTE DIE ENTSPRECHENDEN LINKS UNTEN AUF DER SEITE NUTZEN<br />
ODER IN DER SEITENANSICH DEN MONTAT DIREKT "[bearbeiten]"<br />
<br />
--><br />
<br />
=Veranstaltungen=<br />
<br />
<br />
<br />
<br />
== 2009 ==<br />
<br />
{{:Veranstaltungen 2009 - 02 - Februar}}<br />
<br />
{{:Veranstaltungen 2009 - 03 - März}}<br />
<br />
{{:Veranstaltungen 2009 - 04 - April}}<br />
<br />
{{:Veranstaltungen 2009 - 05 - Mai}}<br />
<br />
{{:Veranstaltungen 2009 - 06 - Juni}}<br />
<br />
{{:Veranstaltungen 2009 - 07 - Juli}}<br />
<br />
{{:Veranstaltungen 2009 - 08 - August}}<br />
<br />
{{:Veranstaltungen 2009 - 09 - September}}<br />
<br />
{{:Veranstaltungen 2009 - 10 - Oktober}}<br />
<br />
{{:Veranstaltungen 2009 - 11 - November}}<br />
<br />
{{:Veranstaltungen 2009 - 12 - Dezember}}<br />
<br />
[[Kategorie:Veranstaltungen]]<br />
<br />
== 2010 ==<br />
<br />
* '''1. Januar - 2010''' - [http://www.isaust.org.au FIG 2010 Sydney], Sidney, Australia{{}}<br />
<br />
* '''2. - 4. März - 2010''' - [http://www.fossgis.de/konferenz FOSSGIS], }<br />
<br />
* '''26. - 30. April - 2010''' - [http://www.asprs.org ASPRS Annual Conference], San Diego, CA, {{USA}}<br />
<br />
*'''April/Mai 2010''' - [http://www.fig.net FIG Kongress], Sydney (AUS)<br />
<br />
*'''April/Mai 2010''' - [http://www.intergeo-east.com INTERGEO East Fachmesse und Kongress], Istanbul (TR)<br />
<br />
*'''05. - 07. Oktober 2010''' - [http://www.intergeo.de INTERGEO Fachmesse und Kongress], Köln (GER)<br />
<br />
<br />
<br/><br />
<br />
== Abgelaufene Veranstaltungstermine ==<br />
<br />
{{Seite|Abgelaufene Veranstaltungstermine}}<br />
<br />
<br><br />
<br />
=Links =<br />
<br />
== Internationale GIS-Veranstaltungskalender ==<br />
<br />
* [http://www.geobranchen.de/abfrage/eventquery.php?menue=GIS&gbrselect=_10700 http://www.GEOevents.de] z. T. auch internationale Veranstaltungen<br />
<br />
== GIS-Veranstaltungskalender aus Deutschland ==<br />
<br />
* [http://www.geobranchen.de/abfrage/eventquery.php?menue=GIS&gbrselect=_10700 http://www.GEOevents.de] z. T. auch internationale Veranstaltungen<br />
<br />
* [http://www.business-geomatics.com/pages/termine.php Veranstaltungskalender Business Geomatics - Wirtschaftszeitung für Geoinformatik]<br />
<br />
<br />
== GIS-Veranstaltungskalender aus der Schweiz ==<br />
<br />
* [http://www.sogi.ch/agenda.html http://www.sogi.ch/agenda.html]<br />
<br />
* [http://www.geomatik.ethz.ch/news/events ETH-Zürich Geomatik und Planung]: Geomatikseminare der Institute für Geodäsie und Photogrammetrie (IGP) und Kartographie (IKA) unterhalten einen Veranstaltungskalender mit regelmässigen Vorträgen zu Themen aus dem Gebiet der Geomatik.<br />
<br />
== Weitere Veranstaltungskalender ==<br />
<br />
* http://www.dgpf.de/<br />
<br />
[[Kategorie:Veranstaltungen|0]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2052UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:44:40Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http://www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
<br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
<br />
[[Image:Marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
<br />
<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2051UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:42:46Z<p>Kai-Behncke: /* Mapfile und Template */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
<br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
<br />
[[Image:Marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
<br />
<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2050UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:42:04Z<p>Kai-Behncke: /* Mapfile und Template */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
<br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[Marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
<br />
<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2049UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:40:05Z<p>Kai-Behncke: /* Mapfile und Template */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
<br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2048UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:39:35Z<p>Kai-Behncke: /* Einspielen einer Shape-Datei */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
<br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2047UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:38:57Z<p>Kai-Behncke: /* Einspielen einer Shape-Datei */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2046UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:38:14Z<p>Kai-Behncke: /* 3.1 Arbeit auf der MS-DOS-Eingabekonsole */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
<br />
<br />
'''Ok, wie gehen wir damit um?'''<br />
'''Es gibt verschiedene Möglichkeiten:'''<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2045UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:37:32Z<p>Kai-Behncke: /* 3.1 Arbeit auf der MS-DOS-Eingabekonsole */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2044UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:37:02Z<p>Kai-Behncke: /* Die Tools */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2043UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:36:31Z<p>Kai-Behncke: /* Die Tools */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2042UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:35:53Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter [[UMN MapServer Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2041UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:34:45Z<p>Kai-Behncke: /* '''Die Installation''' */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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) oder aber unter[[UMN Mapserver Installationsanleitung von Kai Behncke]], installieren Sie nun bitte auch PostgreSQL mit dem PostGIS-Aufsatz auf Ihrem Rechner.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2040UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:33:22Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2039UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:33:02Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2038UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:31:41Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert <br />
von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(Deutschsprachige Seite zu PostgreSQL, hier gibt es eine sehr gute Einführung in die Geheimnisse <br />
von PostgreSQL von Stefan Kunick zum Download sowie eine zu empfehlende Installationsanleitung von <br />
Cornelia Boenigk)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''Daten:''' Die Beispieldaten wurden z.T. durch eigene Bearbeitung, insbesondere aber auf <br />
Grundlage durch cand. Dipl.-Umw. Daniel Tomowski erstellt. <br />
'''All jenen Personen, welche an den oben aufgeführten Quellen mitgewirkt haben, soll an dieser <br />
Stelle gedankt werden.'''<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2037UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:30:14Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
August 2005<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2036UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:29:43Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
Der Text wurde erstellt von Dipl.Goegr. Kai Behncke<br />
http:www.umn-mapserver-community.de.tc<br />
<br />
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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2035UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:28:47Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2034UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:27:44Z<p>Kai-Behncke: /* '''1.PostgreSQL und PostGis - Eine kurze Einführung''' */</p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== 4.Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== 5.Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2033UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:27:16Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
<br />
== 4.Einspielen einer Shape-Datei ==<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]<br />
<br />
Im Normallfall sollte die Datenbank „Geodaten“ auch bereits die PostGIS-Objekte und Funktions-Definitionen sowie die Tabellen „geometry_columns“ und „spatial_ref_sys“ enthalten.<br />
Überprüfen Sie dieses bitte sicherheitshalber einmal (z.B. mittels PgAdmin III oder geben Sie auf DOS-Ebende ein: <br />
„psql –d Geodaten“ <br />
(damit verbinden Sie sich ja mit der Datenbank „Geodaten“), anschließend geben Sie (nun ja auf psql-Ebene) <br />
„\d“ <br />
ein, und Ihnen werden auch die vorhandenen Tabellen angezeigt.<br />
<br />
Sollten die Tabellen“geometry_columns“ und „spatial_ref_sys“ wider Erwarten nicht vorhanden sein, so müssen Sie zunächst einmal die Datei „postgis.sql“ in die Datenbank einladen. Diese liegt im Verzeichnis: C:\Programme\Postgresql\8.0\share\contrib\<br />
<br />
Also geben Sie auf MS-DOS Ebene ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\postgis.sql“<br />
Anschließend laden Sie natürlich auch noch die Datei spatial_ref_sys.sql ein:<br />
„Psql –d Geodaten –f C:\Programme\postgresql\8.0\share\contrib\spatial_ref_sys.sql“<br />
<br />
Um nun die Shape-Datei in ein für PostgreSQL relevantes Tabellensystem zu bringen, benutzen wir auf MS-DOS-Ebene folgenden Befehl:<br />
„Shp2pgsql D:\PostgreSQL-Lernen\data\testdaten.shp Beispieltabelle Geodaten > <br />
D:\Postgresql-Lernen\data\testdaten.sql“<br />
<br />
Dieser Befehl bewirkt, dass eine SQL-Datei angelegt wird, welche sämtliche Befehle für das Anlegen der Tabelle „Beispieltabelle“ in der Datenbank „Geodaten“ enthält. Diese Datei muß nun in die Datenbank „Geodaten“ eingefügt werden. Dieses geschieht mittels des Befehls:<br />
„psql –d Geodaten –f D:\Postgresql-Lernen\data\testdaten.sql“.<br />
<br />
Öffnen Sie doch einmal pgAdmin III, verbinden Sie sich mit dem Datenbank-Server, öffnen Sie die Datenbank „Geodaten“. Dann jeweils Doppelklick auf „Schemata“, „public“ und „Tabellen“ . Hier müsste nun auch die eben angelegte Tabelle „Beispieltabelle“ auftauchen. Öffnen Sie diese (rechte Maustaste -> Daten anzeigen) und schauen Sie mal, ob die Daten auch eingetragen wurden.<br />
Die Einträge „Gid“, und „the_geom“ wurden zusätzlich durch PostGIS eingefügt (die Struktur können Sie sich natürlich auch sehr schön mittels psql anschauen. Bei Verbindung mit der Datenbank „Geodaten“ einfach „\d Beispieltabelle“ angeben (siehe Abbildung 8).<br />
<br />
<br />
Abbildung 8: Überprüfen der Tabelle „Beispieltabelle“<br />
[[Image:Beispieltabelleueberpruefen.gif]]<br />
<br />
<br />
== 5.Mapfile und Template ==<br />
<br />
<br />
Nachdem Sie das Shapefile in die PostGIS-Datenbank übertragen haben, geht es nun um die Darstellung mittels des UMN-Mapservers. Öffnen Sie doch einmal die heruntergeladene Datei „mapdatei.map“ und versuchen Sie die Einträge nachzuvollziehen. Eventuell werden Sie hier noch einige Pfade anpassen müssen (stimmen SHAPEPATH und IMAGEPATH, liegen „template.html“ bzw „ausgabetemplatefuerpostgis.html“ an der richtigen Stelle??).<br />
<br />
Öffnen Sie in einem Browser Ihrer Wahl die im heruntergeladenen Verzeichnis liegende Datei „Start.html“ (achten Sie bitte darauf, dass der Link auch wirklich korrekt ist, gegebenenfalls müssen Sie diesen anpassen (je nachdem wo bei Ihnen die „mapserv.exe“ bzw. die Datei „mapdatei.map“ liegt). Läuft alles korrekt, so müßten Sie folgendes Fenster erhalten (Abbildung 9):<br />
<br />
<br />
Abbildung 9: Darstellung im Browser<br />
[[Image:Diebrowserabbildung.gif]]<br />
<br />
Der Eintrag in „mapdatei.map“, welcher für uns als PostgreSQL/PostGIS-Lerner besonders von Bedeutung ist, ist folgender:<br />
<br />
„CONNECTIONTYPE postgis<br />
CONNECTION „user=postgres dbname=Geodaten<br />
host=localhost port=5432“<br />
DATA „the_geom from beispieltabelle““<br />
<br />
Zur Erläuterung: CONNECTIONTYPE postgis:<br />
Hiermit wird deutlich gemacht, dass eine externe Datenquelle vorliegt, eben die zu der PostGIS-Datenbank.<br />
<br />
CONNECTION „user=postgres dbname=Geodaten host=localhost port=5432“<br />
Besonders wichtig um überhaupt eine Verbindung herzustellen (Benutzername, Datenbank, Adresse des Datenbankservers & Port werden hier definiert). In diesem Falle wird ohne Passwort gearbeitet, ansonsten hieße es z.B. „user=postgres password=xyz dbname=Geodaten host=localhost port=5432"<br />
<br />
DATA „the_geom from beispieltabelle“<br />
Dieser Parameter zeigt an, wo die Geodaten vorliegen. Diese wurden ja mittels des Befehls „shp2pqsql“ eingespielt. Der Name „the geom“ wird standardmässig angelegt.<br />
<br />
Im Klartext: In der Definition des Layers „Testdaten“ wird die Verbindung zu den Punktgeometriedaten (welche innerhalb dieses Beispiels als Sterne dargestellt werden) in der Tabelle „Beispieltabelle“ der Datenbank „Geodaten“ hergestellt. Diese Daten werden dann im Template „template.html“ (dieses ist ja im Mapfile definiert) visualisiert.<br />
<br />
Innerhalb des „Template.html“ (also des aktuellen Browserfensters) gibt es dann noch die Möglichkeit, eine Abfrage durchzuführen, schließlich kann es ja von Interesse sein sich weitere Daten, welche zu den einzelnen Punkten vorliegen, anzeigen zu lassen.<br />
Dieses geschieht mittels eines ganz normalen HTML-Formulars (schauen Sie sich am Besten einmal den Quellcode von „template.html“ an).<br />
<br />
Bei einem Klick auf „Abfrage“ wird der Parameter „mode = query“ an das CGI-Skript übermittelt. Damit dann auch wirklich Daten ausgegeben werden, muss im Mapfile (mapdatei.map) ein Ausgabetemplate vorliegen (hier: ausgabetemplatefuerpostgis.html).<br />
Klicken Sie auf "Abfrage" und dann auf einen der Sterne, so werden Ihnen die weiteren Daten, welche in der Datenbank gespeichert sind, angezeigt (Abbildung 10).<br />
<br />
<br />
Abbildung 10: Beispiel für zu einem Geoobjekt zugehörigen Daten<br />
[[marthamorgenrot.gif]]<br />
<br />
Gut, ich hoffe, dass Ihnen das Prinzip der Verbindung zwischen dem UMN Mapserver und PostgreSQL/PostGis einigermaßen klar geworden ist?<br />
<br />
Fragen können jederzeit im Forum auf http://www.selbstverwaltung-bundesweit.de/mapserver/modules.php?name=Forums<br />
gestellt werden.<br />
Für Anregungen und Verbesserungsvorschläge zu dieser Anleitung bin ich natürlich jederzeit offen.<br />
Dipl. Geogr. Kai Behncke<br />
E.mail: Kai-Behncke@gmx.de</div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Marthamorgenrot.gif&diff=6602Datei:Marthamorgenrot.gif2005-08-02T17:25:08Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Beispieltabelleueberpruefen.gif&diff=6601Datei:Beispieltabelleueberpruefen.gif2005-08-02T17:23:12Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2032UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:19:35Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]<br />
<br />
Wenn Sie anschließend noch einmal in der MS-Dos-Eingabekonsole <br />
„createdb Testdatenbank“ <br />
eingeben, dann erfahren Sie in der Fehlermeldung, was das eigentliche Problem ist:<br />
Sie, als Hauptwindowsnutzer (in diesem Beispiel „Kalle“), sind als Benutzer in der PostgreSQL-Datenbank gar nicht angelegt: <br />
“...user „Kalle“ does not exist“ <br />
(siehe Abbildung 5).<br />
<br />
Abbildung 5: Unschöne Fehlermeldung<br />
[[Image:fehlermeldung.gif]]<br />
<br />
Ok, wie gehen wir damit um?<br />
Es gibt verschiedene Möglichkeiten:<br />
'''1.''' Sie loggen sich als registrierter PostgreSQL-Benutzer ein.<br />
Der Befehl auf der MS-Dos-Ebene: <br />
"psql –U postgres template1" <br />
(wie gesagt: Sofern Sie bei der Installation den User „postgres“ angelegt haben) und arbeiten dann auf der psql-Ebene.<br />
<br />
'''2. oder:'''<br />
Sie arbeiten als ein registrierter Benutzer durch den Zusatz <br />
„-U [Nutzername]“<br />
,also in diesem Beispiel auf MS-Dos-Ebene z.B. <br />
„createdb -U postgres testdatenbank“ <br />
(Geben Sie ruhig auch mal „psql --help“ ein, dadurch wird einiges klarer).<br />
<br />
'''3.oder aber''' Sie legen in der psql-Konsole einen Benutzer an, welchen den Namen Ihres Standard-Windowsbenutzers trägt (in diesem Fall „Kalle“).<br />
Der Befehl dafür lautet: <br />
„Create User “ Kalle“ Createdb Createuser;“ (<br />
mittels des Zusatzes „Createdb Createuser“ erhält der User den Status eines Superadministrators).<br />
<br />
Um zu überprüfen, ob der User auch angelegt wurde bitte auf psql-Ebene einmal <br />
„\du“ <br />
eingeben. Der neue User müßte jetzt aufgeführt werden (siehe Abbildung 6).<br />
<br />
<br />
Abbildung 6: Auf psql-Ebene User anlegen und überprüfen<br />
[[Image:createuser_du.gif]]<br />
<br />
Natürlich können Sie diese Funktionen auch mittels des Tools pgAdmin III ausführen.<br />
<br />
Nachdem die Grundlagen nun wahrscheinlich geklärt sind fangen wir mal mit der eigentlichen Arbeit an:<br />
Auf der Seite http://www.umn-mapserver-community.de.tc finden Sie im Downloadbereich ein Datenpaket mit der Bezeichnung: "Übungsdaten für PostgreSQGL/PostGIS".<br />
Laden Sie sich dieses bitte einmal runter (speichern Sie es z.B. auf D:\PostgreSQL-Lernen) und entpacken Sie es.<br />
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.<br />
<br />
[[Image:4.Einspielen einer Shape-Datei]]<br />
<br />
<br />
Zunächst geht es uns um die Datei „testdaten.shp“.<br />
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.<br />
Beispielhaft könnte es sich bei diesen Daten um Tourismusanbieter oder dergleichen handeln.<br />
<br />
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).<br />
<br />
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.<br />
Geben Sie dort <br />
„Create Database Geodaten;“ <br />
ein und kontrollieren Sie mittels des Befehls <br />
„\l“<br />
ob die Datenbank angelegt wurde.<br />
<br />
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 <br />
„Createlang –list Geodaten“ <br />
ein (siehe Abbildung 7).<br />
<br />
Abbildung 7: plpgsql vorhanden? <br />
[[Image:sprachueberpruefung.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Sprachueberpruefung.gif&diff=6600Datei:Sprachueberpruefung.gif2005-08-02T17:19:07Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Createuser_du.gif&diff=6599Datei:Createuser du.gif2005-08-02T17:17:15Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2031UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:13:56Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2030UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:12:55Z<p>Kai-Behncke: /* Quellen: */</p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2029UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:11:18Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== 3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2028UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:10:29Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.<br />
<br />
<br />
Abbildung 2: Die Oberfläche von pgAdmin III<br />
[[Image:Bild2a.gif]]<br />
<br />
== <br />
3.1 Arbeit auf der MS-DOS-Eingabekonsole ==<br />
<br />
<br />
Gehen Sie bitte einmal auf der Eingabekonsole in das PostgreSQL-Unterverzeichnis „bin“ und geben Sie hier <br />
„psql --help“<br />
ein. Sie erhalten anschließend unter anderem Informationen über den aktuellen Standardbenutzer und den Standard-Datenbanknamen (siehe Abbildung 3).<br />
<br />
Abbildung 3: MS-Dos-Eingabekonsole mit „psql --help“-Befehl<br />
[[Image:psql--help.gif]]<br />
<br />
In diesem Beispiel lautet der Name des Standardbenutzers „Kalle“.<br />
Windows geht davon aus, dass Sie als der Standard-Windowsbenutzer auf der Eingabekonsole arbeiten (und nicht als der interne PostgreSQL-Benutzer).<br />
Geben Sie nun einmal zur Verdeutlichung den Befehl <br />
„createdb Testdatenbank“<br />
ein. Sie werden nach einem Passwort gefragt, geben dieses ein und erhalten eine Fehlermeldung.<br />
Die Passwortabfrage geschieht, weil dieses in der Konfigurationsdatei „Pg_hba.conf“ so definiert ist.<br />
Ö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.....).<br />
<br />
Abbildung 4: Auszug aus der Datei pg_hba.conf („md5“ wurde hier in „trust“ geändert’)<br />
[[Image:pg_hba_editor.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Fehlermeldung.gif&diff=6598Datei:Fehlermeldung.gif2005-08-02T17:06:34Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Pg_hba_editor.gif&diff=6597Datei:Pg hba editor.gif2005-08-02T17:06:03Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Psql--help.gif&diff=6596Datei:Psql--help.gif2005-08-02T17:05:37Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Bild2a.gif&diff=6595Datei:Bild2a.gif2005-08-02T17:05:08Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2027UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:03:58Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]<br />
<br />
<br />
'''2. Die sogenannte psql-Konsole.'''<br />
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 <br />
<br />
„psql –U postgres template1“<br />
<br />
(Der Name „postgres“ ist hier Ihr Benutzername, welcher bei der Installation von PostgreSQL angegeben wurde; dieser ist natürlich variabel).<br />
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...).<br />
<br />
'''3. Die Oberfläche von pgAdmin III''' (wird ab der Version 8.0 standardmässig mit installiert).<br />
Dieses können Sie unter: „Start -> Alle Programme -> PostgreSQL 8.0 -> pgAdmin III“ aufrufen.</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2026UMN Mapserver & PostgreSQL/PostGIS2005-08-02T17:03:01Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
<br />
„mapserv -v“.<br />
<br />
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.<br />
<br />
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).<br />
<br />
<br />
== 3. Die Tools ==<br />
<br />
<br />
Um mit PostgreSQL Daten zu verarbeiten bzw. zu verwalten gibt es bei Windows im Wesentlichen drei Möglichkeiten:<br />
<br />
'''1. Die MS-DOS Kommandozeile.'''<br />
Die PostgreSQL Programme werden aus dem PostgreSQL-Unterverzeichnis „bin“ gestartet.<br />
<br />
<br />
Abbildung 1: Aufruf eines PostgreSQL-Programms (in diesem Fall „createdb“)<br />
auf der MS-Dos-Kommandozeilenebene<br />
[[Image:Bild1.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Bild1.gif&diff=6594Datei:Bild1.gif2005-08-02T17:01:19Z<p>Kai-Behncke: </p>
<hr />
<div></div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2025UMN Mapserver & PostgreSQL/PostGIS2005-08-02T16:55:41Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.<br />
<br />
<br />
== '''2. Die Installation''' ==<br />
<br />
<br />
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.<br />
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:<br />
„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.<br />
<br />
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).</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2024UMN Mapserver & PostgreSQL/PostGIS2005-08-02T16:54:38Z<p>Kai-Behncke: </p>
<hr />
<div>== Quellen: ==<br />
<br />
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:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
<br />
== '''1.PostgreSQL und PostGis - Eine kurze Einführung''' ==<br />
<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2023UMN Mapserver & PostgreSQL/PostGIS2005-08-02T16:52:59Z<p>Kai-Behncke: </p>
<hr />
<div>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 ==Quellen==:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
'''==1.PostgreSQL und PostGis - Eine kurze Einführung=='''<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2022UMN Mapserver & PostgreSQL/PostGIS2005-08-02T16:51:07Z<p>Kai-Behncke: </p>
<hr />
<div>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 Quellen:<br />
<br />
'''Literatur:'''<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
'''Internet:'''<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
'''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.<br />
--------------<br />
'''1.PostgreSQL und PostGis - Eine kurze Einführung'''<br />
<br />
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.<br />
Die Datenverwaltung wird auf ein externes System übertragen. Dieses bedeutet, dass der Rechenaufwand auf dem System, welches z.B. die Karten ausgibt, geringer wird.<br />
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.<br />
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.<br />
<br />
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.</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_Mapserver_%26_PostgreSQL/PostGIS&diff=2021UMN Mapserver & PostgreSQL/PostGIS2005-08-02T16:49:50Z<p>Kai-Behncke: </p>
<hr />
<div>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 Quellen:<br />
<br />
Literatur:<br />
CCGIS & terrestris (2004): Praxishandbuch WebGIS mit Freier Software, Bonn<br />
<br />
Fischer, Thorsten (2003): UMN MapServer 4.0- Handbuch und Referenz, Map Media Gmbh, Berlin<br />
<br />
Internet:<br />
http://forum.2lucky.de (Datenbankforum, auch zu PostgreSQL)<br />
<br />
http://freegis.org<br />
(Linksammlung und Kurzbeschreibung zu freier GIS-Software und frei zugänglichen Geodaten initiiert von der Intevation GmbH)<br />
<br />
http://www.mapserver.uni-vechta.de/webgis/webgis.htm<br />
(Homepage mit vielen Infos zum Thema WebGis)<br />
<br />
http://www.postgresql.de<br />
(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)<br />
<br />
http://www.postgresql.org<br />
(Infos zu PostgreSQL und Download der Versionen)<br />
<br />
http://postgis.refractions.net<br />
(PostGIS-Website mit Dokumentation)<br />
<br />
http://www.umn-mapserver.de<br />
(Die Standardseite zum Thema UMN Mapserver)<br />
<br />
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.<br />
--------------</div>Kai-Behnckehttp://giswiki.org/index.php?title=UMN_MapServer_Installationsanleitung_von_Kai_Behncke&diff=2817UMN MapServer Installationsanleitung von Kai Behncke2005-08-02T16:46:02Z<p>Kai-Behncke: /* 4. Das Itasca-Beispiel */</p>
<hr />
<div>= Installation des [[UMN-Mapserver]]s =<br />
<br />
Quelle:<br />
Vechta, Juni 2005<br />
Dipl. Geogr. Kai Behncke<br />
E-mail: Kai-Behncke@gmx.de<br />
Ab 15.Juli: http://www.umn-mapserver-community.de.vu<br />
<br />
==Erste Schritte anhand eines Beispiels==<br />
<br />
Das hier publizierte "Installatonsknowhow" resultiert aus eigenen Erfahrungen aber auch, und insbesondere, aus dem ganz hervorragenden Buch "Praxishandbuch WebGis mit freier Software" (Gemeinschaftsprojekt von CCGIS und terrestris) welches an dieser Stelle wärmstens empfohlen werden soll. Dieses ist unter folgendem Link downloadbar:<br />
<br />
http://www.terrestris.de/hp/shared/downloads/Praxishandbuch_WebGIS_Freie_Software.pdf<br />
<br />
Das Itasca-Beispiel wurde von der Homepage http://mapserver.gis.umn.edu/doc40/doc.html heruntergeladen, original stammt es von Steve Lime, Minnesota DNR Einen ausgezeichneten Sammelpool zum UMN-Mapserver finden Sie unter:<br />
<br />
http://www.umn-mapserver.de<br />
<br />
Hervorragende Hilfen insbesondere zur Installation des Apache-Servers finden Sie unter:<br />
<br />
* http://www.apachefriends.de <br />
* http://www.exine.de<br />
<br />
'''All jenen Personen, welche sich an diesen Projekten beteiligen/beteiligt haben, soll an dieser Stelle gedankt werden. '''<br />
<br />
== 1.Installation eines Apache-Webservers ==<br />
<br />
Damit der Mapserver überhaupt läuft benötigen Sie vorab einen Webserver. Zu empfehlen ist dersehr weit verbreitete "[[Apache]] Webserver".Auf der Seite http://www.apache.org können Sie sich diesen herunterladen. Es spielt keine besondereRolle, ob Sie die Version 1.3.x oder aber 2.x verwenden.Sollten Sie bislang noch nie mit dem Webserver gearbeitet haben, so kommen Sie um ein wenig Autodidaktik wohl kaum herum, aber nur keine Sorge, so schwierig ist das alles nicht und Sie werden schnell Erfolgserlebnisse vermelden können.<br />
<br />
Gerne kann ich die Homepage http://www.apachefriends.de empfehlen. Dort gibt es auch ein sehr gutes Forum, in welchem Ihnen bei Installationsproblemen schnell geholfen wird, Fragen und Verständnisprobleme können hier geklärt werden.Eine ausgezeichnete Installationsanleitung des Apache-Servers finden Sie auch bei http://www.exine.de.<br />
<br />
Für die Installation des UMN-Mapservers ist es '''<u>nicht</u>''' zu empfehlen, sich ein Apache-Komplettprodukt zu installieren (z.B. [[:de:XAMPP|XAMPP]]), dieses zu konfigurieren gestaltet sich recht schwierig.Ich persönlich arbeite mit Apache 1.3.29.Sie können auch folgendes bei Google eingeben: ''"download apache_1.3.29-win32-x86-no_src_exe"'' und diese Datei dann bequem bei sich installieren.<br />
<br />
Für Apacheneulinge: Um Skripte (z.B. [[PHP]]-Skripte) auf Ihrem Server auszuführen, '''müssen '''dies ein dem Ordner "htdocs" (oder einen Unterordner von "htdocs") des Servers gespeichert sein (z.B. <code>Programme -> Apache Group -> Apache -> htdocs</code>), nur dort können Sie gestartet werden.<br />
<br />
So weit so gut. Nachdem Sie nun den Apache installiert haben beschäftigen Sie sich bitte mit der Konfigurationsdatei "'''httpd.conf'''" (im Ordner : <code>Programme -> Apache Group -> Apache -> conf</code>). Öffnen Sie diese Datei (z.B. mit einem Texteditor).Nun müssen Sie bitte einige Änderungen vornehmen. Schreiben Sie an das Ende der Datei folgendes:<br />
<br />
LoadModule php4_module c:/php4/sapi/php4apache.dll<br />
AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php .php3 <br />
AddType application/x-httpd-php .php4<br />
<br />
Der UMN-Mapserver legt, wie Sie später sehen werden, temporäre Dateien in einem Verzeichnis ab; für die Ausgabe von Daten ist dieses elementar. Sie müssen dieses Verzeichnis in der "''httpd.conf''" definieren. Nennen Sie dieses z.B. "tmp" (und vergessen Sie nicht, es auch tatsächlich anzulegen) und schreiben Sie folgendes in die '''httpd.conf-Datei'''<nowiki>:</nowiki><br />
<br />
Alias /tmp/ "C:/Programme/Apache Group/Apache/htdocs/tmp"<br />
<Directory "C:/Programme/Apache Group/Apache/htdocs/tmp"> <br />
Options All <br />
AllowOverride None <br />
Order allow, deny<br />
Allow from all<br />
</Directory><br />
<br />
In diesem Falle wird mit absoluten Pfaden gearbeitet, natürlich können Sie auch relative Angaben machen, aber um den Server zum Laufen zu bringen sind absolute erst einmal einfacher. Testen Sie nun, nach einem '''Neustart''' des Computers, ob Sie den Apache-Server starten können.<br />
<br />
Unter Umständen erhalten Sie bezogen auf Zeile 311-314 in der "''httpd.con''f"-Datei eine Fehlermeldung, kommentieren Sie dann einfach diese Zeilen mittels des <code>'''#'''</code>-Zeichens aus.<br />
<br />
== 2. Installation von [[PHP]]/[[MySQL]] ==<br />
<br />
Der Apache-Server ist installiert und die "''httpd.conf''"-Datei verändert. Nun müssen Sie eine PHP-Version installieren (PHPist eine serverorientierte Skriptsprache, wird u.a. für dynamischeWidergabe von Inhalten in einem Browser verwendet). Als sehr gute Hilfe sei hier noch einmal auf die Installationsanleitung bei http://www.exine.de (unter "Lokalen Apache-Server unter Windows installieren") verwiesen, dort wird Ihnen auch gezeigt,wie Sie testen, ob PHP tatsächlich auf Ihrem Server läuft. Laden Sie sich am besten den Windows Installer (z.B. Version 4.3.4 oder höher) herunter. Geben Sie dafür bei google "<code>download php 4.3.4</code>" ein oder gehen Sie direkt auf die Seite: http://de.php.net).Richten Sie ein Verzeichnis ein (z.B. <code>C:/php4</code>) und installieren Sie den Inhalt dort. Sollten Sie einanderes Verzeichnis wählen, müssen Sie natürlich aufpassen, dass der getätigte Eintrag in der ''httpd.conf'' ("<code>LoadModule php4_module c:/php4/sapi/php4apache.dll</code>") damit konform geht, diesen also gegebenenfalls verändern.<br />
<br />
In dem php4-Verzeichnis finden Sie den Ordner "dlls".<br />
<br />
# Der Inhalt dieses Ordner muß komplett nach C:/Windows/System32 gekopiert werden.<br />
# Auch die Datei "php4ts.dll" (liegt direkt im php4-Verzeichnis) muß nach C:/Windows/System32 kopiert werden.<br />
# Die Datei "php.ini-dist" muß nach C:/Windows kopiert werden. Dort nennen Sie diese bitte in php.ini um.<br />
# Nun öffnen Sie bitte mit einem Texteditor die eben erstellte "php.ini"-Datei (diese ist die Konfigurationsdatei von php). Hier müssen Sie den Pfad zum Extensions-Verzeichnis angeben. sie werden in der Datei den Eintrag "Directory in which the loadable extensions (modules) reside" finden. Schreiben Sie darunter: <code>extension_dir = "c:\php4\extensions"</code><br />
<br />
Außerdem müssen Sie noch zwei Extensions einbinden. Entfernen Sie bitte das Semikolon am Anfang bei:<br />
extension=php_gd2.dll <br />
extension=php_domxml.dll</code><br />
<br />
Gut, wieder ein Etappenziel erreicht. PHPp ist installiert, testen Sie mal ob es funktioniert.<br />
<br />
Nun sollten Sie sich daran machen, mysql zu installieren (dieses ist ein komplexes Datenbanksystem mit eigener Abragesprache).Laden Sie sich dieses von http://www.mysql.com herunter. Für die Installation soll erneut auf http://www.exine.de verwiesen werden (das kennen Sie ja mitllerweile).<br />
<br />
OK, nachdem Sie dieses erst einmal geschafft haben ein dickes Lob an Sie. Gute Arbeit. Sollte es noch Schwierigkeiten geben lassen Sie sich nicht beirren. Wie schon gesagt, es gibt sehr gute Hilfeforen im Internet:<br />
<br />
* http://www.apachefriends.de <br />
* http://www.tutorials.de <br />
* http://www.traum-projekt.com<br />
<br />
Und nun kommen wir zum Mapserver:<br />
<br />
== 3. Installation des Mapservers ==<br />
<br />
Als erstes sollten Sie sich ein Mapserverpaket herunterladen. Probieren Sie dieses mal auf der Seite:<br />
<br />
* http://maptools.org/php_mapscript/index.phtml?page=downloads.html<br />
* oder aber bei: http://www.umn-mapserver.de.<br />
* Sie können auch ganz einfach bei google: "download mapserver-4.0.1-win32-php4.3.3.zip"eingeben, da werden Sie schnell etwas finden.<br />
<br />
Nach dem Download entpacken Sie dieses bitte. Zusätzlich, '''und ganz wichtig''', müssen Sie sich den "proj"-Ordner herunterladen (z.B. .PROJ 4.4.6 WIN32 Binary Release). Diesen gibt es z.B. auf der Homepage http://members.verizon.net/~vze2hc4d/proj4/ oder aber bei:http://www.remotesensing.org/proj/ (und bald auch unter http://www.umn-mapservercommunitiy.de.vu).<br />
<br />
# Erstellen Sie nun ein Verzeichnis <code>C:/proj</code>. Dort wird der Inhalt aus diesem Ordner (dieser<br /> enthält die Ordner "bin" und "nad") hineinkopiert.<br />
# Der entpackte Mapserver enthäkt die gezippten dlls xerces_dll.zip, pdfdll.zip,libpq.zip,libcurl7.10.7_dll.zip,gdal.zip,ECW_DLL.zip.Diese Dateien müssen nun entpackt und in das "cgi-bin"-Verzeicchnis des Webservers gelegtwerden (<code>Programme->Apache Group->Apache->cgi-bin</code>).Auch '''muss''' in dieses Verzeichnis die Datei "mapserv.exe" kopiert werden.<br />
# Die Dateien "php_mapscript_4.0.1.dll" und "php_proj.dll" müssen nun in das Extensionsverzeichnis von php4 kopiert werden (<code>C:\php4\extensions</code>)<br />
<br />
Ok, das Gröbste haben Sie hinter sich. Nun werden wir mal testen, ob der Mapserver auch funktioniert. Öffnen Sie Ihren Browser. Geben Sie ein :"http://localhost/cgi-bin/mapserv.exe" (unter "localhost" läuft Ihr persönlicher Apache-Webserver, die "mapserv.exe"-Datei haben Sie ja in das "cgi-bin"-Verzeichnis geladen. Wenn der UMN-Mapserver funktioniert erhalten Sie die Meldung:"'''No query information to decode. QUERY_STRING is set, but empty .'''"(was ja auch ganz logisch ist, Sie haben dem Server ja keine zu verarbeitenden Parameter geschickt). Eine andere Möglichkeit diesen zu testen wäre die folgende: Gehen Sie in die MS-Dos-Kommandozeilenebene. Geben Sie dort in das Verzeichnis: C:\Programme\Apache Goup\Apache\cgi-bin und geben Sie nun den Befehl<br />
mapserv -v<br />
ein. Ist der Server funktionstüchtig, dann erhalten Sie eine Ausgabe derart:<br />
<br />
"MapServer version 4.0.1. Output= gif, output=png etc. etc."<br />
<br />
==4. Das Itasca-Beispiel== <br />
<br />
Bevor Sie dieses auf Ihrem lokalen Rechner zum Laufen bringen, sollten Sie sich das Beispiel unbedingt unter folgender URL einmal ansehen (allein um sich etwas daran zu orientieren).<br />
<br />
http://maps.dnr.state.mn.us/mapserver_demos/workshop/<br />
<br />
Was nützt ein laufender Server, wenn man keine Daten zur Verfügung hat und nicht weiß, wie man als nächstes vorgehen soll? Damit werden wir uns nun auseinandersetzen. Auf der Seite "http://mapserver.gis.umn.edu/doc40/doc.html" können wir uns die ganz ausgezeichnete Itasca-Datensätze (angeboten von Steve Lime, Minnesota DNR) zum Testen herunterladen (sollte sich der Downloadpfad geändert haben, suche Sie bei Google mit den Stichworten "Steve Lime Itasca ").<br />
<br />
'''1.''' Erstellen Sie ein Verzeichnis, welches Sie z.B. "umntest" nennen, alsoC:/Programme/Apache Group/Apache/htdocs/umntest.In dieses nun laden Sie den entpackten Ordner "workshop".Schauen Sie sich die Daten bitte einmal im Explorer an. Die zentrale Datei, quasi das "Herz"der Anwendung, ist die Datei "Itasca.Map". Das Mapfile ist die zentrale Layout- undKonfugrationsdatei einer jeden MapServer-Anwendung.<br />
<br />
Um eine Kartenausgabe darzustellen, bedarf es eines speziellen HTML-Files, dem sogenanntenTEMPLATE.Letztlich für die Ausgabe innerhalb dieses Beispiels zuständig ist die Datei "itasca_basic.html"(dazwischen ist, wie sie gleich sehen werden, noch die Datei "index.html" geschaltet).Die Daten, welche letztlich Grundlage für die Ausgabe sind (Shp-Datei), liegen in dem Ordner"Data".Ok, öffnen Sie doch bitte mal mittels eines Texteditors die Datei "Itasca.Map".<br />
<br />
In Zeile 10 finden Sie den Eintrag SHAPEPATH. Dieser legt den Pfad zu den benötigtenGeodaten fest. Schreiben Sie dort:SHAPEPATH "C:/Programme/Apache Group/Apache/htdocs/umntest/workshop/data/'''"'''<br />
<br />
In Zeile 64 wird der Pfad zur TEMPLATE-Datei angegeben, also jener Datei, welche die Abfragedarstellt, oder anders formuliert: das HTML-Script, welches an der entsprechenden Stelle dieElemtente der WebGis-Anwendung darstellt.<br />
<br />
Schreiben Sie hier<br />
<br />
TEMPLATE "C:/Programme/Apache Group/Apache/htdocs/umntest/workshop/index.html"<br />
<br />
Nun muß nur in Zeile 68 bzw. 69 noch etwas hineingeschrieben werden.Sie erinnern sich doch, dass Sie bei der Konfiguration des Apache-Servers in der "httpd.conf"das Verzeichnis "tmp" erstellt haben (dort werden temporäre Rasterdaten angelegt).Dieses muss auch im Mapfile festgelegt werden.Schreiben Sie bitte in Zeile 68:<br />
<br />
IMAGEPATH 'C:/Programme/Apache Group/Apache/htdocs/tmp'<br />
<br />
In Zeile 69 tragen Sie ein:<br />
<br />
IMAGEURL "/tmp/".<br />
<br />
'''2.''' Gut, die Mapdatei ist somit fertig editiert. Nun müssen wir uns noch um die Datei "index.html" kümmern (welche ja von uns als TEMPLATE erstellt wurde). Wie schon gesagt, diese stellt letztlich eine Zwischendatei zur eigentlichen Ausgabe mittels "itasca_basic.html" dar. Mittels der "index.html" werden verschiedene Parameter an "itasca-basic.html" übertragen. Auch hier soll aber nicht ins Detail gegangen werden, sondern wir werden einfach nur einige Pfade ändern, und die Sache damit zum Laufen bringen.<br />
<br />
Wichtig sind folgende Einträge:<br />
<br />
<form name="demo" method="GET" action="/cgi-bin/mapserv" onSubmit="submit_form()"><br />
<br />
(Dieser Eintrag bewirkt, dass verschiedene Parameter an die ausführende Datei "mapserv.exe" (welche wir ja bei der Installation des UMN-Servers ins "cgi-bin"-Verzeichnis kopiert haben) übertragen werden.<br />
<br />
<input type="hidden" name="map" value="C:/Programme/Apache Group/Apache/htdocs/ umntest/workshop/itasca.map"><br />
<br />
Dieses ist der Pfad, zu der Mapdatei, welche wir als Ausgangsbasis benutzen.<br />
<br />
<input type="hidden" name="program" value="/cgi-bin/mapserv"><br />
<br />
Der Pfad zur ausführenden "mapserv.exe"-Datei<br />
<br />
<input type="hidden" name="root" value="C:/Programme/Apache Group/Apache/htdocs/ umntest/workshop"><br />
<br />
Das Wurzelverzeichnis, in dem alle wichtigen Daten liegen.<br />
<br />
<input type="hidden" name="map_web_imagepath" value="C:/Programme/Apache Group/ Apache/htdocs/tmp"><br />
<br />
Das Verzeichnis für die temporären Ausgabedateien.<br />
<br />
<input type="hidden" name="map_web_imageurl" value="/tmp/"><br />
<br />
Verzeichnis für Verknüpfungen.<br />
<br />
Ok, wenn Sie das alles soweit eingegeben haben, müsste es funktionieren, die restlichen Daten<br /> können Sie so belassen.<br /> Öffnen Sie einen Browser und geben Sie folgendes ein:<br />
<br />
http://localhost/cgi-bin/mapserv?map=C:/Programme/Apache%20Group/Apache/htdocs/umntest/workshop/Itasca.map<br />
<br />
Zur Erklärung: Ihren Mapserver starten Sie immer über die im cgi-bin Verzeichnis liegendeAusführungsdatei "mapserv.exe", also den Pfad http://localhost/cgi-bin/mapserv.Haben Sie vormals, ohne Ãœbertragung von Parametern der Mapdatei noch die Ausgabe "'''No query information to decode. QUERY_STRING is set, but empty.'''" erhalten, so wird diesesjetzt nicht mehr passieren, da Sie ja den Pfad angegeben haben, wo die zu verarbeitendeMapdatei liegt, eben jenen Eintrag: "'''http://localhost/cgi-bin/mapserv?map=C:/Programme/Apache%20Group/Apache/htdocs/umntest/workshop/Itasca.map'''".<br />
<br />
In der Map-Datei wurde ja der Pfad zum TEMPLATE "index.html" definiert, dieses wird durchVerarbeitung der Map-Datei durch den UMN-Mapserver nun aufgerufen.Wählen wir nun im Browser als Beispiel "Basic Application" aus.Die in der "index.html" genannten Paramter werden an die "itasca_basic.html"-Datei übertragen; hier kann nun munter hin und hergezoomt werden oder aber man kann sich verschiedeneLayer anzeigen, etc.<br />
<br />
Das alles klingt wahrschienlich jetzt relativ kompliziert. Dieses Beispiel ist für den Anfang auchschon ein ganz klein wenig komplexer. Noch mal zur Veranschaulichung das Prinzip:An den UMN-Mapserver, also an die Datei mapserv.exe, wird als Parameter der Pfad zu einemMapfile geschickt. Dieses wird verarbeitet und das TEMPLATE aufgerufen.Ohne Frage hätte in einem einfacheren Beispiel dieses auch direkt (und nicht wie hier über denUmweg der "index.html"-Datei) geschehen können.<br />
<br />
Ich hoffe, mit dieser kleinen Anleitung ein wenig Licht ins Dunkle gebracht zu haben.Um wirklich zu verstehen wie der UMN Mapserver funktioniert und warum Sie verschiedeneDinge so wie in diesem Beispiel konfiguriert haben, empfiehlt es sich, sich auf denInternetseiten:http://www.umn-mapserver.de oder aber http://ms.gis.umn.edu weiterzubilden.Ein ebenfalls zu empfehlendes Buch ist "UMN MapServer 4.0" von Thorsten Fischer (MapMediaGmbh 2003, Berlin, ISBN 3-00-012616-3).<br />
<br />
Für Fragen und Anregungen bin ich natürlich jederzeit offen (Kai-Behncke@gmx.de).<br />
<br />
'''Mit freundlichen Grüßen, Dipl. Geogr. Kai Behncke'''<br />
<br />
[[UMN Mapserver & PostgreSQL/PostGIS]]<br />
<br />
[[Kategorie:Web Mapping]]<br />
[[Kategorie:UMNMapserver]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=GISWiki:Spielwiese&diff=2126GISWiki:Spielwiese2005-08-02T16:30:38Z<p>Kai-Behncke: </p>
<hr />
<div><!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
{{Spielwiese}}<br />
<!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
<!-- Bitte ERST HIER DRUNTER schreiben --><br />
<br />
<geo>51.54686881000932 N 0.1684856414794922 W title:London url:http://www.london.en</geo><br />
<br />
<geo>51.542064725907984 N 0.17354965209960938 W type:airport title:Anleger url:http://www.london.en</geo><br />
<br />
<GoogleMapM>51.542064725907984|0.17354965209960938|10|http://www.london.en|Anleger||</GoogleMapM><br />
---<br />
Test, test<br />
<br />
wie füge ich denn ein Bild ein?<br />
[[Image:Diebrowserabbildung.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=Datei:Diebrowserabbildung.gif&diff=6592Datei:Diebrowserabbildung.gif2005-08-02T16:29:19Z<p>Kai-Behncke: Das sollte dann in Ihrem Browser erscheinen...</p>
<hr />
<div>Das sollte dann in Ihrem Browser erscheinen...</div>Kai-Behnckehttp://giswiki.org/index.php?title=GISWiki:Spielwiese&diff=2019GISWiki:Spielwiese2005-08-02T16:26:04Z<p>Kai-Behncke: </p>
<hr />
<div><!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
{{Spielwiese}}<br />
<!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
<!-- Bitte ERST HIER DRUNTER schreiben --><br />
<br />
<geo>51.54686881000932 N 0.1684856414794922 W title:London url:http://www.london.en</geo><br />
<br />
<geo>51.542064725907984 N 0.17354965209960938 W type:airport title:Anleger url:http://www.london.en</geo><br />
<br />
<GoogleMapM>51.542064725907984|0.17354965209960938|10|http://www.london.en|Anleger||</GoogleMapM><br />
---<br />
Test, test<br />
<br />
wie füge ich denn ein Bild ein?<br />
[[Image:http://www.selbstverwaltung-bundesweit.de/mapserver/images/Diebrowserabbildung.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=GISWiki:Spielwiese&diff=2018GISWiki:Spielwiese2005-08-02T16:25:30Z<p>Kai-Behncke: </p>
<hr />
<div><!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
{{Spielwiese}}<br />
<!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
<!-- Bitte ERST HIER DRUNTER schreiben --><br />
<br />
<geo>51.54686881000932 N 0.1684856414794922 W title:London url:http://www.london.en</geo><br />
<br />
<geo>51.542064725907984 N 0.17354965209960938 W type:airport title:Anleger url:http://www.london.en</geo><br />
<br />
<GoogleMapM>51.542064725907984|0.17354965209960938|10|http://www.london.en|Anleger||</GoogleMapM><br />
---<br />
Test, test<br />
<br />
wie füge ich denn ein Bild ein?<br />
[[Image:http://www.selbstverwaltung-bundesweit.de/mapserver/Diebrowserabbildung.gif]]</div>Kai-Behnckehttp://giswiki.org/index.php?title=GISWiki:Spielwiese&diff=2017GISWiki:Spielwiese2005-08-02T16:24:20Z<p>Kai-Behncke: </p>
<hr />
<div><!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
{{Spielwiese}}<br />
<!-- Diese Vorlagenverknüpfung NICHT LÖSCHEN --><br />
<!-- Bitte ERST HIER DRUNTER schreiben --><br />
<br />
<geo>51.54686881000932 N 0.1684856414794922 W title:London url:http://www.london.en</geo><br />
<br />
<geo>51.542064725907984 N 0.17354965209960938 W type:airport title:Anleger url:http://www.london.en</geo><br />
<br />
<GoogleMapM>51.542064725907984|0.17354965209960938|10|http://www.london.en|Anleger||</GoogleMapM><br />
---<br />
Test, test<br />
<br />
wie füge ich denn ein Bild ein?<br />
[[Image:Beispiel.jpg]]</div>Kai-Behncke