Admin-Dokumentation: Unterschied zwischen den Versionen
(→Funktionalität im Client) |
(→Kartenausschnitt speichern/abrufen) |
||
Zeile 79: | Zeile 79: | ||
===Kartenausschnitt speichern/abrufen=== | ===Kartenausschnitt speichern/abrufen=== | ||
− | * Unter dem Kartenfenster befinden sich die Links: [[Bild:Speichern_wählen.png]] | + | * Unter dem Kartenfenster befinden sich die Links: [[Bild:Speichern_wählen.png]]. Sie dienen dem Speichern von Einstellungen des aktuellen Kartenfensters mit entsprechenden Kommentar und dem Abrufen gespeicherter Einstellungen von Kartenfenstern. |
+ | * | ||
===Weitere Funktionalitäten=== | ===Weitere Funktionalitäten=== |
Version vom 23. März 2006, 12:35 Uhr
Inhaltsverzeichnis
- 1 Übersicht
- 2 Installation
- 3 Administration
- 4 Referenz zur Datenbank
- 4.1 Tabelle „user“
- 4.2 Tabelle „rolle“
- 4.3 Tabelle „stelle“
- 4.4 Tabelle „used_layer“
- 4.5 Tabelle „attribute“
- 4.6 Tabelle „attribute_access“
- 4.7 Tabelle „layer“
- 4.8 Tabelle „classes“
- 4.9 Tabelle „styles“
- 4.10 Tabelle „u_styles2classes“
- 4.11 Tabelle „labels“
- 4.12 Tabelle „u_labels2classes“
- 4.13 Tabelle „referenzkarten“
- 4.14 Tabelle „u_menue“
- 4.15 Tabelle „u_menue2stelle“
- 4.16 Tabelle „u_funktionen“
- 4.17 Tabelle „u_funktion2stelle“
- 4.18 Tabelle „u_rolle2used_layer“
kvwmap setzt unter anderem auf Apache, UMN-MapServer, php-Mapscript, MySQL, Postgres mit PostGIS und EDBS2WKT auf und beinhaltet WLDGE2SQL.
Dank an dieser Stelle für die Bereitstellung der genannten Software.
Dieses Manual wurde erstellt unter Mitwirkung von
- Peter Korduan,
- Markus Hentschel,
- Hauke Christoph,
- Heinz Schmidt
An der Entwicklung von kvwmap waren und/oder sind bisher beteiligt:
- Peter Korduan,
- Stefan Rahn,
- Hauke Christoph,
- Conrad Gühler,
- Swen Hüner,
Zuarbeiten und Hinweise kamen bisher von den Katasterämtern Bad Doberan, Nordvorpommern, Ücker-Randow, Ludwigslust/Schwerin, Parchim, Waren-Müritz, Rügen und Rostock
Dienstleistungen zu kvwmap werden angeboten von:
- Steinbeis Transfer Zentrum Geoinformatik Rostock/Greifswald
- Prof. Ralf Bill
Status: in Work!! Hier soll eine Dokumentation zu kvwmap entstehen. Die Dokumentation ist noch nicht fertig. Zuarbeiten, Hinweise und Korrekturvorschläge sind herzlich willkommen. Für die Richtigkeit und Vollständigkeit der folgenden Angaben wird keine Garantie übernommen.
Übersicht
Hintergründe für die Entwicklung
Kvwmap ist eine auf den UMN-MapServer aufsetzende Entwicklung zur Erfassung, Verarbeitung, Analyse und Präsentation von raumbezogenen Information. Die Entwicklung besteht aus einer Reihe von PHP-Skripten, einem Schema für eine MySQL-Datenbank zur Speicherung von Benutzerdaten und einem Schema für eine PostgreSQL-Datenbank mit PostGIS Aufsatz zur Speicherung von raumbezogenen Daten. Die Anwendung nutzt PHP-MapScript für den Zugriff auf die Funktionen des UMN-MapServers und die pdf class von R&OS zur Erzeugung von PDF-Dokumenten.
Funktionalität im Client
Folgende Funktionalitäten werden von dem Client bereitgestellt:
- Vorheriger Ausschnitt (History-Funktion)
- Nächsten Ausschnitt (History-Funktion)
- Zoom in (durch Aufziehen einer Box)
- Zoom in (durch Klicken i. d. Karte bei wählbarem Zoomfaktor)
- Zoom out (durch Klicken i. d. Karte bei wählbarem Zoomfaktor)
- Pan (durch Ziehen des Bildschirmausschnittes an eine neue Stelle)
- Zentrieren (der zu klickende Punkt wird in Kartenmitte versetzt)
- Eingabe eines konkreten Koordinatenpaars ('Koordinatenzoom')
Abfragen
Das Abfrageergebnis wird in einem eigenen Fenster angezeigt. Spaltenbezeichnungen und Layouteinstellungen können in Vorlagen angepasst werden
- Auswahl der abfragbaren Layer in Legende
- Anklicken der entsprechenden Objekte
- Aufziehen einer Box um betreffende Objekte
- Abfrage der ALB-Daten beim Flurstückslayer, Ausgabe in PDF im amtlichen Format 30 und 35
Suche
- Flurstücke (Gemeinde-Gemarkung/Flur/Flurstück)
- Adressen (Gemeinde/Strasse/Hausnummer)
Messen
Kartenausschnitt speichern/abrufen
- Unter dem Kartenfenster befinden sich die Links: . Sie dienen dem Speichern von Einstellungen des aktuellen Kartenfensters mit entsprechenden Kommentar und dem Abrufen gespeicherter Einstellungen von Kartenfenstern.
Weitere Funktionalitäten
- Kartengröße wahlweise einstellbar
- Kartenausschnitt als Rasterbild abspeicherbar
- Bildschirm-Ansichten drucken (Browserfunktionalität)
- Druck-Voransicht (Browserfunktionalität)
- Layer wahlweise ein-/ausschaltbar
- Hilfe-Funktion
Funktionen auf dem Server
- Speicherung und Verwaltung der Karteneinstellungen
- In der MySQL-Datenbank werden die Informationen vorgehalten, die für eine Kartenausgabe erforderlich sind. Es handelt sich im Wesentlichen um die Daten, die sonst in der Map-Datei für den UMN-MapServer enthalten sind, nur dass sie in der Datenbank für verschiedene Karten nicht redundant abgespeichert werden.
- Speicherung und Verwaltung von Benutzerdaten
- In der MySQL-Datenbank werden Daten
- zu den Benutzern,
- zu den Stellen und
- zu den Rollen, die die Benutzer in den Stellen einnehmen können
abgespeichert.
- Einlesen von ALB-Daten im WLDGE-Format in eine MySQL oder PostgreSQL-Datenbank
Fachschalen
Zu kvwmap gehört eine Reihe von Funktionen, die in Fachschalen zusammengefasst wurden. Eine Fachschale beinhaltet thematisch zusammengehörende Funktionen zur Erfüllung fachspezifischer Aufgaben. Die anderen Funktionen stehen parallel dazu immer zur Verfügung. Die benötigten Funktionen können über das frei konfigurierbare Menü thematisch zu einer Fachschale und über zugriffsrechtlich über die Rolle eines Benutzers in einer Stelle zugeordnet werden.
Notizen
Mit der Funktion Notizen können Textnotizen an jede beliebige Position innerhalb des Kartenbereichs einer Stelle gesetzt werden.
Voraussetzungen:
- Der Stelle muss das Menü Notizen zugewiesen worden sein. (Tabelle: u_menue2stelle)
- Dem Nutzer muss die Zuordnung der Stelle zum Menü Notizen zugewiesen sein. (Tabelle: u_menue2rolle)
- Es muss ein Layer Notizen eingetragen worden sein.
- Der Stelle muss der Layer Notizen zugewiesen sein.
- Der Layer muss dem Nutzer zugewiesen worden sein.
- Ebenso müssen Class und Label sowie die Zuordnung zur Klasse und Layer eingetragen sein. Nutzen Sie für all diese Eintragungen den Abschnitt Notizen aus mysql_install_help.php aus dem Verzeichnis layouts/sql_dumps
- Es muss eine Datenquelle in der postgis Datenbank vorhanden sein. Das heißt die Tabelle für Notizen muss existieren. Wenn nicht kann diese mit dem SQL-Statement aus postgres_install.sql angelegt werden. (in layouts/sql_dumps)
Erst wenn diese Voraussetzungen erfüllt sind, erscheint das Menü zum Anlegen neuer Notizen.
Klicken Sie auf Notizen und legen eine neue Notiz an. Diese erscheint nach dem Absenden und dem aktiv schalten im Kartenfenster. Die zu definierende Textposition zeigt auf die Spitze des Bezugspfeils.
Wenn man Text in mehreren Zeilen haben möchte, muss man im Textfeld mit der Enter-Taste feste Zeilenumbrüche eingeben.
Wenn man eine Notiz ändern möchte macht man die Abfrageoption des Layers Notizen aktiv, wählt den Infoknopf und selektiert in der Karte die Notiz, die man ändern möchte. Dort kann man dann auf ändern klicken und kommt wieder in das Formular, welches zum anlegen neuer Notizen dient.
Kataster
Darstellung der ALK und ALB-Daten. Suche nach Flurstücken und Adressen aus der ALK und ALB. Automatisierte Fortführung des ALB-Bestandes über das einlesen von WLDGE-Dateien mit WLDGE2SQL-Konverter. Aktualisierung von ALK-Daten über EDBS2WKT-Konverter.
Nachweisverwaltung
Erfassung, Bearbeitung und Recherche von Daten über Dokumente der Katasterverwaltung zur Unterstützung der Auftragsvorbereitung bei Katastervermessungen
Allgemeine Beschreibung der Nachweisverwaltung
Die Nachweisverwaltung dient der digitalen Fortführung des Liegenschaftskatasters. Mit dieser Anwendung können alle Dokumente, die als Nachweis im Liegenschaftskataster geführt werden, zusammen mit Ihren beschreibenden Daten eingeflegt und danach recherchiert werden. Zu allen Dokumenten, die als Bilddatei vorliegen, wird neben dem Metadaten auch der Raumbezug abgespeichert. Der Raumbezug, wird in Form eines Polygons realisiert, das auf der Grundlage der ALK zuvor festgelegt und zusammen mit den Metadaten in die Datenbank eingepflegt wird. Mit Hilfe der Metadaten und des Raumbezugs, können dann die Dokumente recherchiert und ausgegeben werden.
Vorraussetzung für die Nutzung
Um die Nachweisverwaltung von kvwmap nutzen zu können müssen folgende Voraussetzungen gegeben sein.
- Es muss eine Stelle eingerichtet worden sein, in der die Funktionen der Nachweisverwaltung genutzt werden können. Als praktisch erweist es sich, wenn eine Stelle für die Auskunft eingerichtet wird und eine für die Einpflege von Dokumenten, bzw. die Änderungsfunktion.
- Es müssen Menüpunkte (Tabelle: u_menues) für die Funktionen der Nachweisverwaltung eingerichtet sein. Dazu kann man die entsprechenden SQL-Statements zu „Einträge der Menüpunkte“ in mysql_install.sql im Verzeichnis layouts/sql_dumps nutzen. Die ID´s für id und obermenue sowie die menueebene müssen natürlich an die eigenen Menüpunkte angepasst sein, die man vielleicht schon eingerichtet hat.
- Die Menüpunkte müssen zu den entsprechenden Stellen zugeordnet sein.
- Die Nutzer, die die Nachweisverwaltung nutzen können sollen müssen zu den entsprechenden Stellen zugeordnet sein.
- Es muss eine PostgreSQL-Datenbank mit PostGIS Aufsatz installiert sein.
- Die Tabellen für die Nachweisverwaltung müssen mit den entsprechenden Rechten in der PostGIS-Datenbank eingerichtet sein. Dazu nutzt man am besten die SQL-Vorlagen für die Nachweisverwaltung in der Datei postgres_install.sql im Verzeichnis layouts/sql_dumps
Auswählen der Stelle Nachweisverwaltung
Wenn Sie die Nachweisverwaltung nutzen möchten, müssen Sie sich unter der richtigen Arbeitsstelle im Menü "Stelle wählen" anmelden.
Dazu öffnen Sie die Startseite des Kartenserver und klicken auf den Link "Menü auswählen" im rechten oberen Teil des Browserfensters.
Es öffnet sich ein Fenster mit der Auswahl der Arbeitsstellen. Markieren Sie hier bitte die Arbeitsstelle "Nachweisverwaltung" und klicken Sie auf den Button "Abschicken" der sich unter dem Auswahlfeld der Arbeitsstellen befindet.
Mit dem Button "Abbrechen" gelangen Sie wieder auf die Startseite des Kartenservers.
Nach der Auswahl der Arbeitsstelle "Nachweisverwaltung" und dem betätigen des Button "Abschicken" gelangen Sie auf die Oberfläche der Nachweisverwaltung. Im linken Teil des Browser-Fensters hat sich des Menu Ihrer Fachschale angepasst und im Kopf des Browser-Fensters steht nun "Nachweisverwaltung".
- Schritt: Stelle wählen
- Schritt: Arbeitsstelle markieren und abschicken
- Schritt: Oberfläche der Nachweisverwaltung
Hinzufügen von Dokumenten
Um diese Funktion nutzen zu können, müssen Sie sich zuvor unter Nachweisverwaltung einwählen. Näheres finden Sie im Abschnitt "Einrichten der Stelle" beschrieben.
Als nächstes muss der Bereich für das einzupflegende Dokument eingerichtet werden. Dazu muss mir Hilfe der Navigationsellemente, im Grafikfenster, oder über den Menü-Punkt "Flurstücksuche" der ALK-Ausschnitt so einrichtet werden, das später das Polygon für den Raumbezug festgelegt werden kann.
Wenn Sie den ALK-Ausschnitt richtig festgelegt haben, finden Sie auf der rechten Seite des Browser-Fensters eine Menü Leiste mit der Rubrik Nachweisverwaltung. Kicken Sie den Menü-Punkt "Dokumente hinzufügen" unter der Rubrik Nachweisverwaltung an.
Jetzt erscheint die Oberfläche der Dokumenteingabe. Der ALK-Auschnitt muss bei diesem Schritt übernommen worden sein. In den übernommenen Ausschnitt sollte als erstes das Polygon mit den entsprechenden Werkzeugen im Grafikfenster festgelegt werden.
Danach folgt die Eingabe der beschreibenden Daten und die Wahl der Bilddatei für das einzupflegende Dokument. Hierbei ist zu beachten, das alle Eingaben getätigt und die hochzuladende Datei ausgewählt werden muss. Erst dann kann man den Datensatz mit dem Button "Senden" in die Datenbank einpflegen. Ist eine Eingabe fehlerhaft oder gar nicht angegeben worden, ändert sich die Hintergrundfarbe und es erscheint eine Fehlermeldung
Der Eintrag der Daten erfolgt in die Tabelle "n_nachweise", der jeweiligen Datenbank.
Sollte ein Nachweis mit einer Fehleingabe in die Datenbank eingepflegt worden sein, können Sie, wie unter "Ändern von Nachweisen" beschrieben, den Datensatz ändern.
Recherchieren von Nachweisen
Um diese Funktion nutzen zu können, müssen Sie sich zuvor unter Nachweisverwaltung einwählen. Näheres finden Sie im Abschnitt "Einrichten der Stelle" beschrieben.
Sind die erfolgreich unter der Arbeitsstelle Nachweisverwaltung angemeldet, erscheint im linken Teil des Browser-Fenster, unter Kategorie Nachweisverwaltung, der Menü-Punkt "Dokumentenrecherche".
Bevor Sie den Menü-Punkt anwählen, müssen Sie entscheiden, ob sie mit Hilfe eines Polygon (Box) recherchieren wollen. Ist das der Fall, müssen Sie zuvor den Kartenauschnitt mit Hilfe der "Flurstückssuche" oder der Graphikelemente im Grafikfenster zu dem entsprechenden Flurstück navigieren.
Wählen Sie jetzt den Menü-Punkt an und es öffnet sich die Oberfläche für die Dokumentenrecherche. Im Kopf steht "Dokumentenabfrage".
Zunächst, müssen Sie die Art der Nachweise auswählen, nach dem Sie recherchieren wollen wählen.
Als nächstes müssen Sie die Art der Recherche festlegen. Standardmäßig ist die Recherche mit Hilfe des Polygon (Box) eingestellt. Beachten Sie, das der Kartenausschnitt jetzt nicht mehr angepasst werden kann. Reicht der Kartenausschnitt für die Recherche nicht aus, müssen Sie erneut ins Menü "Nachweisverwaltung" wechseln und den Kartenausschnitt definieren.
Bei den weiteren Recherchemethoden kann entweder nach der individuellen Nummer eines einzelnen Nachweis gesucht werden oder nach den Nachweisen, die unter einer bestimmten Auftragnummer recherchiert wurden.
Nach dem das Polygon festgelegt ist und die Dokumnentenart ausgewählt wurde, kann man mit dem Button "Senden" die Recherche-Anfrage an die Datenbank senden.
Das Rechercheergebnis könnte wie folgt aussehen:
Mit dem Auswahl-Feld "markieren" oder "einblenden" unter dem Rechercheergebnis, können Sie durch Massenbearbeitung die Dokumentenarten im Rechercheergebnis entsprechend markieren/Markierung aufheben oder einblende/ausblenden. Mit dem Auswahl-Feld "markierte" können Sie die markeirten Nachweise entweder zu einer Auftragsnummer hinzufügen oder entfernen. Die Auftragsnummer muss zuvor über dem Rechercheergebnis ausgewählt werden.
Achtung: Beim hinzufügen von Nachweisen zu einem Auftrag, versichern Sie sich, das die Auftragsnummer über dem Rechercheergebnis richtig ausgewählt worden ist!!!
Für die Übersichtlichkeit können Sie die Spaltennamen des Rechercheergebnis anklicken und entsprechend das Recherchergebnis neu sortieren lassen.
Ändern von Nachweisen
Um Dokumente zu ändern muss eine recherche voraus gehen.
Recherchieren Sie den Nachweis, das einer Änderung unterzogen werden soll, wie zuvor unter "Recherchieren von Nachweisen" beschrieben.
In Ihrem Rechercheergebnis finden Sie das zuändernde Dokument, in diesen Zeile sich rechts außen drei Ikons für "Ansicht-()", "bearbeiten-()" und "löchen-()" befinden. Bewegen Sie den Maus-Cursor einfach auf eines der Ikons und kurz danach wird mittels ToolTip die Funktion des Ikons angezeigt.
Um ein Nachweis zu ändern, klicken Sie auf das Ikon "bearbeiten" in der Zeile des zu ändernden Nachweis der Rechercheergebnise. Sie gelangen zur Oberfläche der Dokumenteneingabe, wo die beschreibenden Daten zusammen mit den Raumbezug (Polygon) zu dem Nachweis angezeigt wird.
Die beschreibenden Daten und das Polygon können hier entsprechend, wie unter "Hinzufügen von Dokumenten" beschrieben, geändert werden. Um die Änderung zum Nachweis einzupflegen, betätigen Sie den Button "Senden". Wenn die korregierten Angaben richtig eingegeben sind, werden die Daten somit neu in die Datenbank eingepflegt. Kontrollieren Sie nach dem bearbeiten eines Nachweis Ihre Änderung!
Bodenrichtwerterfassung
Erfassung und Darstellung von Bodenrichtwertzonen mit Angaben über den Bodenwert, Erschließungsgrad, Sanierungsgebiet und Richtwertdefinition
Flächenversiegelung
Erfassung und Darstellung von Versiegelungsflächen auf der Grundlage von Luftbildern
Aufbau des PHP-Skript
Die Anwendung ist so programmiert, dass alle Aufrufe über die Datei index.php erfolgen. Die Seiten, die der Benutzer im Browser angezeigt bekommt, werden zur Laufzeit durch den Server zusammengesetzt.
index.php
Die Datei index.php startet mit dem Einbinden einer Konfigurationsdatei config.php und einer Startdatei start.php, unterscheidet und verzweigt in Anwendungsfälle mit einer switch-Anweisung und endet mit einer Enddatei end.php. Zur Unterscheidung der Anwendungsfälle nutzt das Skript den Parameter $go und $go_plus. Wenn $go_plus einen Wert enthält, wird dieser an $go angehängt. Wenn $go leer ist, wird ein Standardfall ausgeführt. In den jeweiligen Anwendungsfällen (cases), werden die entsprechenden Funktionen der Benutzeroberfläche als Methoden der Klasse GUI der Klassenbibliothek kvwmap.php aufgerufen.
config.php
Die Konfigurationsdatei enthält verschiedene Voreinstellungen zur Konfiguration der Anwendung, die in den PHP-Dateien verwendet werden. Die Voreinstellungen werden über das Setzen von Konstanten realisiert. Die Konstanten sind thematisch in Gruppen zusammengefasst und umfassen z.B. Einstellungen zu Dateipfaden, Layout und WMS-Capabilities Metadaten. Des Weiteren wird in der Konfigurationsdatei eingestellt, welche Klassenbibliotheken geladen werden sollen und diese eingebunden. Dazu gehört auch die Bibliothek php_mapscript.so bzw. dll. Außerdem wird ein Debugdatei-Objekt $debug aus der Klasse debugfile der Klassenbibliothek kvwmap.php mit einem vorgegebenen Debuglevel eingestellt, und Datenbankobjekte für den Zugriff auf die Benutzer-, Karten- und Geometriedaten initialisiert.
start.php
In der Startdatei wird zunächst das Objekt für die Benutzeroberfläche initialisiert. Die Klasse GUI für die Benutzeroberfläche ist in der Klassenbibliothek kvwmap.php enthalten. Anschließend werden alle an das Skript übergebenen Variablen aus der PHP-Systemvariable $_REQUEST an das Objekt $GUI in das Array $formvars übergeben. Wird die PHP-Anwendung über CLI aufgerufen, werden die Argumente aus der Kommandozeile an $formvars übergeben. In start.php kann eingestellt werden, das wievielte Argument an welches Element von $formvars übergeben werden soll. In weiteren Schritten werden die Datenbankobjekte an $GUI übergeben und geöffnet. Zur Identifizierung des zugreifenden Benutzers wird die vom Web-Server bereitgestellte PHP-Konstante REDIRECT_REMOTE_USER verwendet. An Hand von $login_name werden aus der Benutzerdatenbank alle Benutzerdaten ausgelesen und dem Objekt $user aus der Klassenbibliothek user.php zugewiesen, incl. der von ihm zuletzt genutzten Stelle. Soll beim aktuellen Aufruf keine neue Stelle eingestellt werden, wird diese Stelle für den Benutzer verwendet, ansonsten neu gesetzt. Vor dem Erzeugen des Stellenobjektes wird geprüft, ob der Nutzer auf die Stelle zugreifen darf. Abschließend wird für den Benutzer die Stelle als Rolle gesetzt, ein Menü-Objekt in $GUI->Menue initiiert und das Menü für die Stelle geladen. Je nach Einstellungen erfolgen zwischendurch Ausgaben in die Debug-Datei.
end.php
In der Datei end.php werden die offenen Datenbankverbindungen und die Debug-Datei geschlossen.
kvwmap.php
In der Klasse GUI sollten alle Funktionen enthalten sein, die die Interaktion des Benutzers mit dem Programm betreffen. Einige allgemeine Funktionen, wie das Lesen der Karteninformationen aus der Datenbank übernimmt die Klasse GUI, andere fachspezifische Aufgaben werden durch separate Objekte übernommen. Das gilt vor allem für die Funktionen der Fachschalen.
Installation
Übersicht
In diesem Abschnitt wird eine Übersicht darüber gegeben, was alles für kvwmap installiert werden sollte bzw. aus welchen Komponenten die Anwendung besteht.
Folgende Komponenten werden für die Nutzung dieses Internet-GIS vorausgesetzt:
- Apache - Es ist eine Version >= 2.0.48 eingesetzt werden, damit die Umgebungsvariable REDIRECT_REMOTE_USER genutzt werden kann. Diese wird zur Identifizierung des Nutzers verwendet. (siehe auch Apache bug-report)
- Session sollte z.Z. noch aktiv geschaltet werden, aber die Anwendung wird umgestellt, so dass sie ohne Session läuft und alle relevanten Parameter der Benutzer in der Datenbank zwischengespeichert werden.
- PHP - Die Entwicklung von kvwmap läuft derzeit auf der Version 4.3.7
- Zur Konfiguration von php wurden in unserem Beispiel folgende Parameter gesetzt.
- ./configure --enable-force-cgi-redirect --with-config-file-path=/opt/lampp/etc --with-regex=system *:--with-gd=/usr/local/gd --with-freetype-dir=/usr/local/freetype --enable-gd-native-ttf *:--with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/libjpeg --with-zlib --with-zlib-dir=/usr/local/zlib *:--enable-dbase –with-pgsql=/usr/local/pgsql
- Diese Parameter müssen Sie an Ihr System anpassen oder ggf. ergänzen.
- Ob PHP richtig kompiliert wurde erkennen Sie durch die Ausgabe eines phpinfo() Befehls. Erzeugen Sie dazu eine Datei mit folgendem Inhalt in einem Verzeichnis unterhalb von wwwroot.
<?php phpinfo(); ?>
- oder fügen Sie dieses Programmschnipselchen in eine andere php Datei ein.
- Das sollte dann eine Ausschrift erzeugen, die folgendes beinhaltet:
PHP Version 4.3.10 |
System |
Linux berg 2.6.5-7.97-smp #1 SMP Fri Jul 2 14:21:59 UTC 2004 x86_64 |
Build Date |
Jul 20 2005 18:31:02 |
Configure Command |
'./configure' '--enable-force-cgi-redirect' '--with-regex=system' '--enable-dbase' '--with-pgsql=/usr/local/pgsql' '--with-gd=/usr/local/gd' |
Server API |
CGI |
In Configure Command sollte --with-pgsql=… stehen und weiter unten:
GD Support |
enabled |
GD Version |
2.0 or higher |
GIF Read Support |
enabled |
GIF Create Support |
enabled |
JPG Support |
enabled |
PNG Support |
enabled |
WBMP Support |
enabled |
mysql
MySQL Support |
enabled |
Active Persistent Links |
0 |
Active Links |
0 |
Client API version |
3.23.49 |
MYSQL_MODULE_TYPE |
builtin |
MYSQL_SOCKET |
/tmp/mysql.sock |
MYSQL_INCLUDE |
no value |
MYSQL_LIBS |
no value |
pgsql
PostgreSQL Support |
enabled |
PostgreSQL(libpq) Version |
8.0.1 |
Multibyte character support |
enabled |
SSL support |
enabled |
Active Persistent Links |
0 |
Active Links |
0 |
Directive |
Local Value |
Master Value |
pgsql.allow_persistent |
On |
On |
pgsql.auto_reset_persistent |
Off |
Off |
pgsql.ignore_notice |
Off |
Off |
pgsql.log_notice |
Off |
Off |
pgsql.max_links |
Unlimited |
Unlimited |
pgsql.max_persistent |
Unlimited |
Unlimited |
Darin erkennt man ob MySQL, GD und PostgreSQL wirklich unterstützt werden und z.B. welche PostgresSQL-Version unterstützt wird.
Wenn die Angaben z.B. zu pgsql nicht zu finden sind, sollte man php mit --with-pgsql=/pgsql-install-pfad neu kompilieren und wieder die entstandene PHP aus /usr/local/php/sapi/cgi ins cgi-bin Verzeichnis vom Webserver kopieren und neu testen.
Wenn das auch nichts bringt, greift das Lampp vielleicht auf eine ganz andere php zu, z.B. auf eine dynamisch geladene Bibliothek (libphp4.so). Testen durch das umbenennen von php in cgi-bin in php-bla. Danach sollte die Fehlermeldung vom Apache kommen, dass er die php-Datei nicht ausführen kann, oder der Quellcode gesendet werden, was dem gleich kommt. Dann suchen nach dem wahren Ort wo lampp php ausführt.
Informationen darüber findet man in den Anleitungen zum Ausführen von php in
Apache. In der httpd.conf steht zum Beispiel:
LoadModule php4_module modules/libphp4.so Um pgsql in libphp4.so nutzen zu können müsste man die pgsql Unterstützung eben da hinein kompilieren. Alternativ dazu steht die Variante php als cgi-Version einzurichten mit den entsprechenden Optionen in der httpd.conf:
Action php-script /cgi-bin/php
- AddHandler cgi-script .cgi
AddHandler php-script .php .php3
Dann könnte man also php als CGI-Version kompilieren mit:
--with-regex=system
Dazu zur Sicherheit gibt man an:
--enable-force-cgi-redirect
Um anzugeben, wo die Konfigurationsdateien zu finden sind: --with-config-file-path=/opt/lampp/etc
- gd - Version 2.0
- MapServer - Version ab 4.2.0 wird empfohlen
- Zur Konfiguration von MapServer und damit auch phpMapScript wurden folgende Parameter gesetzt:
- OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT INPUT=EPPL7 INPUT=POSTGIS INPUT=GDAL INPUT=SHAPEFILE
- Welche Optionen für configure wirklich notwendig sind, hängt davon ab welche Datenarten und welche Services der MapServer unterstützten soll.
- phpMapScript - ist in der Version: 1.194.2.3
- phpMapScript wird mit installiert, wenn die Option –with-php angegeben wird.
- MySQL – irgendeine aktuelle Version, verwende noch Tabellentyp MyISAM, wer Transaktionen machen will braucht eine Version die InnoDB unterstützt.
- phpMyAdmin
- Zur Administration der MySQL Datenbank kann phpMyAdmin installiert werden. Jedes andere DB-Frontend mit ODBC-Treiber für MySQL ist natürlich auch möglich. Ich benutze z.B. auch MS-Access mit MySQL-ODBC.
- PostgreSQL - Version 7.4.3
- Die Version 7.4.3 soll fehlerfrei laufen. Mit der Version 8.0 hatte ich im Zusammenhang mit kvwmap aber auch noch keine Probleme.
- pgAdmin III
- Zur Administration von PostgreSQL würde ich pgAdminIII empfehlen, aber es geht natürlich auch pgMyAdmin oder andere DB-Frontends mit ODBC für MySQL, z.B. MS-Access
- Quelle: http://www.pgadmin.org
- ODBC-Treiber für PostgreSQL
- Für den Zugang zum Server von einem lokalen Recher aus, muss der ODBC-Treiber für PostgreSQL installiert werden.
- Quelle: http://www.postgresql.org/ftp/odbc/versions
- PostGIS – Version 1.0
- EDBS2WKT
- Konverter zum Einlesen von ALK-Daten in die postgresql Datenbank.
- Quelle: http://62.153.231.87/alk/edbs2wkt
- Vor dem Einlesen von ALK-Daten in die PostGIS-Datenbank sollte eben PostgreSQL mit PostGIS unterstützung installiert sein.
- JUMP Als Frontend für die Änderung der raumbezogenen Daten kommt JUMP in Frage
- PDFClass – installieren in www-root Verzeichnis
UMN-MapServer
Zur Dokumentation des UMN-MapServer nutzen sie die Dokumentation auf http://mapserver.gis.umn.edu/doc.html
Als Übersicht habe ich mal ein Installationskochbuch von Mike Elstermann zu SuSE hier aus der Mailingliste Mapserver-DE aufgenommen. Darin sieht man schön, was alles für Bibliotheken dazugehören.
MapServer-Installaton unter Suse 9.0
0. Systemvoraussetzungen:
- Gcc, gcc++
- make
- freetype + devel
- zlib + devel
- libpng + devel
- gd + devel
- readline + devel
- bison
- flex
1. GD2.0.15
- ./configure
- make
- make install
2. GEOS
- ./configure
- make
- make install
- /sbin/ldconfig
3. PostgreSQL
- ./configure
- make
- make install
- user postgres via yast hizufügen
- mkdir /usr/local/pgsql/data
- chown postgres /usr/local/pgsql/data
- su - postgres
- /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
- /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data &
- /usr/local/pgsql/bin/createdb test
- /usr/local/pgsql/bin/psql test
4. PostGIS
- Kopieren ins CONTRIB-Verzeichnis der Quellen des PostgreSQL
- tar -xvf
- im Makefile "USR_PROJ=0" setzen, falls keine projection genutzt werden soll
- make
- make install
- createdb yourtestdatabase
- createlang plpgsql yourtestdatabase
- psql -d yourtestdatabase -f postgis.sql (im CONTRIB/POSTGIS-CVS-Pfad)
- psql -d yourtestdatabase -f spatial_ref_sys.sql
5. GDAL (v1.2.3)
- ./configure
- make
- make install
6. PROJ.4 (v4.4.8)
- ./configure
- make
- make install
7. Mapserver (v4.2.3)
- ./configure
- with-postgis=/usr/local/pgsql/bin/pg_config
- with-gd=/usr/local
- with-png=/usr/local
- with-proj=/usr/local
- with-ogr=/usr/local/bin/gdal-config
- with-gdal=/usr/local/bin/gdal-config
- make
- make install
Anmerkung: Für Kvwmap muss mindestens noch –with-php dazu!
Quelle: Mike Elstermann, IT-Consult Halle GmbH, mike.elstermann@itc-halle.de
PostgreSQL mit PostGIS Erweiterung
PostgreSQL
Laden Sie sich PostgreSQL von http://www.postgresql.org
Zur Installation von PostgreSQL lesen Sie die INSTALL-Anweisung im Installationsverzeichnis von postgresql. Führen Sie aber zur Nutzung von Geos den configure Befehl folgendermaßen durch:
- LDFLAGS=-lstdc++ ./configure
an Stelle von einfach nur
- ./configure
Danach
- make
- make install
Zum Einrichten der Datenbank für kvwmap
- adduser postgres
Oft ist schon ein postgres user im system vorhanden, dann lassen.
Datenverzeichnis anlegen
- mkdir /usr/local/pgsql/data
Verzeichnis dem user postgres zuweisen
- chown postgres /usr/local/pgsql/data
Wechseln zum user postgres (als postgres anmelden)
- su – postgres
Datenbank initialisieren
- /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
Postmaster starten. (Diese Zeile in Startskript von Rechner aufnehmen, sonst immer nach Neustart von Server neu starten)
- /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
Kvwmap Datenbank anlegen.
- /usr/local/pgsql/bin/createdb <Datenbankname>
Als Datenbankname geben Sie den Namen an, den Sie in der config.php im kvwmap-Verzeichnis an die Variable $pgdbname übergeben haben. Z.B. kvwmapsp1-4-2
Zum Testen in Datenbank einloggen.
- /usr/local/pgsql/bin/psql kvwmapsp1-4-2
Alle Programme für postgres befinden sich in /usr/local/pgsql/bin.
Am besten den Pfad anpassen.
- export PATH=$PATH:/usr/local/pgsql/bin
Konfiguration
Der Datenbankserver von PostgreSQL wird über die Datei postgres.conf konfiguriert. Diese Datei befindet sich im mit „initdb –D Verzeichnis“ angelegten data-Verzeichnis, z.B. in /usr/local/pgsql/data. Wenn was nicht funktioniert, kann man mal dort nachschauen, ob alles korrekt eingestellt ist. z.B. wenn der Zugang zur pgsql Datenbank von einem entfernten Rechner aus mit pgAminIII nicht funktioniert liegt das entweder daran, dass die Firewall den Port 5432 nicht frei gibt, oder die Verbindungen nur vom localhost erlaubt sind. Das kann man mit dem Parameter listen_addresses einstellen in der postgres.conf. Für den Zugriff von entfernten Rechner muss für Postgres der Port 5432 offen sein (entsprechend /etc/services). In /etc/hosts sollte der Rechner eingetragen sein, der zugreifen will. In /etc/hosts.allowed können auch Zugangsbeschränkungen eingetragen werden.
Projektdatenbank Zur Einbindung von ALK-Daten in eine PostGIS-Datenbank sollte mit EDBS2WKT zunächst eine Datenbank neu erstellt werden, die die Tabellen für die ALK-Objekte enthält. Damit man diese Postgres-Datenbank dann mit kvwmap zusammen nutzen kann, muss man das Skript postgis_install.sql aus dem Verzeichnis /layouts/snippets von kvwmap in postgres ausführen. Danach sollten alle relevanten Tabellen in der Datenbank enthalten sein.
PROJ
Wenn Sie PROJ noch nicht für UMN-MapServer installiert haben, laden Sie sich PROJ von http://www.remotesensing.org:16080/proj
Entpacken von proj-version.tar.gz nach /usr/local
Erzeugen eines symbolischen Links:
- ln –s proj-version proj
Installieren mit:
- ./configure
- make
- make install
GEOS
Laden Sie sich GEOS von http://geos.refractions.net
Entpachen von geos-version.tar.gz nach /usr/local
Erzeugen eines symbolischen Links:
- ln –s geos-version geos
Installieren mit
- ./configure
- make
- make install
PostGIS
Man muss den PostgreSQL Source haben und PostgreSQL installiert haben.
Laden Sie sich PostGIS von http://postgis.refractions.net
Folgen Sie der Installationsanleitung in README.postgis
Zur Aktivierung der PROJ und GEOS Unterstützung in Makefile.config USE_PROJ und USE_GEOS auf 1 setzen und als Pfade /usr/local angeben.
Installieren mit: make -> make install
Zur Einrichtung der PostGIS Erweiterung für die kvwmap Datenbank:
- createlang plpgsql <Datenbankname>
- psql -f lwpostgis.sql -d <Datenbankname>
Als Datenbankname geben Sie den Namen an, den Sie in der config.php im kvwmap-Verzeichnis an die Variable $pgdbname übergeben haben. Z.B. kvwmapsp1-4-2
Anlegen der Tabellen für die Koordinatensysteme
- pgsql –f spatial_ref_sys.sql
Es muss auch ein Benutzer angelegt sein, mit dem Sie von kvwmap aus auf die Datenbank zugreifen. Nutzer hinzufügen:
- createuser –P <Benutzername>
<Benutzername> ist der Name unter dem Sie auf die Datenbank von kvwmap aus zugreifen, z.B. kvwmap Anschließend werden Sie nach einem Passwort <Passwort> für den Nutzer gefragt. Der hier angegebene Name bzw. Passwort wird dann in der config.php im kvwmap Verzeichnis auf die Variable $PostGISdb->user=’<Benutzername’ bzw. $PostGISdb->passwd='<Passwort>' gesetzt. 2.3.5 Datenbank Sichern und Wiederherstellen
Eine PostGIS Datenbank lässt sich mit dem pg_dump Befehl sichern. Dabei wird eine sql-Datei erzeugt, die später zur Wiederherstellung eines alten Standes verwendet werden kann. Um die Sicherung ausführen zu können melden Sie sich am Besten auf Ihrer Konsole als postgres an.
- su postgres
Anschließend wechseln Sie in ein Verzeichnis, in dem postges Schreibrechte hat, z.B.
- cd /usr/local/pgsql/data
Dort führen sie den dump Befehl aus.
- ../bin/pg_dump -f <dateinamedersicherung.sql> <datenbankname>
Zum wiederherstellen müssen Sie die alte Datenbank löschen.
- dropdb <datenbankname>
Anschließend legt man die Datenbank wieder an, fügt den PostGIS Support und die Referenzsystem hinzu und läd dann die Sicherung ein.
- createdb <datenbankname>
- createlang plpgsql <datenbankname>
- psql -f postgis.sql -d <datenbankname>
- psql –f spatial_ref_sys.sql –d <datenbankname>
- psql -f <dateinamedersicherung.sql> -d <datenbankname>
- vacuumdb -z <datenbankname>
Die Dateien postgis.sql und spatial_ref_sys.sql befinden sich in dem share Verzeichnis des pgsql Verzeichnisses. Die letzte Zeile dient dem Auffrischen der Tabellen und der Neuorganisation der Indizee und des Speicherplatzes.
Schritte zur Installation von kvwmap
Um kvwmap nutzen zu können müssen die oben beschriebenen Komponenten installiert sein.
Nachfolgend werden die Schritte beschrieben, die absolviert werden sollten, damit man im Client eine Karte sehen kann. Dazu gehören einige Einstellung die den Server betreffen. Diese werden in der Datei config.php vorgenommen. Die meißten Einstellungen werden über Konstanten vorgenommen. Wenn noch Einstellungen vorgenommen werden müssen, die irgentwo anders im Quellcode fest verankert sind lassen Sie es mich wissen, dann baue ich das auch als Konstane in die config.php ein.
Und es sind eine Reihe von Eintragungen in der MySQL-Datenbank vorzunehmen, z.B. das Anlegen einer Steller, Benutzer, Layer, Menüpunkte etc.
Verzeichnisse
- Entpachen sie das Packet kvwmap_Version in das www-root
- In www-root (z.B. /usr/local/httpd/htdocs) sollten folgende zusätzlichen Verzeichnisse angelegt werden:
- /tmp – für die dynamisch generierten Bilder vom MapServer. Dies ist der Pfad der in der MapDatei für IMAGEPATH steht.
- Auf der gleichen Ebene wie www-root (z.B. /usr/local/httpd) sollten folgende Verzeichnisse angelegt werden.
- /logs – Log- und Debugdateien lässt sich in config.php ändern
- /var – Datenverzeichnis, lässt sich auch in config.php anpassen.
- Unter dem Verzeichniss var legen sie standardmäßig /data an und darunter die Verzeichnisse für Ihre Daten
config.php
Eine Reihe von Einstellungen für das Programm kann über die Werte von Konstanten in einer zentralen Konfigurationsdatei der config.php in der Wurzel des Programmverzeichnisses erfolgen. Im folgenden werden die definierten Konstanten und ihre aktuell eingestellten Werte angezeigt. Die Standardwerte stehen in Klammern dahinter. Einige Werte setzen sich aus anderen zusammen. Die Konstanten und Werte sind mit Punkt getrennt. Die Punkte gehören nicht zum Wert.
- INSTALLPATH = /opt/lampp/ (/opt/lampp/)
- WWWROOT = /opt/lampp/htdocs/ (INSTALLPATH.htdocs/)
- URL = 139.30.110.27/ (localhost)
- LOGPATH = /opt/lampp/logs/ (INSTALLPATH.logs)
- LAYOUTPATH = /opt/lampp/htdocs/kvwmap_1.4.0/layouts/ (WWWROOT.APPLVERSION.'layouts/)
- SNIPPETS = /opt/lampp/htdocs/kvwmap_1.4.0/layouts/snippets/ (LAYOUTPATH.snippets/)
- diese Liste ist unvollständig
Datenbankeinträge für die Anzeige im Client
Um in der Benutzeroberfläche des kvwmap-Clients überhaupt etwas sehen zu können, müssen mindestens eine Stelle und ein Benutzer eingetragen werden und ein Layer angelegt sein. Eine Beschreibung zur Verwaltung von Benutzerdaten und Karteninformationen finden Sie unter Abschnitt 5.
Administration
Allgemeines zur Datenverwaltung
Hinweise zum Anlegen eines TILEINDEX für Rasterdaten
- Die TILEINDEX Datei ist eine Shape-Datei, die die äußeren Umringe von mehren Rasterdateien enthält und Verweise auf dessen Speicherort. Dies ermöglicht die gekachelte Darstellung von flächendeckenden Rasterdaten und verringert die Zeit für die Darstellung des Rasterlayers. Man fasst damit auch mehrere Rasterdateien in einem Layer zusammen.
- TILEINDEX erzeugen
- Legen Sie in ArcView einen neuen Polygonlayer an.
- Digitalisieren Sie die Rechtecke, die die darzustellenden Grafiken umschließen
- erzeugen Sie eine neue Spalte vom Typ string mit der am Dateinamen orientierten Länge, z.B. 50 oder besser 100 Zeichen.
- Die Bezeichnung der Spalte, in der die Verweise auf die Rasterdateien stehen, wird für den Parameter TILEITEM in der Map-Datei verwendet.
Anlegen eines TILEINDEX mit „gdaltindex“
- Voraussetzung:
- Es liegen gekachelte und georeferenzierte Rasterdaten z.B. Luftbildkacheln vor. Die Georeferenzierung erfolgt bei TIFF-Daten über tfw-Dateien und bei JPEG-Daten über jgw-Dateien.
- Der Inhalt der tfw- und jgw-Dateien ist identisch. Tiff-Daten lassen sich somit in JPEG umwandeln, was Speicherplatz spart und kürzere Ladezeiten ermöglicht. Die tfw- und tif-Dateien bzw. die jpg- und die jgw-Dateien sind sinnvollerweise in einem Verzeichnis unterhalb des Datenpfades z.B. /opt/lampp/var/data abzulegen.
- Erzeugung des Index:
- Infos über die Befehlssyntax von „gdaltindex“ erhält man durch Eingabe des Kommandos „gdaltindex“ ohne Parameter auf der Linux-Konsole.
- Der Tileindex lässt sich einfach im Datenverzeichnis z.B. mit dem Kommando „gdaltindex luftbilder.shp luftbilder/*.jpg“ erzeugen. Hierbei ist der Verzeichnisname mit den Daten „luftbilder“ und das erzeugte shape-file mit dem Index ist „luftbilder.shp“.
- Einbindung als Raster-Layer:
- Es ist ein Rasterlayer in der Tabelle layer MySQL-Datenbank anzulegen. Der Tileindex muss jetzt lediglich in der Spalte „tileindex“ der Tabelle eingetragen werden. In diesem Beispiel ist der Eintrag „luftbilder.shp“ vorzunehmen.
- Mögliche Probleme:
- Wenns nicht gleich funktioniert sind zunächst die Rechte der Daten zu überprüfen und ggfs. mit „chmod“ z.B. auf 755 zu setzen.
- Die Erzeugung eines Index über grössere Datenbestände kann schon mal etwas dauern. Das Kommando sollte dann aber ohne Fehlermeldungen durchlaufen.
Hinweise zur Vergabe von Verzeichnis und Dateinamen
Die Verwendung von Umlauten, Leerzeichen, Schrägstrichen oder sonstigen Sonderzeichen sollte vermieden werden.
Stelle
Neue Stelle anlegen
Zum Anlegen einer neuen Stelle kann der Menüpunkt „Stelle Anlegen“ aus der Menügruppe „Stellenverwaltung“ verwendet werden.
Zu einer Stelle können neue Menügruppen, Layer und Benutzer hinzugefügt werden.
z.Z. können nur ganze Gruppen von Menüs hinzugefügt werden. Wenn einzelne Menüpunkte hinzugefügt werden sollen, am besten den Menüpunkt in der Tabelle u_menues anlegen und einer Gruppe zuordnen, Reihenfolge beachten. Anschließend diese Gruppe aus der Stelle löschen und wieder neu hinzufügen. Dann werden alle Untermenüs auch zu der Stelle übernommen.
Die Rechte der Nutzer in den Stellen werden allgemein durch die Zuordnung der Layer und Menüpunkte geregelt. Die Rechte an extra in der Tabelle u_funktionen eingetragenen Funktionen müssen extra in die Tabelle u_funktionen2stelle eingetragen werden.
Stellen anzeigen
Über den Menüpunkt „Stellen anzeigen“ der Menügruppe Stellenverwaltung können Stellen angezeigt werden, gelöscht und geändert werden.
Stellen ändern
Zur Änderung von Stellen siehe „Neue Stelle anlegen“.
Maximale Ausdehnung des Kartenfensters für eine Stelle ändern
Die Koordinaten für die maximale Ausdehnung des Kartenfensters einer Stelle läßt sich über die Angaben zu minxmax, minymax, maxxmax, maxymax in der Tabelle stelle in der Zeile der entsprechenden Stelle ändern.
Nutzerverwaltung
Authentifizierung über den Web-Server
Nutzer von kvwmap müssen sich authentifizieren, damit die Anwendung weiß wen sie vor sich hat. Alle benutzerseitigen Einstellungen werden über den Benutzernamen gesteuert, die der Web-Server liefert, wenn die Authentifizierung anerkannt wurde.
Es gibt mehrere Möglichkeiten der Authentifizierung mit Apache siehe Dokumentation: http://httpd.apache.org/docs/2.0/howto/auth.html
Neben der Authentifizierung über das Standardmodul mod_auth kann auch mod_auth_mysql verwendet werden. Wir der Name schon sagt erfolgt dabei die Authentifizierung über eine MySQL-Datenbank und ist das sinnvollerweise die kvwmap-Datenbank, wenn man nicht schon eine andere Datenbank mit den Benutzern hat.
Authentifizierung mit MySQL
mod_auth_mysql.so sollte im Ordner modules vom apache Verzeichnis zu finden sein. Wenn nicht downloaden und compilieren nach Installanweisungen.
Man muss zunächst in der httpd.conf das Modul mod_auth_mysql einbinden
Also das Komentarzeichen von folgender Zeile wegnehmen:
LoadModule mysql_auth_module modules/mod_auth_mysql.so
Dadurch wird in der Zeile:
<IfModule mod_auth_mysql.c> Include conf/mod_auth_mysql.conf </IfModule>
Ebendieses Konfigurationsdatei geladen. Der entscheidende Teil für kvwmap sieht folgendermassen aus und muss für die eigene Version, das eigene Verzeichnis angepasst werden. Hier ist kvwmap_1.5.7 das zu schützende Verzeichnis
<Location /kvwmap-1.5.7> AuthName "MySQL Secured Place" AuthType Basic require valid-user AuthMySQLHost localhost # Der Name der Datenbank wo die Nutzer drin stehen. AuthMySQLDB kvwmap # Der Name des Nutzers, der sich da anmelden soll bei der Datenbank zum nachsehen. AuthMySQLUser apachedemon AuthMySQLPassword # Das Passwort von apachedemon wenn es eins hat. AuthMySQLUserTable user # Die Tabelle wo die Nutzer drin stehen. AuthMySQLNameField login_name # Die Spalte wo die loginnamen drin stehen. AuthMySQLPasswordField passwort # Die Spalte wo die Passwörter drin stehen. ## AuthMySQLGroupTable user_grp (here do not modify this for the simple test!) ## AuthMySQLGroupField group (here do not modify this for the simple test!) AuthMySQLPwEncryption none # Hier kann man einschalten, das verschlüsselte #Passwörter erkannt werden. (z.B. md5 oder crypt) </Location>
Infos unter http://modauthmysql.sourceforge.net/CONFIGURE
Nutzer anlegen
Zum Anlegen eines neuen Nutzers wählt man den Menüpunkt „Nutzer anlegen“ im Obermenü Nutzerverwaltung. Es erscheint der Benuterdaten Editor wie in Abbildung dargestellt. Man trägt mindestens die Werte mit * ein und sendet das Formular mit „Als neuen Nutzer eintragen“ ab. Der eingetragene Nutzer hat anschließend sofort zugriff auf die Stellen, die im Feld „Berechtigte Stellen“ zugewiesen wurden.
Nur beim erstmaligen anlegen muss man das Password festlegen. Die Rechte des Nutzers werden über die Zuordnung der Rechte zu den Stellen definiert.
Nutzer ändern
Um Nutzerdaten zu ändern wählen Sie erst „Nuter anzeigen“ und dann „ändern“ oder „löschen“.
Layer
Zeichnungsreihenfolge von Layern Ändern
- Schlagen Sie die ID der Stelle in der Tabelle stelle nach.
- Ändern Sie die Reihenfolge, indem Sie die Zahlen in der Spalte drawingorder der Tabelle used_layer entsprechend ändern.
- Der Layer mit der kleinsten Nummern wird zuerst gezeichnet. Die anderen Layer werden nach der Reihenfolge der Nummern aufsteigend gezeichnet und überzeichnen die vorherigen.
Layer zu einer Stelle hinzufügen
- Nachschlagen der Stellen_ID in Tabelle stelle, von der Stelle, zu der ein Layer hinzugefügt werden soll.
- Wenn die Stelle noch nicht vorhanden ist, siehe neue Stelle anlegen.
- Nachschlagen der Layer_ID in Tabelle layer vom Layer, der zur Stelle hinzugefügt werden soll.
- Wenn der Layer noch nicht vorhanden ist, siehe neuen Layer anlegen.
- Eintragen der Zugehörigkeit des Layers zur Stelle in der Tabelle used_layer
- used_layer_id = wird automatisch vergeben (Autowert, Inkrementell)
- Stelle_ID = nachgeschlagene Nummer für Stelle
- Layer_ID = nachgeschlagene Nummer für Layer
- Status = 0
- aktivStatus = 1 wenn der Layer gleich sichtbar sein soll, sonst 0
- drawingorder = hängt davon ab an welcher Stelle der Reihenfolge der Layer gezeichnet werden soll. Schlagen sie die schon eingetragenen Nummern für die anderen Layer der Stelle in der Tabelle used_layer nach. Kleinere Nummern werden zuerst gezeichnet, größere später und überzeichnen vorherige. Rasterdaten sollten zuerst gezeichnet werden, da sie sonst andere Layer überdecken. siehe auch Zeichnungsreihenfolge von Layern Ändern
- Die anderen Felder können Sie erstmal so lassen
- Klicken Sie im Browser auf "neu Laden" aktivieren Sie den Layer und klicken noch mal "neu Laden". Ändern Sie ggf. nach Wunsch die Reihenfolge der Layer.
Neuen Layer anlegen
Vektor Layer
- Dateien des Layers in das Datenverzeichnis data des Servers kopieren. Das befindet sich in der www-root in der Regel unter /usr/local/httpd/htdocs/ oder bei XAMPP unter /opt/lampp/htdocs.
- Wenn es sich um eine neue Datenkategorie handelt, z.B. Daten zur Bebauungsplanung sollte aus Gründen der Übersichtlichkeit ein extra Ordner angelegt werden. Die Hinweise zur Vergabe von Datei- und Verzeichnisnamen sollten beachtet werden.
- Neuen Layer in der Tabelle layer anlegen
- Layer_ID wird von der Datenbank selbst vergeben.
- Name ist der Name der dann auch in der Legende erscheint
- Datenart
- 1 wenn es ein Punktlayer ist
- wenn es ein Polygonlayer ist
- wenn es ein Rasterlayer ist
- In Gruppe wird die Zugehörigkeit zur Datenkategorie gekennzeichnet. (Rote Bezeichnung in der Legende)
- pfad kann frei bleiben
- In Data wird der Speicherort der Dateien eingetragen ohne Dateiendung. Wenn die Daten in einem Unterverzeichnis liegen, dieses mit angeben, z.B. Umwelt/biotope
- tileindex und tileitem entfällt für Vektorlayer
- In der Spalte labelitem steht der Name der Spalte aus der später mal Angaben für die Beschriftung des Layers entnommen werden sollen.
- In der Spalte labelmaxscale gibt man an, ab welcher Maßstabszahl der Layer frühestens gezeichnet werden soll.
- Klasse für Layer definieren
- Layer zur Stelle hinzufügen
- Für die Sachdatenabfrage des neuen Vektorlayers ist ein Template (Vorlage) anzulegen in dem definiert wird welche Sachdaten aus der DBF-Tabelle des Layers mit welchem Layout dargestellt werden soll.
- Am einfachsten ist es ein Template eines schon vorhandenen Layers zu kopieren. Der Name der Template-Datei muss dem Namen des Layers entsprechen, die Endung .php besitzen und im Verzeichnis kvwmap_Versionsnummer/layouts/snippets liegen. Wenn Sie die Konstanten LAYOUTPATH und/oder SNIPPETS in der Datei config.php anpassen, kann das Templatefile auch an anderer Stelle stehen.
RasterLayer
- Rasterdateien in das Datenverzeichnis des Web-Servers kopieren.
- Wenn es sich um eine neue Datenkategorie handelt, z.B. Daten zur Bebauungsplanung sollte aus Gründen der Übersichtlichkeit ein extra Ordner angelegt werden. Die Hinweise zur Vergabe von Datei- und Verzeichnisnamen sollten beachtet werden.
- Wenn die Rasterdaten in einer gekachelten Darstellung angezeigt werden sollen (TILE) muss auch eine Shape-Datei mit den Verweisen zu den Rasterkarten in das Datenverzeichnis kopiert werden. Die Hinweise zum Anlegen eines TILEINDEX sind zu beachten.
Beschriftung für Layer anlegen
- Spalte des Layers auswählen welche den Text für die Beschriftung enthält.
- Eintragen des Spaltennamens in die Tabelle layer in das Feld labelitem.
- Eintragen der maximalen Maßstabszahl in der die Beschriftung noch angezeigt werden soll in das Feld labelmaxscale
- Eintragen des Styles (Label_ID) für die Beschriftung in der Tabelle classes für die entsprechende Klasses des Layers, die Beschriftet werden soll in der Spalte Label_ID.
- Entweder eine vorhandene Label_ID aus der Tabelle labels übernehmen oder eine neue Labeldefinition anlegen.
Neue Klasse für Layer anlegen
- Eintragen der neuen Klasse in die Tabelle classes.
- Die Class_ID wird automatisch vergeben.
- Der Name ist der Name unter der die Klasse in der Legende aufgeführt ist.
- Bei Layer_ID geben Sie die Nummer des Layers ein, zu dem die Klasse gehören soll.
- Für Style_ID geben Sie eine Nummer die das Aussehen der Zeichnungselemente der Klasse definiert. Styles sind in der Tabelle Styles vorgegeben. Siehe neuen Style anlegen.
- In der Spalte Expression wird der logische Ausdruck ausgegeben, der die Klasse hinsichtlich seiner Sachdaten definiert. z.B. werden mit "Objart = 1000" nur die Features angezeigt, die in der Spalte der DBF-Datei eine 1000 stehen haben.
- Die Spalte Label_ID ist für die Beschriftung der Klasse. siehe Neuen Beschriftungstyp einrichten
Neuen Layer aus PostGIS anlegen
- Es gibt verschiedene Möglichkeiten Daten in PostGIS einzubinden um diese als Layer für MapServer nutzen zu können.
- Man kann z.B. von einer vorhandenen Shape-Datei aus mit shp2sql eine SQL-Datei generieren und die Tabelle mit samt Geometryspalte, Index und Inhalt erzeugen.
- Dazu wird das in PostGIS mitgelieferte Skript shp2sql ausgeführt (siehe mapserver-wiki) .
- shp2pgsql <shapedateiname> public.<tabellenname> | psql -d <datenbankname>
- Wer die Tabelle selbst definieren will geht folgendermassen vor:
- Definieren der Tabelle und absenden über einen SQL-Datenbank Client
- Die möglichen Datentypen finden Sie in der Dokumentation zu postgres.
- Nachfolgend ein Beispiel für eine Tabelle zur Aufnahme von bodenrichtwertzonenn.
- Definieren der Tabelle und absenden über einen SQL-Datenbank Client
CREATE TABLE bw_bodenrichtwertzonen( oid int8 NOT NULL DEFAULT 0, gmeinde_id int8 NOT NULL DEFAULT 0, zonennummer int8 NOT NULL DEFAULT 0, standort varchar(255), richtwertdefinition varchar(50), bodenwert int8, erschliessungsart varchar(20), sanierungsgebiet varchar(50), sichtbar bool NOT NULL DEFAULT true, stichtag date );
ALTER TABLE bw_bodenrichtwertzonen OWNER TO doberan;
Die Tabelle muß die Systemspalte oid besitzen um von MapServer gelesen werden zu können. Wenn man nicht WITHOUT oid angibt, wird dieser Index intern selbständig angelegt und man muß sich nicht darum kümmern. Die Anzahl der Objekte kann dann 2*2147483647 betragen. Mehr mehr will muß diesen Schlüssel selbst anlegen. (siehe auch PostgreSQL Doku)
- Anschließend werden die Geometry-Spalten angelegt.
- Im Beispiel eine für den Umring der Bodenrichtwertzone mit EPSG-Code Gauß/Krüger 4. 3°-Streifen auf
Krassowskie-Ellipsoid (42/83):
SELECT AddGeometryColumn('public', 'bw_bodenrichtwertzonen','umring',2398,'POLYGON', 2)
und eine für die Position der Beschriftung:
SELECT AddGeometryColumn('public', 'bw_bodenrichtwertzonen','textposition',2398, 'POINT', 2)
Der Syntax ist in der PostGIS Dokumentation beschrieben.
Im nächsten Schritt werden Geometryindizee über die Tabellen gelegt.
CREATE INDEX bw_bodenrichtwertzonen_umring_gist ON bw_bodenrichtwertzonen USING GIST ( umring GIST_GEOMETRY_OPS );
CREATE INDEX bw_bodenrichtwertzonen_textposition_gist ON bw_bodenrichtwertzonen USING GIST ( textposition GIST_GEOMETRY_OPS );
Eine Anleitung dazu findet man unter GIST-Indexes in der PostGIS-Doku
- Als nächstes kann dann diese Tabelle als Layer in die Map-Datei oder Objekt Definition eingebunden werden.
- Das erfolgt über eine Abfrage. Was genau in dem Layer dargestellt werden soll, wird in der Anweisung Data des Map-Objektes definiert.
- Wenn z.B. die Umringe im Layer dargestellt werden sollen muss in es folgendermaßen heißen.
- CONNECTION "user=<datenbanknutzername> dbname=<datenbankname> host=<hostname>"
- DATA "umring FROM bw_bodenrichtwertzonen"
- Das Äquivalent in kvwmap wird in der Tabelle layer definiert. Der SQL-Text "umring FROM bw_bodenrichtwertzonen" wird in der Spalte Data abgelegt.
- Der Datentyp ist hier ein Polygon also Nummer 2. Connectiontyp 6 definiert, daß es sich um einen PostGIS Layer handelt und in Connection kommt ein String der Form:
- "user=<benutzername> dbname=<datenbankname>".
- Wenn die Texte genau an den Positionen der abgespeicherten Punkte ausgegeben werden sollen nutzt man die Abfrage:
- textposition FROM bw_bodenrichtwertzonen
- Über eine WHERE Klausel in der SQL-Abfrage die Data zugeordnet wird, kann eine Selektion erfolgen. Um z.B. nur die Bodenrichtwertzonen zum Stichtag 31.12.2002 darzustellen gibt man folgendes ein:
umring FROM bw_bodenrichtwertzonen WHERE stichtag = '2002-12-31'
- Möchte man einen Layer nicht von einer bestehenden Tabelle erzeugen, sondern von einer in PostgreSQL vorgefertigten Sicht, muss man dafür gesorgt haben, dass die Geometriespalte in der Abfrage auch in der Tabelle geometry_colums aufgeführt ist, sonst kann die srid nicht zugeordnet werden.
Wie eine räumliche Einschränkung erfolgt ist im Abschnitt Retrieving GIS Data in der PostGIS-Doku beschrieben
Neuen WMS-Layer anlegen
Zum Anlegen eines WMS-Layers muss man den getMap Request des WMS kennen und in das Feld Connection der Tabelle Layer eintragen. Die Felder pfad und data bleiben hier leer. Der ConnectionType ist 7 und als Datentyp wird 3 wie Raster gewählt. Alle anderen Einstellungen erfolgen wie bei einem normalen Rasterlayer. Queryable sollte auf 0 gestellt werden solange getFeatureInfo von kvwmap noch nicht unterstützt wird.
Der getMap Request braucht kein width, hight und BBox enthalten, das schickt MapServer mit z.B. so: https://www.wmsserver.de/cgi-bin/mapserv?map=/srv/www/htdocs/wms/mywms.map&request=getMap&Version=1.1.1&layers=mylayer
SQL-Skriptunterstützung zum Anlegen eines neuen Layers
Insbesondere für neue Fachschalen ist es nützlich, wenn das Anlegen von Layern für eine Vielzahl von Stellen automatisiert werden kann. Dazu wurden eine Reihe von SQL-Befehlen in die Datei mysql_install.sql gepackt.
Im oberen Teil befinden sich SQL-Statements für die Aktualisierung des Datenbankmodells und Konstanen, z.B. für den Benutzernamen und den Namen der Datenbank zum Zugriff auf PostGIS Layer.
Die SQL-Statements für Aktualisierungen des Datenbankmodells sind mit einem Datum versehen, so dass man selber abchecken kann ob sein Datenbankmodell noch aktuell ist. Insbesondere können solche Änderungen über Versionswechsel hinweg erfolgen. Meistens sind es zusätzliche Attribute, neue Tabellen für n-m Verknüpfungen oder die Änderung von Datentypen.
Die weiteren Statements sind zusammengefasst für die Fachschalen. Die einzelnen Statements sind kommentiert. Wer z.B. erstmalig einen Layer für die Bodenrichtwertzonen anlegt führt kopiert sich die Konstantendefinition in ein SQL-Fenster (z.B. in phpMyAdmin) und anschließend den Teil unter Bodenrichtwertzonen. Nach dem Ausführen sollte in der entsprechenden Stelle der Layer sofort verfügbar sein. Dazu sind aber auch einige Ersetzungen im Skript vorzunehmen. Gekennzeichnet sind diese Ersetzungsmöglichkeiten z.B. durch # Achtung Stelle_ID anpassen.
ALB-Fortführen
- Menüpunkt Fortführung Unterpunkt ALB_Änderung ausführen.
- WLDGE-Datei im Formular hochladen oder wenn schon in das Verzeichnis data/ALB kopiert, den entsprechenden Namen angeben.
- Wählen ob Grundbestand oder Fortführung und WLDGE-Datei einlesen
- Danach wird die Datei geprüft, eingelesen und die entsprechenden Tabellen in der Datenbank aktualisiert
- Für eine detailierte Beschreibung siehe wldge2sql_manual.
ALK-Aktualisieren
Mit Shapefiles
- Menüpunkt Fortführung Unterpunkt ALK_Änderung ausführen.
- Die Shape-Dateien ALK_Flurstuecke, ALK_Gebaeude, ALK_Nutzungen und ALK_Ausgest im Verzeichnis data/ werden eingelesen und die dazugehörigen Tabellen in der Datenbank aktualisiert.
- Die Fortführung erfolgt im Moment nur komplett über den gesamten Datenbestand im Shape-Format.
Mit EDBS-Dateien (BZSN)
- Es ist eine Fortführung über Beziehersekundärnachweis mit EDBS-Dateien über EDBS2WKT vorgesehen.
- Der Konverter EDBS2WKT muss auf einem Windows-Rechner installiert sein. Die Postgres-Datenbank mit PostGIS-Unterstützung muss vorhanden sein. Die ALK-Tabellen müssen schon mit EDBS2WKT angelegt sein.
- Dann kann das Einlesen der EDBS-Dateien erfolgen.
- Es kann sein, dass die Dateien noch vom UNIX Textformat in PC-Format geändert werden müssen. Dazu kann das Tool UnixToWin verwendet werden. Zu finden unter: http://62.153.231.87/alb/daten/UnixToWin.exe
WMS-Konformität
Kvwmap kann als WMS konformer MapServer eingesetzt werden. Dazu produziert kvwmap „Mapfiles“ mit entsprechenden Metadaten (siehe MapServer WMS Server HOWTO).
Den Speicherort für Mapdateien stellen Sie über die Konstante WMS_MAPFILE_Path ein.
Wenn Sie eine WMS konforme Map-Datei erstellen wollen, klicken auf den Menüpunkt WMS-Export und geben dort den Namen der Datei (z.B. wms_test.map) an. In dieser Datei wird dann der zuletzt angezeigte Zustand der kvwmap Kartenansicht abgelegt und ist für die Nutzung in einem Web Map Service nutzbar. Die Map-Datei enthält alle Metadaten, die für den getCapabilities Request erforderlich sind.
Die Map-Datei sollte in einem WWW-Verzeichnis stehen, z.B. /meinwwwroot/WMS. Dieses Verzeichnis muss wwwrun gehören.
Auf diese Map-Datei kann dann wie folgt zugegriffen werden.
getCapabilities-Request
http://www.myserver.de/cgi-bin/mapserv?map=/mywwwroot/WMS/wms_test.map&
request=getcapabilities
In dem vom MapServer geliefertem XML-Dokument sind die verfügbaren Layer aufgelistet. Diese können dann im getMap-Request zur Ansicht gebracht werden.
getMap-Request
http://www.myserver.de/cgi-bin/mapserv?map=/mywwwroot/WMS/wms_test.map& request=getmap&VERSION=1.1.1&layers=Landkreis,Gemeinde,Gemarkung,LSG& Height=500&width=500
Referenz zur Datenbank
Dieser Abschnitt enthält eine Beschreibung der Feldinhalte zu Nutzerdaten und Layern.
Eine ausführliche Beschreibung aller MapFile-Parameter, die in der Datenbank abgebildet werden, findet sich unter http://www.umn-mapserver.de/doc44/mapfile-reference44.html (für MapServer 4.6).
Alle nummerierten Parameter entsprechen den MapScript-Definitionen. Diese Definitionen können in der map.h der mapServer-Source im Abschnitt „General enumerated types“ nachgesehen werden.
Aktualisiert 01.09.2005, Markus Hentschel, kva@lk-nvp.de
Tabelle „user“
In dieser Tabelle werden die einzelnen Benutzer von kvwmap eingetragen. Jeder Benutzer wird mit Name und Vorname einzeln eingetragen. Das Anlegen von Gruppenbezeichnungen („Naturschutz“, „Kataster“ o.ä.) empfiehlt sich nicht. Hier erfolgt keine Zuweisung von Rechten oder Daten!
login_name
Das kann ein beliebiges Wort sein, z.B. die PC-Anmeldung des Benutzers.
funktion
Auswahl: „Admin“ oder „User“.
Tabelle „rolle“
Durch die Rolle werden dem jeweiligen Benutzer (User) beim Start von kvwmap verschiedene Stellen (mindestens eine) zunächst angeboten und nach erfolgter Auswahl zugeordnet. Für jeden User können beliebig viele Rollen angelegt werden. Zu jeder Rolle gehört genau eine Stelle. Erst durch die Rolle (d.h. eben durch die Zuweisung des Benutzers zu einer Stelle) werden dem Benutzer bestimmte Rechte verliehen, die sich aus der Zuordnung zur Stelle ergeben.
user_id
Die entsprechende ID aus der Tabelle „user“. Es können beliebig viele Rollen angelegt werden, in denen die user_id identisch ist, nur muss jeweils das Feld „stelle_id“ anders belegt werden.
stelle_id
Die entsprechende ID aus der Tabelle „stelle“. Zum Begriff „Stelle“ siehe dort.
nImageWidth, nImageHeight
Größe des Kartenfensters beim Start (in Pixeln), z.B. „500, 500“. Diese Einstellung wird aus der jeweils letzten Sitzung übernommen.
minx, miny, maxx, maxy
Ausdehnung des Kartenausschnitts beim Start (in Koordinaten). Diese Einstellung wird aus der jeweils letzten Sitzung übernommen.
nzoomFaktor
Faktor, der das Maß des Herein- bzw. Herauszoomens bestimmt. „2“ ist Verdoppelung bzw. Halbierung des Maßstabs. Diese Einstellung wird aus der jeweils letzten Sitzung übernommen.
selectedButton
Speichert, welcher Zoom-Button beim Beenden aktiviert war.
Tabelle „stelle“
Der Begriff „Stelle“ meint eine Arbeitsstelle oder besser Arbeitsaufgabe. An die Stelle ist eine festgelegte Benutzeroberfläche geknüpft mit allen daran hängenden Rechten an Funktionen, räumlicher Ausdehnung und Bedienelementen. Die Stelle definiert auch den Zugriff auf die Daten, die der Benutzer sehen und abfragen darf.
Bezeichnung
Wenn der Benutzer kvwmap startet, kann er aus den Stellen auswählen, die ihm über die Rolle zugewiesen wurden. In der Auswahl erscheint die Bezeichnung der Stellen.
start, stop
Damit kann die zeitliche Zuordnung des Benutzers zur Stelle eingestellt werden, z.B. bei Auslegungsfristen für Bürgerbeteiligungen oder für zeitlich begrenzte Gast-Zugriffe.
minxmax, minymax, maxxmax, maxymax
Maximal erlaubte Ausdehnung (in Koordinaten) des Kartenausschnitts, z.B. der gesamte Landkreis, die Stadt oder eine Gemeinde.
Referenzkarte_ID
Die entsprechende ID aus der Tabelle „referenzkarten“ zur Anbindung der Übersichtskarte. Zum Begriff „Referenzkarte“ siehe dort.
Authentifizierung
Wird nicht mehr verwendet.
ALB_status
Regelt die PDF-Ausgabe des ALB. „30“ = Eigentümerangaben nicht sichtbar, „35“ = Eigentümerangaben sichtbar.
Wappen
Dateiname des zugehörigen Wappens (Pfad wird in die config.php eingetragen).
alb_raumbezug
Mit „alb_raumbezug“ und „alb_raumbezug_wert“ kann man eine räumliche Einschränkung auf die ALB-Daten für eine Stelle vornehmen. Auswahlmöglichkeiten: „Kreis“, „Amt“, „Gemeinde“.
alb_raumbezug_wert
Gibt den Schlüssel des Kreises/des Amtes/der Gemeinde an.
Tabelle „used_layer“
Jeder Stelle können beliebig viele Used Layer zugeordnet werden. Zu jedem Used Layer gehört genau ein Layer. Umgekehrt ausgedrückt: Durch die Tabelle „used_layer“ kann ein Layer beliebig vielen Stellen zugeordnet werden.
stelle_id
Die entsprechende ID aus der Tabelle „stelle“.
layer_id
Die entsprechende ID aus der Tabelle „layer“. Zum Begriff „Layer“ siehe dort.
queryable
Layer können als abfragbar („1“) oder nicht abfragbar („0“) gekennzeichnet werden. Entsprechend ist das Info-Häkchenfeld in der Legende vorhanden oder nicht.
drawingorder
Die Zeichenreihenfolge, in der die Layer dargestellt werden, ist entscheidend für das Aussehen der Karte. Der Layer mit der kleinsten drawingorder-Nummer wird zuerst gezeichnet. Die drawingorder-Nummer kann bis zu elf Stellen besitzen, es empfiehlt sich also, großzügig bei der Vergabe zu sein, um später in kvwmap integrierte Layer noch sinnvoll einfügen zu können. Rasterlayer sollten zuerst gezeichnet werden, Beschriftungslayer zuletzt.
Durch die Angabe der Zeichenreihenfolge in den Used Layern kann jeder Stelle individuell eine eigene Zeichenreihenfolge gegeben werden.
rect_xmin, rect_ymin, rect_xmax, rect_ymax
Maximal zulässige Ausdehung des Layers in der zugeordneten Stelle
minscale
Kleinste Maßstabszahl, unterhalb der der Layer nicht mehr angezeigt wird (z.B. 500).
maxscale
Größte Maßstabszahl, über die hinaus der Layer nicht mehr angezeigt wird (z.B. 10.000).
Filter
Dieser Parameter erlaubt für Daten spezifische Attributfilter einzusetzen, die zur selben Zeit abgearbeitet werden wie die räumlichen Filter, aber bevor irgendwelche CLASS Ausdrücke ausgewertet werden.
template
Wenn Layer in verschiedenen Stellen unterschiedliche Sachdatenanzeigen bekommen sollen, können verschiedene Snippets zur Anzeige definiert werden. (Beispiel: biotope_amt1.php, biotope_amt2.php, etc.)
symbolscale
Gibt den Maßstab an, bei dem ein Symbol oder eine Beschriftung die Größe haben soll, die ihm in der Tabelle „styles“ bzw. „labels“ als size zugewiesen ist. Funktioniert nur, wenn gleichzeitig die Felder „minsize“ und „maxsize“ in der Tabelle „styles“ bzw. „labels“ mit Werten gefüllt sind.
Werden bei „symbolscale“ keine Angaben gemacht, hat das Symbol bzw. die Beschriftung immer genau die Größe, die durch „size“ definiert ist.
Tabelle „attribute“
Diese Tabelle regelt, welche Spalten eines Shapes bzw. welche Felder einer Datenbank zur Sachdatenabfrage verwendet werden dürfen. Diese Attribute müssen im jeweiligen Querytemplate definiert sein.
attributename
Name des Attributs (= Spaltenüberschrift im Indexshape), das zur Sachdatenabfrage verwendet werden soll.
layername
Name des zugehörigen Layers aus der Tabelle „layer“. Nicht der Name der Shapedatei! Zum Begriff „Layer“ siehe dort.
art
„dbf“ für Shapes
„postgis“ für PostgreSQL/PostGIS-Daten
Tabelle „attribute_access“
Diese Tabelle ordnet den Used Layern (d.h. im Endeffekt der Stelle) die Attribute zu, die in einer Sachdatenabfrage sichtbar sein dürfen.
Attributename
Name des Attributs (= Spaltenüberschrift im Indexshape), das zur Sachdatenabfrage verwendet werden soll.
used_layer_id
ID aus der Tabelle „used_layer“, die zugeordnet werden soll.
type
„SD lesen“ = Sachdaten lesen möglich.
„kein Zugriff“ = Sachdaten lesen nicht möglich.
Tabelle „layer“
Jeder Layer beinhaltet einen thematisch logischen und abgegrenzten Teilaspekt der Gesamtdatenmenge. Dabei wird in Raster-, Punkt-, Linien- und Flächenlayer unterschieden. Layer (soweit nicht Rasterlayer) können in kvwmap als Shapes vorliegen, aus einer PostgreSQL/PostGIS-Datenbank stammen oder als WMS bezogen werden.
Name
Der Name des Layers wird in der Legende angezeigt. Wird kein Name vergeben, wird dieser Layer nicht in der Legende angezeigt. Layernamen dürfen keine Sonderzeichen enthalten, insbesondere keine Leerzeichen.
Datentyp
„0“ = Punktlayer, „1“ = Linienlayer, „2“ = Flächenlayer (polygon), „3“ = Rasterlayer
Die Typen „Beschriftungslayer“ und „Circle“ sind z.Z. in kvwmap noch nicht definiert.
Der Datentyp muss nicht derselbe Typ sein wie die Shapedatei. Eine Polygon Shapedatei kann beispielsweise auch als Punkt- oder Linienlayer gezeichnet werden.
Gruppe
Layer können einer Gruppe zugeordnet werden. In der Legende erscheinen sie dann unter dieser Gruppenbezeichnung. Ein Ein- bzw. Ausschalten der Gruppe ist momentan nicht möglich.
pfad
Dieses Feld enthält vordefinierte SQL-Statements für die Sachdatenabfrage von PostGIS-Layern. Je nach dem ob connectiontype=6 ist oder nicht wird die Abfrage über die dbf-Dateien oder über die PostGIS Datenbank gestartet. Das Suchfenster wird im Abfragestatement durch xxxx freigehalten und bei einer Abfrage durch das Suchrechteck bzw. Punkt ersetzt. Ein Beispiel für ein Abfragestatement in diesem Feld ist:
SELECT *,AsText(koordinaten) AS punkte FROM fp_punkte_temp WHERE art IN (0,1) AND NOT Disjoint(koordinaten,GeometryFromText('xxxx'))
Auf alle hier selektierten Tabellenfelder kann in der Datei Layername.php zugegriffen werden für eine individuelle Gestaltung der Ergebnisanzeige.
Data
Name des Shapes ohne Endung. Bei Daten aus einer PostGIS-Tabelle wird die Geometriespalte und der Tabellenname angegeben, Beispiel: „the_geom from bplan“. Hinweis: Standardmäßig wird die Geometriespalte in einer PostGIS-DB immer „the_geom“ genannt.
tileindex
Wird nur bei Rasterlayern gesetzt. Wenn Rasterbilder gekachelt vorliegen und in einem Bildkatalog indiziert wurden, wird der Name des Index-Shapes hier angegeben. Die Eingabe im Feld „Data“ entfällt. Hinweis: Die Indizierung kann z.B. mit dem Werkzeug gdaltindex aus der GDAL-Installation erfolgen.
tileitem
Wird nur bei indizierten Rasterlayern gesetzt. Attributname (= Spaltenüberschrift im Indexshape), in dem die Pfade zu den einzelnen Bildern stehen.
labelangleitem
Enthält den Attributnamen der Sachdaten des Layers, der die Winkel der Texte enthält. Braucht nur ausgefüllt werden, wenn beschriftet werden soll und der Text nach bestimmten Werten in den Sachdaten ausgerichtet werden soll.
labelitem
Wird nur gesetzt, wenn eine Beschriftung erzeugt werden soll. Attributname (= Spaltenüberschrift im entsprechenden Shape), aus dem die Beschriftung entnommen werden soll.
labelmaxscale
Größte Maßstabszahl, über die hinaus der Layer nicht mehr beschriftet wird (z.B. 400.000)
labelminscale
Kleinste Maßstabszahl, unterhalb der der Layer nicht mehr beschriftet wird (z.B. 500)
connection
Wird nur gesetzt, wenn die Daten aus einer (PostGIS-)Datenbank oder von einem WMS kommen. Die connection ist im Falle einer Datenbank die Zeichenkette der Datenbankverbindung, bestehend aus Benutzername, Passwort, Datenbankname, Hostnamen, Name des Vorgangs. Beispiel: "user=nobody password=****** dbname=kvwmapsp1-4-0 host=localhost port=5432".
Beispiel für einen WMS: „http://www.beispiel.de/cgi-bin/mapserv?“
connectiontype
Wird nur gesetzt, wenn die Daten aus einer (PostGIS-)Datenbank oder von einem WMS kommen. Der connectiontype ist die Einstellung des Verbindungstyps.
Kvwmap unterstützt mit der Version 1.4.5 den Parameter „6“ = postgis und demnächst den Parameter „7“ = WMS.
classitem
Attributname (= Spaltenüberschrift im entsprechenden Shape), aus dem die Class erzeugt werden soll. Zum Begriff „Class“ siehe dort.
filteritem
Angabe zum Einsatz der „Filter“-Ausdrücke aus der Tabelle „used_layer“. Im Regelfall wird kein Filter definiert, dann sollte das Feld mit "id" gefüllt sein. Wird der Layer aus einer Sicht erzeugt, muss ein in der Sicht verwendeter Attributname (z.B. "objnr") eingetragen werden.
transparency
Wert, der angibt, wie opak der Layer sein soll, zwischen „0“ = vollkommen durchsichtig und „100“ = gar nicht durchsichtig.
tolerance
Die Empfindlichkeit von punktbasierten Abfragen. Wie weit darf man den Punkt verfehlen, damit er dennoch gefangen wird? Gilt in kvwmap bei der Abfrage von PostGIS-Layern auch für aufgezogene Rechtecken zum suchen.
toleranceunits
Einheit der Tolerance-Werte. Standardmäßig ist „pixels“ gesetzt. Für die Abfrage von PostGIS-Layern wird die Angabe von „tolerance“ mit der aktuellen Pixelgröße multipliziert. Ist „toleranceunits“ leer wird auch die Pixelgröße verwendet, ist sie „meters“ wird die „tolerance“ mit 1 multipliziert.
labelrequires
Die Beschriftung des Layers kann davon abhängig gemacht werden, ob ein anderer Layer an- oder ausgeschaltet ist.
Beispiel: ([flurstuecke] != 1) Der Layer wird angezeigt, wenn der Layer „flurstuecke“ nicht (‚!= 1‘) angezeigt wird.
Tabelle „classes“
Jede Class wird genau einem Layer zugeordnet. Mit der Class können Daten, die in einem Shape liegen, nach bestimmten Kriterien selektiert und in unterschiedlichen Ausgestaltungen präsentiert werden.
Name
Der Name der Class wird in der Legende angezeigt.
Layer_ID
Die entsprechende ID aus der Tabelle „layer“.
Expression
Wenn der Layer mehrere Classes enthält, regelt „Expression“ die Zugehörigkeit eines Features zur jeweiligen Class. Wenn kein Ausdruck vorhanden ist, werden alle Features einer Class zugeordnet.
Kvwmap lässt momentan nur logical Expressions zu. Dabei muss das Attribut (Spaltenüberschrift in der DBF-Tabelle des Shapes) explizit angegeben werden. Die Notation erfolgt so:
- Die komplette Expression wird grundsätzlich mit einer runden Klammer ( ) versehen.
- Das Attribut wird in eckige Klammern [ ] gesetzt. Handelt es sich um das Attribut eines Shapes, ist darauf zu achten, dass es in Großbuchstaben geschrieben wird. Handelt es sich um das Attribut einer PostGIS-Tabelle, ist darauf zu achten, dass es in Kleinbuchstaben geschrieben wird.
- Wird eine Zeichenkette abgefragt, wird sowohl die eckige Klammer des Attributs als auch der Ausdruck in einfache Anführungszeichen ‘ ‘ gesetzt.
- Folgende logische Operatoren werden unterstützt: =, >, <, <=, >=, =, lt (lower than), gt (greater than), ge (greater equal), le (lower equal), eq (equal), ne (not equal).
- logische Ausdrücke können mit „AND“ bzw. „OR“ beliebig verschachtelt werden.
Beispiel:
([EINWOHNERZAHL] >= 20000 AND ‚[ART]‘ ne ‚Stadt‘)
drawingorder
Darstellungsreihenfolge der Classes in der Legende. Wenn nichts angegegeben wird, werden die Classes alphanumerisch sortiert.
Tabelle „styles“
Styles beinhalten Parameter zur Symbolisierung und Ausgestaltung der im Layer enthaltenen Geometrien.
Symbol
Die laufende Nummer des Symbols in der Symboldatei (z.B. symbols.sym). Beginnend mit 1, ist also das fünfte Symbol die Nummer 5. In der Symboldatei müssen dafür keine Nummern explizit angegeben werden.
Hinweis: Große Schwierigkeiten gibt’s, wenn Symbole in die Symbol-Datei eingefügt werden. Besser den Symbolnamen verwenden.
Symbolname
Wenn die Symbole der Symboldatei Namen haben, sollten diese benutzt werden. Diese Verfahrensweise ist derjenigen der Symbolnummern vorzuziehen.
Size
Angabe der Höhe (in Pixeln) des Symbols bzw. des Musters, wenn es sich um einen Linienlayer handelt. Werden „Sizeunits“ gesetzt, bezieht sich die Angabe auf die definierte Einheit (momentan von kvwmap noch nicht unterstützt).
Die Umrandungen von Flächenlayern werden immer mit size=1 erzeugt. Sollen hier andere Größen bzw. auch Muster erscheinen, muss der Layer als Linienlayer angegeben werden.
„Size“ bei Flächenlayern in Kombination mit der Angabe von „Symbol“ erzeugt eine Flächenfüllung mit dem angegebenen Muster und der angegebenen Größe.
color
Farbe des Symbols, der Linie, der Fläche. Wird angegeben in „R G B“ (3 Zahlen mit Leerzeichen getrennt: „125 200 50“).
Backgroundcolor
Angabe einer Farbe für nicht-transparente Symbole.
Outlinecolor
Angabe einer Farbe, um Polygone und bestimmte Markersymbole zu umranden. Linien haben keine outlinecolor, hier müssen gegebenenfalls mehrere Styles miteinander kombiniert werden.
minsize, maxsize
Definiert die minimale bzw. maximale Anzahl der Pixel, um ein Symbol zu zeichnen. Hinweis: Damit die Darstellung skalierbar wird, müssen in der Tabelle „used_layer“ ein Wert für symbolscale und die Werte für minscale und maxscale gesetzt sein.
Mehr Information zur Erstellung von Symbolen und Liniensignaturen z.B. hier: http://www.mapmedia.de/dokumente/umn_signaturen_howto/index.html
Tabelle „u_styles2classes“
Da mehrere Styles zu einer Class gehören können, wird die Zuordnung des jeweiligen Styles in einer eigenen Tabelle vorgenommen.
class_id
Die entsprechende ID aus der Tabelle „classes“.
style_id
Die entsprechende ID aus der Tabelle „styles“.
drawingorder
Legt die Zeichnungsreihenfolge der Styles fest, wenn (z.B. bei komplexeren Linienausgestaltungen) mehrere Styles in einer Class enthalten sind.
Tabelle „labels“
Sämtliche Parameter dieser Tabelle werden in der MapServer Referenz unter o.a. Internetadresse ausführlich beschrieben. Hier sollen nur die „Schalter“ benannt werden:
Type
„0“ = Truetype, „1“ = Bitmap
Standardmäßig wird „0“ verwendet. Der Font muss im Ordner „Fonts“ enthalten sein und in der fonts.txt eingetragen sein!
minsize, maxsize
Definiert die minimale bzw. maximale Anzahl der Pixel, um eine Beschriftung zu erzeugen. Hinweis: Damit die Darstellung skalierbar wird, müssen in der Tabelle „used_layer“ ein Wert für symbolscale und in der Tabelle „layer“ Werte für labelminscale bzw. labelmaxscale gesetzt sein.
Position
„0“ = Die Beschriftung befindet sich links über dem Bezugspunkt
„1“ = Die Beschriftung befindet sich rechts unter dem Bezugspunkt
„2“ = Die Beschriftung befindet sich rechts über dem Bezugspunkt
„3“ = Die Beschriftung befindet sich links unter dem Bezugspunkt
„4“ = Die Beschriftung befindet sich rechts vom Bezugspunkt
„5“ = Die Beschriftung befindet sich links vom Bezugspunkt
„6“ = Die Beschriftung befindet sich über dem Bezugspunkt
„7“ = Die Beschriftung befindet sich unter dem Bezugspunkt
„8“ = Die Beschriftung befindet sich genau auf dem Bezugspunkt
„9“ = „Auto“, kalkuliert eine Beschriftungsposition, die keine andere Beschriftung beeinträchtigen wird.
Antialias
Kantenglättung. Funktioniert nur bei „Truetype“.
„0“ = ja, „1“ = nein
Partials
Zeigt Texte, die vom Kartenrand abgeschnitten werden.
„0“ = ja: auch Teile des Textes sollen noch angezeigt werden.
„1“ = nein: wenn der Text angeschnitten wird, ist er nicht mehr zu sehen.
Wird nichts angegeben, wird standardmäßig „0“ gesetzt.
Force
Zwingt Beschriftungen zur Anzeige, ohne Rücksicht auf Kollisionen.
„0“ = ja, „1“ = nein
Wird nichts angegeben, wird standardmäßig „1“ gesetzt.
Tabelle „u_labels2classes“
Da mehrere Label zu einer Class gehören können, wird die Zuordnung des jeweiligen Labels in einer eigenen Tabelle vorgenommen.
class_id
Die entsprechende ID aus der Tabelle „classes“.
label_id
Die entsprechende ID aus der Tabelle „labels“.
Tabelle „referenzkarten“
Diese Tabelle regelt den Aufbau der Übersichtskarte.
Name
Bezeichnung für die Übersichtskarte, kann frei gewählt werden.
Dateiname
Name der Rasterbild-Datei. Pfad zur Übersichtskarte ist in der config.php gesetzt!
xmin, ymin, xmax, ymax
Ausdehnung der Übersichtskarte (in GK-Koordinaten).
width, height
Größe der Übersichtskarte (in Pixeln), z.B. 120, 90.
Das Menü dient nicht der Themenauswahl. Es wird nicht für jede Stelle auch ein Menü angelegt. Die Themendarstellung und -auswahl für die jeweiligen Geodaten erfolgt über die Zuordnung von Used Layern zur Stelle und wird im Client in der Legende realisiert.
Menüs werden für spezielle Funktionen benötigt, z.B. für die Eingabe von Daten zu bestimmten
Themen bei der Nachweisverwaltung oder für spezielle Recherchen und Analysefunktionen bei ausgewählten Daten.
Name
Der Name wird im Menütext angezeigt.
Links
Der Link weist auf den Anwendungsfall, der in der index.php definiert ist. Beispiel: Der Nutzer soll Flurstücke suchen können. Der Anwendungsfall in der index.php lautet „Flurstueck_Auswaehlen“. Der entsprechende Eintrag im Feld „Links“ lautet dann „index.php?go=Flurstueck_Auswaehlen“
Obermenue
Die Menüs werden verschachtelt. Es gibt Obermenüs und darunter angeordnet Untermenüs. Soll ein Menü ein Untermenü sein, so wird hier die ID des entsprechenden Obermenüs angegeben. Beispiel: Die Flurstückssuche soll keinem Obermenü zugeordnet werden. Im Feld wird eine „0“ eingetragen.
Beispiel: Die ALB-Fortführung soll ein Untermenü im Menü „Fortführung“ sein. Das Menü „Fortführung“ hat die ID „17“. Diese ID wird im Feld eingetragen.
Menueebene
Die Verschachtelungstiefe wird in Ebenennummern beginnend bei „1“ angegeben. Beispiel: Die Flurstückssuche soll in der Verästelung am Anfang stehen. Im Feld wird eine „1“ eingetragen. Beispiel: Die ALB-Fortführung soll in der Verästelung unter dem Menü „Fortführung“ erscheinen. Im Feld wird eine „2“ eingetragen, da das Menü „Fortführung“ die Menüebene „1“ hat.
Target
„_blank“ öffnet ein neues Fenster. Das ist z.B. bei der Hilfe nötig. Standardmäßig wird nichts eingetragen.
Die Zuweisung der Menüs zur jeweiligen Stelle. Dadurch wird erreicht, dass bestimmte Menüs nur bestimmten Stellen zur Verfügung stehen.
Stelle_id
Die entsprechende ID aus der Tabelle „stelle“.
Menue_id
Die entsprechende ID aus der Tabelle „u_menues“.
Menue_order
Reihenfolge der Darstellung bei der Sortierung der Menüs in der Stelle. Das Menü mit der kleinsten Menue_order-Nummer wird zuerst gezeichnet. Die Nummer kann bis zu elf Stellen besitzen, es empfiehlt sich also, großzügig bei der Vergabe zu sein, um später für die Stelle hinzukommende Menüs noch einfügen zu können.
Tabelle „u_funktionen“
Funktionen sind spezielle Anwendungen, deren Ablauf in der index.php definiert wird. Mit Funktionen sind nicht die Zoomwerkzeuge gemeint!
Bezeichnung
Der Name wird in der Funktionenauswahl angezeigt.
Link
Der Link weist auf den Anwendungsfall, der in der index.php definiert ist. Zur Schreibweise siehe Tabelle „u_menue“.
Derzeit läuft es so, dass man die Funktion so definiert, wie der Anwendungsfall, den man schützen will. Also wenn man z.B. den Anwendungsfalle: „ALB_Aenderung“ schützen möchte, muss „ALB_Aenderung“ in Bezeichnung eingegeben werden.
In der index.php werden diese Einschränkungen für den jeweiligen Anwendungsfall aber nur dann wirksam, wenn die Rechteeinschränkung abgefragt wird.
Ein Anwendungsfall ohne Rechteeinschränkungsmöglichkeit:
case „Anwendungsfall“ :
{ $GUI->functiondieausgefuehrtwerdensoll(); }
Anwendungsfall mit Einschränkungsmöglicheit:
case „Anwendungsfall“ :
{ if ($GUI->Stelle->isFunctionAllowed($GUI->formvars['go'])) { $GUI-> functiondieausgefuehrtwerdensoll(); } else { # Benutzer ist nicht berechtigt zum Ausführen der Funktion $GUI->Fehlermeldung='Sie sind nicht berechtigt diesen Anwendungsfall auszuführen.'; $GUI->rollenwahl($Stelle_ID); $GUI->output(); } }
Man Sieht, dass im Falle der erteilten Berechtigung der Anwendungsfall ausgeführt wird und man sonst auf die Stellenauswahl geleitet wird.
Man könnte meinen, dass diese Verzweigung generell für alle Anwendungsfälle vor der Abarbeitung der cases ausgeführt werden könnte, dann kann man aber nicht individuell entscheiden was geschehen soll, wenn keine Rechte vorliegen.
Bisher gilt also, wenn Sie Anwendungsfälle extra schützen wollen (zusätzlich zu der Möglichkeit den Link zur Anwendung in der Stelle gar nicht erst anzuzeigen) dann teilen sie es den Entwicklern mit und diese können das fest in die index.php aufnehmen. Es hindert sie natürlich keiner daran ihre eigene index.php zu erstellen. Achtung dann aber beim update.
Tabelle „u_funktion2stelle“
Die Zuweisung der Funktionen zur jeweiligen Stelle. Dadurch wird erreicht, dass bestimmte Funktionen nur bestimmten Stellen zur Verfügung stehen.
Funktion_id
Die entsprechende ID aus der Tabelle „u_funktionen“.
Stelle_id
Die entsprechende ID aus der Tabelle „stelle“.
Erlaubt
Wenn eine Funktion zugeordnet werden soll, muss sie auch explizit erlaubt werden.
Tabelle „u_rolle2used_layer“
Die Tabelle speichert beim Verlassen von kvwmap den Status der Häkchenfelder in der Legende. Damit werden die Einstellungen eines Benutzers gespeichert, unabhängig davon, ob ein anderer Benutzer in der selben Stelle andere Einstellungen vornimmt.
AktivStatus
Entscheidet, ob der Layer nach dem Start sichtbar ist („1“) oder nicht („0“). Entsprechend ist in der Legende ein Häkchen gesetzt oder nicht.
QueryStatus
Entscheidet, ob der Layer nach dem Start zur Abfrage ausgewählt ist („1“) oder nicht („0“). Entsprechend ist in der Legende ein Häkchen gesetzt oder nicht.