Admin-Dokumentation: Unterschied zwischen den Versionen
(→Layer aus Mapdatei laden) |
(→MySQL Datenbank administrieren) |
||
Zeile 1.631: | Zeile 1.631: | ||
[[Bild:OWSServiceException.png]] | [[Bild:OWSServiceException.png]] | ||
+ | =Datenbankadministration= | ||
==MySQL Datenbank administrieren== | ==MySQL Datenbank administrieren== | ||
===Datensicherung=== | ===Datensicherung=== |
Version vom 13. April 2007, 10:15 Uhr
Inhaltsverzeichnis
- 1 Übersicht
- 1.1 Hintergründe für die Entwicklung
- 1.2 Funktionalität im Client
- 1.3 Funktionen auf dem Server
- 1.4 Fachschalen
- 1.5 Aufbau des PHP-Skript
- 2 Installation
- 3 Administration
- 4 Import/Export
- 5 Datenbankadministration
- 6 Referenz zur MySQL-Datenbank von kvwmap
- 6.1 Tabelle "classes"
- 6.2 Tabelle "druckrahmen"
- 6.3 Tabelle "labels"
- 6.4 Tabelle "layer"
- 6.5 Tabelle "m_grids"
- 6.6 Tabelle "m_grids2used_layer"
- 6.7 Tabelle "polygon"
- 6.8 Tabelle "referenzkarten"
- 6.9 Tabelle "rolle"
- 6.10 Tabelle "rolle_nachweise"
- 6.11 Tabelle "stelle"
- 6.12 Tabelle "stelle_gemeinden"
- 6.13 Tabelle "styles"
- 6.14 Tabelle "u_attributfilter2used_layer"
- 6.15 Tabelle "u_consume"
- 6.16 Tabelle "u_consume2comments"
- 6.17 Tabelle "u_consume2layer"
- 6.18 Tabelle "u_consumeALB"
- 6.19 Tabelle "u_consumeALK"
- 6.20 Tabelle "u_funktion2stelle"
- 6.21 Tabelle "u_funktionen"
- 6.22 Tabelle "u_groups"
- 6.23 Tabelle "u_groups2rolle"
- 6.24 Tabelle "u_labels2classes"
- 6.25 Tabelle "u_menue2rolle"
- 6.26 Tabelle "u_menue2stelle"
- 6.27 Tabelle "u_menues"
- 6.28 Tabelle "u_polygon2used_layer"
- 6.29 Tabelle "u_rolle2used_layer"
- 6.30 Tabelle "u_styles2classes"
- 6.31 Tabelle "used_layer"
- 6.32 Tabelle "user"
- 7 Weitere Hilfe
Weitere Informationen im kvwmap Forum
Übersicht
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, Markus Hentschel, Holger Riedel, Heinz Schmidt
Vielen Dank auch für die Zuarbeiten und Hinweise aus den Katasterämtern Bad Doberan, Nordvorpommern, Ücker-Randow, Ludwigslust/Schwerin, Parchim, Waren-Müritz, Rügen, Mecklenburg-Strelitz/Neubrandenburg und Rostock
Dienstleistungen zu kvwmap werden angeboten von:
- Steinbeis Transfer Zentrum Geoinformatik Rostock/Greifswald STZ
- Prof. Ralf Bill
Status des kvwmap-WIKIs: in Work!!
Die Dokumentation erhebt keinen Anspruch auf Vollständigkeit. Sie wird sowohl von den Entwicklern als auch von den Anwendern aktualisiert und laufend gehalten. Dennoch kann es vorkommen, dass bestimmte Inhalte nicht immer ganz zur aktuellsten Version passen. Als registrierter Teilnehmer dieses WIKIs können Sie Fehler selbst beheben und die Dokumentation auf dem aktuellsten Stand halten. Wenn Sie nicht registriert sind, sind Zuarbeiten, Hinweise und Korrekturvorschläge selbstverständlich genauso herzlich willkommen. Schreiben Sie an die o.g. Personen, die auch in der Teilnehmerliste auftauchen.
Die Dokumentation wird in der jeweils aktuellen Version jedem neuen Versionspacket von kvwmap im Unterordner help hinzugefügt. Für die Richtigkeit und Vollständigkeit der folgenden Angaben wird keine Garantie übernommen.
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 eines entsprechenden Objekts
- Aufziehen einer Box um betreffende Objekte
- Klick in die Karte und Angabe eines Abfrageradius' Datei:query-radius.png
- Zeichnen eines Abfragepolygons Datei:polyquery.jpg
- Abfrage der ALB-Daten beim Flurstückslayer, Ausgabe in PDF im amtlichen Format 30, 35 und 40
Suche
- Flurstücke (Gemeinde-Gemarkung/Flur/Flurstück)
- Adressen (Gemeinde/Strasse/Hausnummer)
Messen
Geometrie-Editor
In vielen Fachschalen ist es nötig Polygone zu zeichnen. So z.B. in der Flächenversiegelung, der Bauleitplanungsänderung, den Notizen, Jagdkataster und der Filterverwaltung. Zum Zeichnen der Polygone gibt es 5 verschiedene Werkzeuge:
Die Darstellung der Polygone erfolgt mit SVG und die geometrischen Operationen werden mit AJAX und Postgis realisiert. Das Bild zeigt den Geometrieeditor in der Filterverwaltung.
Generischer Layereditor
Mit dem generischen Layereditor ist es möglich, die Datensätze von Postgis-Layern zu bearbeiten und neue Datensätze zu erzeugen. Dabei können sowohl die Sachdaten, als auch die Geometrien verändert werden. Damit ein Postgis-Layer mit dem generischen Layereditor bearbeitet werden kann, müssen folgende Voraussetzungen geschaffen sein:
- Alle Tabellen, auf die der Layer zugreift, müssen oids besitzen
- Dem Layer darf in der jeweiligen Stelle kein Template zugeordnet sein
- Um Sach- oder Geometriedaten zu verändern, muß das entsprechende Recht in der Layerattribut-Rechteverwaltung gesetzt sein
Über den Template-Eintrag lässt sich also steuern, ob für einen Layer der generische Layereditor oder ein Snippet zur Sachdatenanzeige verwendet werden soll.
Es werden sowohl Punkt- als auch Polygon-Layer unterstützt. Bei den Polygonlayern ist darauf zu achten, daß das enforce_geotype constraint die Geometrietypen 'Polygon' und 'MULTIPOLYGON' unterstützt. Damit lassen sich sowohl einfache Polygone, als auch Multipolygone zeichnen und abspeichern.
Die Rechteverwaltung des generischen Layereditors
Wie schon erwähnt, ist es mit dem generischen Layereditor möglich, die Daten von Postgis-Layern zu verändern. Damit nicht jeder beliebige Nutzer Daten ändert, gibt es ein Rechtesystem, welches jeder Stelle Privilegien zuordnet, die den Zugriff auf die Layerattribute regeln. Die Rechteverwaltung wird über die go-Variable Layerattribut-Rechteverwaltung aufgerufen. Hier wählt man zunächst die gewünschte Stelle aus und danach einen Layer. Jetzt werden alle Attribute des Layers untereinander aufgelistet. Diese Liste von Attributen ergibt sich aus dem Pfad-Statement des Layers. Jedem Attribut ist ein Privileg zugeordnet. Zur Auswahl stehen 'nicht sichtbar', 'lesen' und 'editieren'. Standardmäßig sind alle Attribute eines Layers nur lesbar. Soll nun ein Attribut des Layers für eine Stelle nicht im generischen Layereditor angezeigt werden, so setzt man das entsprechende Privileg auf 'nicht sichtbar'. Soll ein Attribut bearbeitet werden können, setzt man das Privileg auf 'editieren'.
Bearbeiten von Sach- und Geometriedaten
Um die Sachdaten eines Layers zu bearbeiten, wählt man diesen Layer als abfragbar aus und macht eine Sachdatenabfrage auf das gewünschte Gebiet. Da dem Layer in dieser Stelle kein Template zur Sachdatenanzeige zugeordnet ist (s. Voraussetzungen), wird der generische Layereditor aufgerufen, d.h. an Hand der im Pfad-Statement des Layers vorkommenden Attribute und der entsprechenden Rechte wird ein Layereditor-Formular generisch erzeugt. Man erhält damit eine Tabelle mit den gefundenen Datensätzen als Zeilen und den zugehörigen Layerattributen als Spalten. In den Attributen, für die das Recht 'editieren' gesetzt ist, kann man nun die gewünschten Änderungen an den Datensätzen vornehmen. Mit dem Klick auf 'speichern' werden die geänderten Datensätzen in die entsprechenden Tabellen geschrieben.
Die Formularfelder des Layereditors können 3 verschiedene Typen haben: Text, Textfeld und Auswahlfeld. Standardmäßig sind die Formularfelder vom Typ Text, d.h. es sind einzeilige Eingabefelder. Gibt es in einer Postgis-Tabelle zu einem Attribut ein check-Constraint, das die möglichen Eingabewerte einschränkt, wie z.B.
CONSTRAINT art CHECK (art::text = 'gjb'::text OR art::text = 'ejb'::text OR art::text = 'tjb'::text)
so ist das Formularfeld dieses Attributes vom Typ Auswahlfeld. Das heißt, im Layereditor erscheint ein Auswahlfeld mit den durch das Constraint vorgegebenen Werten als Auswahlmöglichkeiten. Um einem Attribut manuell einen Formlartyp zuzuweisen, gibt es den Attributeditor. Dieser läßt sich im Layereditor (nicht der generische, sondern der andere) über den Button 'erweiterte Einstellungen' aufrufen. Der Attributeditor zeigt alle Attribute des Layers an. Wie schon erwähnt sind standardäßig alle Attribute vom Typ Text, bzw. bei Einschränkung vom Typ Auswahlfeld (im zweiten Fall läßt sich der Typ dann auch nicht verändern). Nun kann man z.B. einem Attribut den Typ Textfeld zuweisen. Im generischen Layereditor erscheint dann ein mehrzeiliges Eingabefeld. Um einem Attribut den Typ Auswahlfeld zuzuweisen, wählt man diesen aus und kann nun unter Optionen die möglichen Werte festlegen. Dabei wird dieselbe Syntax verwendet, bei Definition einer enum-spalte in MySQL. Also
'Wert1','Wert2','Wert3'
Um die Geometrie eines abgefragten Datensatzes zu bearbeiten, klickt man im generischen Layereditor auf den Link 'Geometrie bearbeiten'. Nun wird der schon bekannte Geometrieeditor geladen, wobei die Geometrie des betroffenenen Datensatzes markiert ist. Man kann jetzt wie gewohnt, die Geometrie bearbeiten, wobei die beiden Werkzeuge "Geometrie hinzufügen" und "Geometrie entfernen" jetzt nicht mehr Flurstücksgeometrien selektieren, sondern die Geometrien des abgefragten Layers. Nach Klick auf 'Senden' wird die veränderte Geometrie in die Postgis-Tabelle eingetragen.
Layer-Suche
Neben der Abfragemöglichkeit über die Karte kann man auch über eine Suchmaske nach Postgis-Layern suchen und die Sachdaten im generischen Layereditor anzeigen und bearbeiten. Die go-Variable dazu heißt Layer-Suche. Hier stehen alle Layer zur Auswahl, die der aktuellen Stelle zugeordnet sind und die abfragbar sind. Nach Auswahl eines Layers kann man als Suchparameter die Layerattribute verwenden, für die man mindestens Leserecht hat. Das Ergebnis der Suche erscheint dann im generischen Layer-Editor.
Kartenausschnitt speichern/abrufen
Unter dem Kartenfenster befinden sich die Links: . Sie dienen dem Speichern von Einstellungen des aktuellen Kartenfensters und dem Abrufen gespeicherter Einstellungen von Kartenfenstern.
Speichern:
- Um einen bestimmen Kartenauschnitt zu speichern, passen sie das Kartenfenster und die entsprechenden Layern an.
- Zum Speichern des aktuellen Kartenfenstern wählen Sie den Link "Speichern".
- Sie gelangen auf die Oberfläche, in der der gewählte Kartenauschnitt gezeigt wird. Darüber befindet sich ein Eingabefeld, in dem es möglich ist ein Kommentar zum entsprechenden Kartenausschnitt hinzuzufügen. Der Kommentar ist in sofern wichtig, dass nach dem Zeitstempel nur so eine eindeutige Identifikation des gespeicherten Kartenausschnittes möglich ist.
- Durch das betätigen des "Speichern"-Button werden die Einstellungen des Kartenausschnittes und der dazugehörige Kommmentar gespeichert.
- Mit Hilfe des "Zurücksetzen"-Button können Sie die Eingabe im Kommentarfeld löschen. Es wird dabei nur das Kommentarfeld zurücksgesetzt, ohne den Kartenausschnitt zu speichern.
- Mit betätigen des "Abbrechen"-Button beenden sie den Vorgang ohne den Kartenausschnitt zu speichern.
Wählen:
- Wenn ein gespeicherter Kartenausschnitt geladen werden soll, betätigen Sie dazu den Link "Wählen".
- Es folgt eine Liste aller gespeicherten Kartenausschnitte des jeweiligen Nutzers.
- Durch betätigen des entsprechenden Zeitstempels gelangen Sie auf die Oberfläche, mit angepassten Kartenfenster, zurück.
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.
Bauleitplanungsänderung
Bei der Veränderung von B-Pläne etc. soll den Gemeinden, als Träger der Bauleitplanung, die Möglichkeit gegeben werden, um die zu verändernden Stellen ein Polygon zu zeichnen und somit die betroffenen Stellen unkenntlich zu machen. Damit soll gewährleistet werden, dass die betroffenen Teile der Pläne als nicht aktuell gekennzeichnet werden und somit seitens der Kreisverwaltung keine Falschaussagen getroffen werden.
Um die Fachschale Bauleitplanungsänderung aufrufen zu können, muss es einen entsprechenden Menüpunkt mit der go-Variable 'bauleitplanung' geben (Tabelle: u_menues). Außderdem muss dieser Menüpunkt der Stelle (Tabelle: u_menue2stelle) und dem Nutzer dieser Stelle (Tabelle: u_menue2rolle) zugeordnet werden. In der Fachschale ist es möglich ein Polygon zu zeichnen, um so das betroffene Gebiet innerhalb eines B-Planes zu markieren. Desweiteren muss eine E-Mail-Adresse angegeben werden, an die eine Mail mit der Änderungsbenachrichtigung geschickt wird. Zu dieser Benachrichtung gehört die Nummer des bearbeiteten B-Planes und eine Bemerkung zur Änderung. Nach dem Absenden des Formulars wird das Polygon gespeichert, und die Mail wird automatisch versandt.
Damit die geänderten Bereiche in den B-Plänen nicht mehr zu sehen, bzw. markiert sind, muss es einen Layer geben, der über dem Layer der B-Pläne liegt. Dieser Layer könnte beispielsweise so aussehen:
INSERT INTO layer VALUES (106, 'Bauleitaenderungen', 2, 4, "", 'the_geom from (select the_geom,id from bp_aenderungen where loeschdatum is null) as foo using unique id using srid=2398', "", "", "", "", 50000, 0, "", 'user=kvwmap password=kvwmap dbname=kvwmapsp', 6, "", "", 3, 'pixels', 0, '2398', 'EPSG:2398', "", '1.1.0', 'image/png', 60, NULL);
Für die Darstellung des Layers wird dann natürlich noch eine entsprechende Klasse und ein Style benötigt. Damit gewährleistet ist, dass dieser Layer stets aktiv ist, wenn der Layer B-Pläne aktiv ist, wird in das Feld requires in der Tabelle used_layer folgende Bedingung eingetragen:
([B-Plaene]=1)
Dadurch ist der Layer Bauleitaenderungen vom Layer B-Pläne abhängig, immer aktiv wenn dieser aktiv ist und sein Name nicht in der Legende zu sehen. Gibt man der Klasse des Layers Bauleitaenderungen keinen Namen, so erscheint auch die Klasse des Layers nicht in der Legende.
Um den die gespeicherten Polygone der Bauleitänderung trotzdem abfragen zu können, wird ein zweiter Layer angelegt. Dieser sieht z.B. so aus:
INSERT INTO layer VALUES (112, 'B-Plan Änderungen', 2, 4, 'SELECT id, username,hinweis,bemerkung,the_geom,datum FROM bp_aenderungen WHERE 1=1', 'the_geom from (select the_geom,id from bp_aenderungen where loeschdatum is null) as foo using unique id using srid=2398', "", "", "", "", 50000, 0, "", 'user=kvwmap password=kvwmap dbname=kvwmapsp', 6, "", "", 3, 'pixels', 0, '2398', 'EPSG:2398', "", '1.1.0', 'image/png', 60, NULL);
Dieser Layer ist dann nach Zuweisung von Klasse und Style in der Legende zu sehen und kann auch ausgeschaltet werden.
Die Polygone, die man in der Fachschale erstellt hat, lassen sich auch wieder löschen, jedoch werden sie nicht wirklich gelöscht, sondern nur als gelöscht markiert. Um Polygone löschen zu können, muss es in u_funktionen eine Funktion "BplanAenderungLoeschen" geben und diese muss der gewünschten Stelle zugeordnet werden. Nach einer Sachdatenabfrage auf den Layer "B-Plan Änderungen" lassen sich nun die aufgeführten Polygone löschen.
PDF-Export mit Druckrahmen
Der Nutzer hat die Möglichkeit einen Kartenausschnitt in ein PDF zu exportieren. Das Layout des PDF-Dokuments kann mit Hilfe von verschiedenen, voher definierten Druckrahmen festgelegt werden. Im folgenden wird beschrieben, wie die Erstellung eines solchen Druckrahmens erfolgt und wie der PDF-Export abläuft.
Druckrahmenverwaltung:
Die Erstellung eines Druckrahmens erfolgt in der Druckrahmenverwaltung. Um diese aufrufen zu können, muss es einen entsprechenden Menüpunkt mit der go-Variable 'Druckrahmen' geben (Tabelle: u_menues). Außderdem muss dieser Menüpunkt der Stelle (Tabelle: u_menue2stelle) und dem Nutzer dieser Stelle (Tabelle: u_menue2rolle) zugeordnet werden. In der Druckrahmenverwaltung werden unter 'Druckrahmenauswahl' alle in der MySQL-Tabelle 'Druckrahmen' gespeicherten Rahmen in einer Auswahlliste angezeigt (1). Wählt man einen der Druckrahmen aus, werden die Parameter des Rahmens unter 'Druckrahmendaten' in einem Formular angezeigt. Ist noch kein Datensatz in der Tabelle 'Druckrahmen' vorhanden, sind sowohl die Auswahlliste als auch die Formularfelder leer.
Ein Druckrahmen besteht aus mehreren Elementen und hat mehrere Parameter. Als erstes sollte man festlegen, welches Format der Druckrahmen haben soll. Das Formularfeld 'Format' bietet hier 4 verschiedene Auswahlmöglichkeiten (2). Nachdem das Format festgelegt wurde, kann man einen Druckkopf für das Dokument definieren. Der Druckkopf dient in erster Linie als Kopf für das PDF-Dokument, kann aber auch als Hintergrund für das gesamte Dokument benutzt werden. Im Druckkopf sollten alle Informationen enthalten sein, die statisch, d.h. bei jedem PDF-Export konstant sind. Um einen Druckkopf in den Druckrahmen einzubinden, wählt man unter 'Druckkopf: wählen:' eine entsprechende Bilddatei aus (3). Wichtig ist, das diese Datei im Format 'jpg' vorliegt. --HolgerR 13:17, 22. Aug 2006 (CEST) Damit der Druckrahmen auf dem Server abgespeichert werden kann, muss der in der config.php festgelegte 'DRUCKRAHMEN_PATH' physisch auf dem Server vorhanden sein. Um die Datei hochzuladen und ihre Abmessungen einzulesen, sollte man den Druckrahmen an dieser Stelle schon einmal speichern. Zuvor sollte man jedoch noch einen Namen vergeben, damit der Druckrahmen identifiziert werden kann. Dies erfolgt über das Formularfeld 'Name' (4). Jetzt klickt man auf 'Als neuen Rahmen speichern' (5) und der Datensatz wird in die Tabelle 'Druckrahmen' geschrieben. Der Druckrahmen sollte sich nun auch in der Auswahlliste der Druckrahmen befinden.
Die Position und Größe des Druckkopfes kann nun über die entsprechenden Formularfelder x,y (6) und Breite, Höhe (7) festgelegt werden. Die Felder x und y bestimmen dabei den Abstand des Druckkopfes vom linken bzw. oberen Rand des PDF-Dokuments. Die Maßeinheit ist bei allen Positions- und Größenangaben 1 Pixel im PDF. Neben dem Formularfeld 'Format' ist die Auflösung des PDF-Dokuments in Pixeln angegeben (8). Nachdem die Position und Größe des Druckkopfes definiert wurde, klickt man auf 'Änderungen speichern' (9). In der Vorschau (10) sollte nun der Druckrahmen zu sehen sein. Sollte die Position bzw. Skalierung des Druckkopfes noch nicht zufriedenstellend sein, kann diese verändert werden und nach erfolgter Speicherung in der Vorschau überprüft werden.
Als nächsten Schritt sollte man die Position und Größe der Karte festlegen. Dies geschieht analog zum Druckkopf mit den Formularfeldern x und y (11) und Breite und Höhe (12). Nach Speicherung der Änderungen ist die Position der Karte in der Druckrahmenvorschau zu sehen und kann bei Bedarf korrigiert werden. Mit der Karte und dem Dokumentenkopf sind die beiden Hauptelemente des Druckrahmens, die zur korrekten Funktion benötigt werden, definiert worden.
Neben der Karte und dem Druckkopf lassen sich weitere Elemente zum Druckrahmen hinzufügen. Dazu gehören u.a. ein Freitext (13), der Maßstab (14), das aktuelle Datum (15), die Gemarkung (16), die Flur (17) sowie die Angabe eines ursprünglichen Maßstabes der analogen Flurkarte (18) (hier ist die Datenquelle jedoch noch nicht integriert). Außer dem Freitext sind alle diese Elemente dynamisch, d.h. sie werden vom System automatisch gesetzt. Im Druckrahmenformular lässt sich die Position und die Schriftgröße jedes Elementes definieren. Werden die Änderungen am Druckrahmen gespeichert, so erscheinen auch diese Elemente in der Vorschau und können bei Bedarf angepasst werden.
Zusätzlich zu der normalen Karte lässt sich bei Bedarf auch eine Referenzkarte zum Druckrahmen hinzufügen. Um dies tun zu können, sind mehrere Vorraussetzungen nötig. Zum einen muss ein Rahmen bzw. Hintergrund für die Referenzkarte festgelegt werden. Dieser Hintergrund liegt über der normalen Karte und unter der Referenzkarte. Dazu lässt sich analog zum Druckkopf über 'Ref.hintergrund: wählen:' (19) eine entsprechende jpg-Datei auswählen und durch Klick auf 'Änderungen speichern' hochladen. Die Position und Größe dieses Referenzkartenhintergrunds lässt sich dann über die entsprechenden Felder anpassen (20). Nach der Festlegung des Referenzkartenhintergrunds kann man die Position und Skalierung der Referenzkarte definieren (21). Für die Referenzkarte muss man außerdem noch den Zoomfaktor einstellen, der festlegt, umwieviel diese Karte den Ausschnitt der normalen Karte vergrößert. Ein Zoomfaktor von -2 bewirkt hier beispielsweise, dass die Referenzkarte einen 2mal so großen Kartenausschnitt zeigt. Um festlegen zu können, welche Layer die Referenzkarte zeigen soll, wird für die Darstellung dieser Karte eine separates Mapfile verwendet. Der Pfad zu diesem Mapfile wird in der config.php über die Konstante 'REFMAPFILE' festgelegt. So ist es z.B. möglich, mittels der Referenzkarte eine Flurübersicht zu erzeugen, wie sie in ALK-Auszügen verwendet wird.
PDF-Export:
Um einen Kartenausschnitt unter Benutzung eines zuvor definierten Druckrahmens in ein PDF zu exportieren, muss es einen entsprechenden Menüpunkt mit der go-Variablen 'Druckausschnittswahl' geben (Tabelle: u_menues). Außderdem muss dieser Menüpunkt der Stelle (Tabelle: u_menue2stelle) und dem Nutzer dieser Stelle (Tabelle: u_menue2rolle) zugeordnet werden. In der Druckausschnittswahl ist der aktuelle Kartenausschnitt zu sehen. Darunter befinden sich Felder zur Angabe des gewünschten Druckmaßstabes und zur Auswahl des Druckrahmens. Nach Auswahl dieser Felder kann man auf der Karte den gewünschten Kartenausschnitt wählen, der in das PDF exportiert werden soll. Ist der Kartenausschnitt zu klein bzw. zu groß, muss der Druckmaßstab entsprechend angepasst werden.
Hat der Kartenausschnitt die gewünschte Position, gelangt man durch Klick auf 'Vorschau' zu einer Druckansicht, die Aufschluß darüber gibt, wie das spätere PDF-Dokument aussehen wird. Hier kann man überprüfen, ob beispielsweise alle benötigten Kartenelemente zu erkennen sind. Bei Bedarf kann dazu die Vorschau mit Hilfe der Buttons '+' und '-' vergrößert und wieder verkleinert werden. Ist die Druckvorschau nicht zufriedenstellend, gelangt man durch Klick auf 'zurück' wieder zur Druckausschnittswahl und kann die Einstellungen anpassen. Ist die Vorschau in Ordnung, kann man durch Klick auf 'Drucken' das PDF erzeugen.
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
Man hat die Möglichkeit entweder punktförmige oder flächenförmige Bodenrichtwerte zu erfassen. Bei flächenförmigen Bodenrichtwerten hat die entsprechende Tabelle in der Postgis-DB zwei Geometrien und muss folgendermaßen erzeugt werden:
CREATE TABLE bw_bodenrichtwertzonen ( gemeinde_id int8 NOT NULL DEFAULT 0, zonennr int8 NOT NULL DEFAULT 0, standort varchar(255), richtwertdefinition varchar(50), bodenwert float4, erschliessungsart varchar(50), sanierungsgebiete varchar(50), sichtbarkeit bool NOT NULL DEFAULT true, datum date ) WITH OIDS; SELECT AddGeometryColumn('public', 'bw_bodenrichtwertzonen','the_geom',2398,'POLYGON', 2); CREATE INDEX bw_bodenrichtwertzonen_the_geom_gist ON bw_bodenrichtwertzonen USING GIST (the_geom GIST_GEOMETRY_OPS); SELECT AddGeometryColumn('public', 'bw_bodenrichtwertzonen','textposition',2398,'POINT', 2); CREATE INDEX bw_bodenrichtwertzonen_textposition_gist ON bw_bodenrichtwertzonen USING GIST (textposition GIST_GEOMETRY_OPS);
Bei punktförmigen Bodenrichtwerten gibt es nur eine Geometrie und die Tabelle sieht folgendermaßen aus:
CREATE TABLE bw_bodenrichtwertzonen ( gemeinde_id int2 DEFAULT 0, standort varchar(255), richtwertdefinition varchar(50), bodenwert float4, erschliessungsart varchar(50), sanierungsgebiete varchar(50), sichtbarkeit bool NOT NULL DEFAULT true, datum date ) WITH OIDS; SELECT AddGeometryColumn('public', 'bw_bodenrichtwertzonen','the_geom',2398,'POINT', 2); CREATE INDEX bw_bodenrichtwertzonen_the_geom_gist ON bw_bodenrichtwertzonen USING GIST (the_geom GIST_GEOMETRY_OPS);
Über die Konstante BODENRICHTWERTTYP in der config.php läßt sich festlegen, ob flächenförmige oder punktförmige Bodenrichtwerte erfasst werden sollen.
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
- Quelle: http://www.ros.co.nz/pdf/
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/sql_dump 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.
MySQL
Installieren Sie auf Ihrem System einen MySQL Server. Folgen Sie den Installationsanleitungen unter: http://dev.mysql.com/doc/index.html Führen Sie zum einrichten der der kvwmap-Tabellen die Datei mysql_install.sql aus dem Verzeichnis /layouts/sql_dump
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 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 luftbilder/*.jpg“
erzeugen. Hierbei ist der Verzeichnisname mit den Daten „luftbilder“ und das erzeugte shape-file mit dem Index heißt „luftbilder“. Es werden 3 Dateien erzeugt. In diesem Beispiel luftbilder.shp, luftbilder.shx und luftbilder.dbf.
- 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
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 „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.
Neben der maximalen Ausdehnung kann über das Setzen von Filtern (siehe Tabelle 'used_layer' -> Filter) der Inhalt von Layern, dessen Objekte in der
PostgreSQL-Datenbank gehalten werden, stellenbezogen weiter eingeschränkt werden.
Einschränkung der Stellen bezüglich Inhalt des Kartenfensters und entsprechender räumlicher Anfragen, die mittels Raumbezug (Polygon) zuvor festgelegt
werden können, befindet sich z.Z. in der Entwicklung und wird in der nächsten Version zur Verfügung stehen!
Filterverwaltung
Die Filterverwaltung ermöglicht nicht nur das stellenbezogene räumliche bzw. inhaltliche Einzuschränken von Layern, sondern auch deren Sachdaten.
Dazu wählt man den Menüpunkt „Filterverwaltung“ (go-Variable: "Filterverwaltung"). Hier wird als nächsten Schritt die entsprechende Stelle und dann der betroffene Layer mit Hilfe der Auswahllisten gewählt. Damit wird eine Liste von Attributen geladen, über die der Layer eingeschränkt werden kann.
Zu jedem Attribut kann jetzt ein Wert festegelegt werden, um den der Layer eingeschränkt werden soll. Mit den Operatoren lassen sich die Einschränkungen noch flexibler gestallten, wie in den folgenden Beispielen gezeigt wird:
1. In diesem Beispiel werden nur Informationen vom Layer ausgegeben, die den Wert „132100“ im Attribut „gemkgschl“ aufweisen.
2. Wie in diesem Beispiel können den Werten auch Platzhalter hinzugefügt werden. Hier werden all Layerinformationen ausgegeben, die im Attribut „gemkgschl“ mit dem Wert „1321“ beginnen. Platzhalter lässt sich beliebig verschieben.
Ist einem Layer eine Geometrie zugeordnet, wird in der Liste der Attribute „the_geom“ geladen. In dem Fall ist es möglich die Einschränkung zum Layer räumlich durch ein Polygon festzulegen. Dazu wählt man als Wert „Polygon“ ( ) an und legt im Anschluss das Polygon im Kartenfenster fest. Als Operator kann man zwischen „Intersects“ oder „Within“ wählen. „Intersects“ schränkt die Objekte des Layers räumlich so ein, dass alle Objekte die vom Polygon geschnitten oder innerhalb des Polygons liegen abfragbar sind und dargestellt werden. Der „Within“-Operator stellt dabei nur die Objekte dar, die zu 100% innerhalb des Polygons liegen.
Als letzter Schritt müssen die Einstellungen noch mit dem „Speichern“-Button gesendet bzw. gespeichert werden.
Um die Einschränkungen eines Layer zu ändern, löscht man die entsprechenden Werte zu den Attributen oder ersetzt diese durch neue Werte. Im Falle einer räumlichen Einschränkung durch ein Polygon reicht es, wenn der Wert „Polygon“ zum Attribut „the_geom“ deaktiviert und die Änderung gespeichert wird. Um ein Polygon neu zu übernehmen, aktiviert man den Wert „Polygon“, löscht das geladene Polygon und legt ein neues Polygon fest, dass dann wieder gespeichert wird.
Die Attribute, die geladen werden entsprechen den Attributen, die in dem select-Statement der Tabelle „layer“ in der Spalte „data“ zu einem Layer eingetragen sind. Soll ein Layer durch mehr Attribut eingeschränkt werden, muss das select-Statement um diese Attribut zuvor erweitert werden. Die Attribute entsprechen den Spaltennamen in der Tabelle, in der die Objekte des Layers gehalten werden.
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.
- --HolgerR 10:54, 9. Aug 2006 (CEST)
- Unter SuSE Version > 9 müssen apache2-devel und mysql-devel installiert sein, damit einerseits apxs2 auf dem System vorhanden ist und andererseits die Bibliotheken von mysql zur Verfügung stehen
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. # Setzen von Bedingungen, z.B. Einschraenkung des Zugriffs auf die Funktion --HolgerR 18:02, 3. Aug 2006 (CEST) AuthMySQLUserCondition "Funktion = 'user'" # Mehrere Bedingungen in Klammern setzen; Verknüpfungen mit 'and' 'or' moeglich ## 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
Import/Export
Layer aus Mapdatei laden
Über die Funktion "Layer aus Mapdatei laden" (go-Variable: layerfrommapfile) hat man die Möglichkeit Mapdateien einzulesen und die darin enthaltenen Layer-, Klassen-, Styles- und Labels in die MySQL-DB zu speichern.
Man kann entweder eine einzelne Mapdatei hochladen oder eine gezippte Verzeichnisstruktur, in der die Fonts, Symbole usw. enthalten sind. Läd man eine Zip-Datei hoch, stehen alle in diesem Archiv vorhandenen Mapdateien für den Einlesevorgang zur Auswahl. Beim Einlesen der Mapdateien ist darauf zu achten, dass die Pfadangaben für das Fontset und das Symbolset in der Mapdatei stimmen. Ansonsten funktioniert der Einlesevorgang nämlich nicht.
Nachdem die ausgewählte Mapdatei eingelesen wurde, werden alle in ihr enthaltenen Layer nach Gruppen geordnet untereinander aufgelistet. Die Layer, die in der Mapdatei keiner Gruppe zugeordnet wurden, werden der Gruppe "Gruppe1" zugeordnet. Hinter jedem Layer gibt es eine Checkbox, über die man festlegen kann, ob der jeweilige Layer in die Datenbank gespeichert werden soll. Zusätzlich kann hier noch ausgewählt werden, ob das Font- und Symbolset um die zusätzlichen Fonts bzw. Symbole erweitert werden soll. Bei Auswahl der Fontseterweiterung werden außerdem noch die neuen Fonts in den Fontordner kopiert. Hierbei ist jedoch darauf zu achten, dass keine vorhandenen Symbole oder Fonts überschrieben werden. Daher empfiehlt es sich, diese beiden Anpassungen von Hand zu machen.
Nach Auswahl der gewünschten Layer klickt man auf "Layer hinzufügen" und die entsprechenden Layer werden in die Datenbank geschrieben. Nach erfolgter Speicherung der Layer wird ausgegeben, wieviele Gruppen, Layer, Klassen, Styles und Labels in die Datenbank eingefügt wurden.
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-Änderung
- Zum Einlesen von ALB Daten aus WLDGE-Dateien gibt es verschiedene Möglichkeiten. Zum einen können eine oder mehrere Grunddatenbestände und zum anderen Fortführungsdateien eingelesen werden.(siehe Abbildung)
- Der Anwendungsfall für die ALB-Änderungen nennt sich: ALB_Aenderung
- Wer also die ALB-Änderung in einen Menüpunkt einbinden möchte (Wenn noch nicht geschehen) sollte in der Tabelle u_menues in der Spalte links "index.php?go=ALB_Aenderung" eintragen.
- Nach Auswahl des Menüpunktes erscheint ein Formular zum Auswählen der WLDGE-Datei. Wenn die Datei schon auf dem Server liegt, geben Sie den Pfad und den Dateinamen im ersten Formularfeld an, ansonsten wählen Sie eine Datei von Ihrem lokalen Rechner zum hochladen aus.
- Dann wählen Sie über den Radiobutton aus ob es sich um eine Fortführung oder einen Grundbestand handelt aus.
- Wählen Sie in welche Datenbank die Daten sollen. Empfohlen wird PostgreSQL, weil da auch die ALK-Daten sind und die ALB-Daten sonst nicht mit ALK genutzt werden können. Nur wer seine ALK-Datein in MySQL hat und die ALB-Daten auch darein haben möchte sollte MySQL wählen. Die Unterstützung für das Speichern unter MySQL läuft aber aus. Mittelfristig sollen alle GIS-Daten, wozu auch die ALB-Daten zählen in die PostgreSQL Datenbank. Der Knopf MySQL wird also bald verschwinden.
- Wenn nicht direkt in die Datenbank geschrieben werden soll, sondern nur die Logdatei angelegt werden soll mit den SQL-Statements zum Einlesen der ALB Daten, kann als nächstes die Checkbox ausgewählt werden.
- Die Checkbox "Datenbank vorher leeren" darf nur ausgewählt werden, wenn die allererste Grundbestandsdatei eingelesen wird. Wenn mehrere Grundbestandsdateien eingelesen werden nur bei der ersten diesen Haken setzen.
- "Ohne Transaktion" sollte nur gewählt werden, wenn es sich um sehr große Dateien handelt, man das Einlesen testen möchte oder das Schreiben in die Datenbank sowieso unterdrückt hat. Die SQL-Befehle für den Begin der Transaktion wird dann auch nicht in die Logfiles geschrieben. Die Ausführung der SQL in einer Transaktion beim späteren Einlesen obliegt dann also dem Nutzer.
- Die Prüfung der WLDGE Kopfzeilen kann unterdrückt werden, wenn Fortführungen ohne Kopfzeilen oder mit falschen Datumsangaben eingelesen werden sollen. Geprüft wird:
- Ob die Datei mit der richtigen Dateikennung beginnt (1). - Ob bei einer Fortführung die Fortführungsart S enthalten ist. - Ob die Druckauftragsart 11 (Ausgabe mit Entschlüsselung) ist. - Ob die Dateikennungen 1.E.20 und 1.E.30 bei Fortführungen existieren. - Ob die Kennung der Erstabgabe L ist. - Ob das Datum der Grundausstattung ein gültiges ist. - Ob das Datum der Grundausstattung in der WLDGE Datei in der Datenbank vorkommt - Ob die Datumsangaben für den Zeitraum einer Fortführung gültig sind. - Ob das Anfangsdatum der Fortführung mit dem Enddatum der letzten Fortführung bereinstimmt.
- Letztlich kann noch gewählt werden ob die SQL-Statements in eine Logdatei geschrieben werden sollen oder nicht. Die Logdateien werden in den Pfad geschrieben, der in der Konstante:LOGPATH aus der Datei config.php angegeben ist.
- Die Namen der Logdateien der Grundbestandsdateien setzen sich wie folgt zusammen:
WLDGE_Dump_<Datenbank>_<Datumsstempel>.sql
- Die Namen der Fortführungen:
WLDGE_update_Dump_<Datenbank>_<Datumsstempel>.sql
- Nach dem Anklicken des Buttons Abschicken wird die Datei geprüft, eingelesen und die entsprechenden Tabellen in der Datenbank aktualisiert.
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 auf zwei Arten als WMS konformer MapServer eingesetzt werden.
1. über CGI 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&service=wms&version=1.1.0
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&service=wms &request=getmap&version=1.1.0&layers=Landkreis,Gemeinde,Gemarkung,LSG& Height=500&width=500
2. über kvwmap selbst
Dazu wird direkt kvwmap aufgerufen mit dem Anwendungsfall go=OWS. Genau wie beim normalen Aufruf der Anwendung muß sich der Nutzer auch hier beim ersten Mal authentifizieren. Dann stehen alle Layer des Nutzers in der aktuellen (letzten) Stelle als WMS zur Verfügung.
Hinter dem Parameter go können dann alle WMS konformen Anfrageparameter angehängt werden, für alle Requestarten. Um auch auf die Layer einer anderen Stelle des Nutzers zugreifen zu können, läßt sich der Parameter Stelle_ID angeben.
Im Beispiel ist ein getCapabilities Aufruf dargestellt.
http...://www.server.de/kvwmap/index.php?go=OWS&request=getCapabilities&service=wms&version=1.1.0&Stelle_ID=1
Existiert eine Stelle nicht oder jemand versucht auf eine falsche Stelle zuzugreifen, für die keine Berechtigung vorliegt wird folgende Exception zurückgeliefert:
Datenbankadministration
MySQL Datenbank administrieren
Datensicherung
Die Datenbank kann auf zwei verschiede Art und Weise gesichert werden.
- Kopieren des gesamten Verzeichnisses einer Datenbank, Datenbank muss dazu gestoppt sein, oder es ist sicher, dass keiner mehr zugreift.
- Erzeugen und Sichern eines Datenbankdumps, geht aus dem laufendem Betrieb heraus.
Zu einer Datenbank gehört immer das gleichnamige Verzeichnis unter dem Datenverzeichnis von mysql. Das ist meißtens unter /var/lib/mysql kann aber auch unter /usr/local/mysql/var o.ä. sein. Das Verzeichnis der Datenbank einfach einpacken und später dahin wieder auspacken zur Wiederherstellung.
Beispiel für die Sicherung eines Datenbankverzeichnisses. $cd /usr/local/mysql/var $tar cvfz kvwmapdb160-2006-09-09.tar.gz kvwmapdb160 $tar xvfz kvwmapdb160-2006-09-09.tar.gz -C /usr/local/mysql/var
Für die andere Variante führt man zunächst einen Dump von der laufenden Datenbank aus über die Dumpfunktion von phpMyAdmin oder das Programm mysqldump unter /usr/local/bin Es ist vorteilhaft den Pfad /usr/local/bin in die PATH Variable zu schreiben:
$export PATH=$PATH:/usr/local/bin
Optionen und Nutzung von mysqldump werden ausgegeben mit
$./mysqldump --help
Eine einzelne DB wird z.B. gesichert mit:
$./mysqldump -u root -p kvwmapdb160 > kvwmapdb160-dump_2006-09-09.sql
Zum wiederherstellen der Datenbank muss eine neue Datenbank angelegt werden.
$./mysql -u root -p
mysql$ create database kvwmapdb160;
mysql$ exit
Einlesen des Dump mit:
$./mysql -u root -p kvwmapdb160 < kvwmapdb160-dump_2006-09-09.sql
PostGIS Datenbank administrieren
Datensicherung
Siehe auch Kapitel 22. Datensicherung und -wiederherstellung im PostgreSQL Handbuch.
Wenn eine Datenbank still steht, also keiner gerade schreibt, könnte man zur Sicherung der Datenbank eine normale Sicherung des Dateisystems (z.B. /usr/local/pgsql/data/base) verwenden. Zur Sicherheit sollte dazu der postmaster runtergefahren werden und nach der Dateisicherung wieder hoch.
Sind die Datenbanken aktiv, wovon auszugehen ist, müssen die Hilfsprogramme pg_dump (für eine einzelne) oder pg_dumpall (für alle Datenbanken in einem data Verzeichnis) verwendet werden. Zusätzlich zu der durch die Dump-Programme geschriebenen Sicherungsdateien sollte man die Konfigurationsdatei data/pg_hba.conf sichern, denn die kommt nicht in der Dump-Datei vor.
Um die Datenbank/en wieder herzustellen, muss PostgreSQL initialisiert sein, bei einer neuen Installation durch initdb und alle Konfigurationsdatei, in denen manuelle Änderungen vorgenommen wurden wiederhergestellt sein. Der Restor läuft durch den Datenbank-Client psql. Wenn man mit pg_dump einzelne Datenbanken gesichert hatte und diese wieder herstellen möchte, muss man die Datenbank leer vorher anlegen und dann die Dump-Datei mit psql ausführen. Es ist vorteilhaft den Pfad /usr/local/pgsql/bin in die PATH Variable zu schreiben:
$export PATH=$PATH:/usr/local/bin
Im Beispiel wird die Datenbank kvwmapsp159 gesichert und in der neuen Datenbank kvwmapsp160 eingelesen.
$ pg_dump -U username kvwmapsp159 > /tmp/kvwmapsp159.dump
$ createdb -U username kvwmapsp160
CREATE DATABASE
$ psql -U username -f /tmp/kvwmapsp159.dump kvwmapsp160
Weitere Hilfe zu Optionen beim Sichern erhalten Sie mit den Befehlen
$ pg_dump --help $ pg_restore --help
Beispiel für die Sicherung einer Datenbank mit pg_dump und wiederherstellen mit pg_restore $./pg_dump -Fc -U postgres kvwmapsp160 > /tmp/test.dump $./pg_restore -U postgres --dbname=kvwmapsp161 /tmp/test.dump
Beispiel für einen Dump aus der laufenden DB heraus, z.B. als CRON: 1. Erzeugen der Schemadatei zum Anlegen einer neuen DB ./pg_dump -f /usr/local/pgsql/sic/pgdump_schema -s -F c <alter DB-Name>
2. Auslesen der Daten aus der alten DB ./pg_dump -f /usr/local/pgsql/sic/pgdump_data -a -F c <alter DB-Name>
3. Erstellen der neuen Tabellen (Die DB muss z.B. mit pgAdmin manuell angelegt werden) ./pg_restore /usr/local/pgsql/sic/pgdump_schema -d <neuer DB-Name>
4. Übernahme der Daten in die neue DB ./pg_restore /usr/local/pgsql/sic/pgdump_data -a -d <neuer DB-Name>
Referenz zur MySQL-Datenbank von kvwmap
Dieser Abschnitt enthält eine Beschreibung der Feldinhalte zu Nutzerdaten und Layern.
Eine ausführliche deutschsprachige 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). Das englische Original ist zu finden unter http://mapserver.gis.umn.edu/docs/reference/mapfile.
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.
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 "druckrahmen"
Diese Tabelle wird über die Funktion Druckrahmen automatisch gefüllt.
Tabelle "labels"
Sämtliche Parameter dieser Tabelle werden in der MapServer Referenz unter den o.a. Internetadressen 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.
wrap
Ermöglicht es, Zeilenumbrüche in Texte einzufügen. Als "wrap" ist der Dezimalwert des entsprechenden ASCII-Zeichens einzugeben, der dann durch einen Zeilenumbruch ersetzt wird.
the_force
Zwingt Beschriftungen zur Anzeige, ohne Rücksicht auf Kollisionen.
- "0" = ja
- "1" = nein
Wird nichts angegeben, wird standardmäßig "1" gesetzt.
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 ("Point")
- "1" = Linienlayer ("Line")
- "2" = Flächenlayer ("Polygon")
- "3" = Rasterlayer ("Raster")
- "4" = Beschriftungslayer ("Annotation", erzeugt nur Beschriftungen)
- "5" = Abfragelayer ("Query", wird nicht gezeichnet, kann nur abgefragt werden)
- "6" = Kreislayer ("Circle", erzeugt Ellipsen durch die Angabe eines Rechtecks)
Ausführlichere Angaben, z.B. zum Ort der Beschriftung, siehe die deutschsprachige Mapfile-Referenz.
Der Datentyp muss nicht derselbe Typ sein wie das Feature selbst. Eine Polygon Feauture kann beispielsweise auch als Punkt-, Linien- oder Abfragelayer generiert werden.
Gruppe
Layer können einer Gruppe zugeordnet werden. In der Legende erscheinen sie dann unter dieser Gruppenbezeichnung.
pfad
Dieses Feld enthält vordefinierte SQL-Statements für die Sachdatenabfrage von PostGIS-Layern. Beispiele für ein Abfragestatement in diesem Feld sind:
SELECT * FROM gd_lk_fluren WHERE 1=1
SELECT *,AsText(koordinaten) AS punkte FROM fp_punkte_temp WHERE art IN (0,1)
select o.objnr as oid,o.objart,o.folie,AsText(o.the_geom) AS umring,f.flurstkennz,f.gemkgschl from alkobj_e_fla AS o,alknflst as f WHERE o.folie='001' AND o.objnr=f.objnr
Auf alle hier selektierten Tabellenfelder kann eine Abfrage durchgeführt werden, wenn der Layer abfragbar geschaltet ist. Zur Gestaltung der Ergebnisanzeige wird für jeden Layer ein sog. "Template" oder "Snippet" angelegt, dessen Dateiname dem Layernamen entspricht.
Data
- Bei Anbindung eines Shapes der Name des Shapes ohne Endung.
- Bei Daten aus einer PostGIS-Tabelle wird die Geometriespalte und der Tabellenname angegeben, Beispiel:
the_geom from bplan as foo using unique oid using srid=2398
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
Die Angabe der connection entfällt bei Shapefiles. Die connection ist im Falle einer Datenbank die Zeichenkette der Datenbankverbindung, bestehend aus Benutzername, Passwort, Datenbankname, Hostnamen, Name des Vorgangs. Beispiel:
user='kvwmap' password='******' dbname='kvwmapsp159' host='localhost' port='5432'
Beispiel für einen WMS:
http://www.beispiel.de/cgi-bin/mapserv?
connectiontype
Der connectiontype ist die Einstellung des Verbindungstyps, z.B.:
- "6" = postgis
- "7" = WMS
- "9" = WFS
Die Angabe des connectiontypes kann bei Shapefiles entfallen.
classitem
Attributname (= Spaltenüberschrift im entsprechenden Shape), aus dem die Class erzeugt werden soll.
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 beim Aufziehen von Rechteckboxen.
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 aktuelle Layer wird angezeigt, wenn der Layer "flurstuecke" nicht (‚!= 1‘) angezeigt wird.
epsg_code
Die Angabe des Koordinatensystems, in dem die Daten dieses Features vorliegen. Stimmt das originäre Koordinatensystem nicht mit dem Ausgabekoordinatensystem überein, dass im Feld "epsg_code" in der Tabelle Rolle definiert wird, werden die Koordinaten vom MapServer on-the-fly transformiert.
ows_srs
Angabe des Ausgabekoordinatensystems, wenn der Layer als WMS bzw. WFS zur Verfügung gestellt werden soll, in der Form:
"EPSG:<code>"
wms_name
Angabe des Layernamens, wenn der Layer als WMS bzw. WFS zur Verfügung gestellt werden soll. Wird das Feld freigelassen, wird der im Feld "Name" verwendete Layername ausgegeben. Hinweis: Bei Layernamen, die deutsche Sonderzeichen enthalten, empfiehlt sich die Angabe eines WMS-Namens ohne deutsche Sonderzeichen.
wms_server_version
kvwmap unterstützt alle WMS-Versionen bis einschließlich 1.3.0
wms_format
Das Rasterformat des Ausgabebildes, wenn der Layer als WMS bzw. WFS zur Verfügung gestellt werden soll.
wms_connectiontimeout
Zeitspanne, nach der der WMS als "nicht verfügbar" klassifiziert wird und der Verbindungsaufbau auf diesen Layer abgebrochen wird.
logconsume
Definiert, ob Zugriffe auf diesen Layer geloggt werden sollen:
- "0" = Dieser Layer soll generell nicht geloggt werden
- "1" = Dieser Layer kann geloggt werden.
Ob die Zugriffe auf die mit "1" gekennzeichneten Layer tatsächlich in der Tabelle u_consume2layer protokolliert werden, entscheidet die Einstellung des Feldes "logconsume" der jeweiligen Stelle, in der dieser Layer aufgerufen wird.
Tabelle "m_grids"
Dient der Erzeugung eines Gitternetzes.
Tabelle "m_grids2used_layer"
Ordnet das Gitternetz aus der Tabelle "m_grids" einem Layer zu.
Tabelle "polygon"
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.
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.
epsg_code
Definiert das Ausgabekoordinatensystem für den jeweiligen User in dieser Stelle. Hinweis: Jeder User einer Stelle kann also sein Kartenbild in einem anderen Koordinatensystem erhalten.
active_frame
Hier wird die aktuelle Druckrahmen-ID gespeichert.
last_time_id
Speichert den Zeitpunkt des letzten aufgerufenen Kartenausschnitts eines Users.
Tabelle "rolle_nachweise"
Dient der Speicherung von Suchpolygonen für die Fachschale Nachweisverwaltung.
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.
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.
logconsume
- "0" = es erfolgt keine Protokollierung der Layerzugriffe für die User dieser Stelle
- "1" = wenn ein User dieser Stelle in der Karte navigiert oder eine Layerauswahl vornimmt, werden alle logbaren Layer in der Tabelle u_consume2layer mit Angabe eines Zeitstempels gespeichert.
Hinweis: Es werden nur die Layer der Stelle protokolliert, die im Feld "logconsume" der Tabelle layer als protokollierbar gekennzeichnet sind.
Tabelle "stelle_gemeinden"
Sowohl Adress- als auch Flurstückssuche können auf die Gemeinden, auf die die Stelle Zugriff haben soll, eingeschränkt werden.
Stelle_ID
Die ID der Stlle, die die Einschränkung erfahren soll.
Gemeinde_ID
Der (achtstellige) Gemeindeschlüssel der Gemeinde, die in dieser Stelle zur Auswahl stehen soll. Sollen mehrere Gemeinden in der Stelle zur Auswahl stehen, werden für die entsprechende Stelle mehrere Einträge erzeugt.
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 nur den Symbolnamen verwenden und das Feld "Symbol" grundsätzlich freilassen.
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, müssen Fläche und Umringslinie über zwei Classes und zwei Styles separat definiert 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.
Sollen Flächenlayer, die nur eine Farbe enthalten (siehe color), druckbar sein, darf für size niemals der Wert 0 gesetzt werden. Bei der Druckaufbereitung wird der Wert für size mit in die Umrechnung der Auflösung mit einbezogen. Wenn size=0 eingestellt ist hat das zur Folge, dass der entsprechende layer weder in der Druckvorschau noch im Druck ausgegeben wird.
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.
angle
Angabe des Winkels, unter dem alle Symbole der class erscheinen sollen.
angleitem
Angabe des Attributs in einem Layer, in dem der jeweilige Winkel eines Symbols gespeichert ist.
Mehr Information zur Erstellung von Symbolen und Liniensignaturen z.B. hier: http://www.mapmedia.de/dokumente/umn_signaturen_howto/index.html
Tabelle "u_attributfilter2used_layer"
Speicherung der Attribut-Filter der Layer einer Stelle. Diese Tabelle wird von kvwmap automatisch gefüllt.
Tabelle "u_consume"
Speichert die räumliche Ausdehnung aller Kartenausschnitte, die von den Benutzern generiert werden. Diese Tabelle wird von kvwmap automatisch gefüllt.
user_id
Speichert die ID-Nummer des Benutzers.
stelle_id
Speichert die ID-Nummer der Stelle, die der User im Moment der Ausschnittgenerierung gewählt hat.
time_id
Speichert Datum und Uhrzeit des Zeitpunkts, an dem der Ausschnitt erzeugt wurde.
activity
Speichert die Art des Zugriffs.
nimagewidth, nimageheight
Speichert die Kartenfenstergröße.
minx, miny, maxx, maxy
Speichert die Eckpunktkoordinaten des erzeugten Kartenausschnitts.
prev, next
Speichert, ob dieser Kartenausschnitt über die History-Funktion entstanden ist und ob er einen Vorgänger- bzw. Nachfolgerkartenausschnitt hat.
Tabelle "u_consume2comments"
Wenn ein Nutzer einen räumlichen Ausschnitt über die Funktion Kartenausschnitt speichern speichert, dann wird von kvwmap diese Tabelle automatisch gefüllt.
Tabelle "u_consume2layer"
Diese Tabelle speichert die Auswahl der Layer, die ein Benutzer in einer Stelle auswählt. Damit diese Protokollierung erfolgt, muss das Feld "logconsume" der entsprechenden Stelle in der Tabelle stelle mit "1" belegt werden.
Tabelle "u_consumeALB"
Speichert die druckenden Zugriffe eines Users auf das ALB und das jeweils ausgedruckte ALB-Format. Wird von kvwmap automatisch ausgefüllt.
Tabelle "u_consumeALK"
Speichert die druckenden Zugriffe eines Users auf die ALK und den jeweils verwendeten Druckrahmen. Wird von kvwmap automatisch ausgefüllt.
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_funktionen"
Funktionen sind spezielle Anwendungen, deren Ablauf in der index.php definiert wird. Mit Funktionen sind nicht die Navigationswerkzeuge oder die Menüs gemeint, sondern bestimmte Anwendungen wie etwa die Anzeige von Eigentümerdaten, für die benutzerbezogen Rechte vergeben werden müssen.
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 Anwendungsfall: "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_groups"
Speichert den Namen einer Gruppe. Alle Layer werden einer Gruppe zugeordnet.
Tabelle "u_groups2rolle"
Speichert benutzerbezogen, ob die Layer einer Gruppe gerade sichtbar sind oder nicht.
Die Felder "user_id", "stelle_id" und "id" müssen für jeden User in jeder Stelle erstellt werden. In das Feld "Status" speichert kvwmap den jeweiligen Zustand der Gruppe.
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".
Speichert, ob ein (untergeordnetes) Menü sichtbar ist oder nicht.
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.
Menüs sind bestimmte Funktionen, z.B. die Suchfunktionen oder die Hilfe. Mit Menü ist nicht die Themenauswahl oder die Navigationsleiste gemeint. Jeder Stelle können unterschiedliche Menüs zugeordnet werden.
Menüs werden weiterhin für die Fachschalen benötigt.
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 kann z.B. bei der Hilfe nützlich sein. Standardmäßig wird nichts eingetragen, dann wird die Funktion im gleichen Fenster ausgeführt.
Tabelle "u_polygon2used_layer"
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
Speichert benutzerbezogen den letzten Zustand dieses Layers in Bezug auf die Sichtbarkeit.
- "0" = Layer ist ausgeschaltet
- "1" = Layer ist eingeschaltet
- "2" = Layer ist eingeschaltet, aber in der Legende nicht sichtbar, weil die Gruppe zugeklappt ist.
QueryStatus
Speichert benutzerbezogen den letzten Zustand dieses Layers in Bezug auf seine Abfragbarkeit.
- "0" = Layer ist nicht abfragbar geschaltet
- "1" = Layer ist abfragbar geschaltet
- "2" = Layer ist abfragbar geschaltet, aber in der Legende nicht sichtbar, weil die Gruppe zugeklappt ist.
logconsume
- "0" = Layer wird nicht geloggt.
- "1" = Layer wird innerhalb der Stelle für den bestimmten Nutzer geloggt. Z.B. für User Müller innerhalb der Gemeinde xy für den Layer Flurstücke.
Damit die Protokollierung erfolgt, muss entweder in der Tabelle stelle oder in der Tabelle layer oder in der Tabelle used_layer das Feld "logconsume" = "1" gesetzt sein.
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 "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. i 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.
Beispiel zur Einschränkung über den Gemarkungsschlüssel:
- für eine bestimmte Gemarkung - (gemkgschl = '132100')
- oder bei mehreren Gemarkungen - (gemkgschl = '132100' or gemkgschl = '132105')
- oder mit Platzhaltern - (gemkgschl = '1321%')
"gemkschl" ist der Spaltenname zu den Objekten, die in der PostgreSQL-Datenbank gehalten werden, und um dessen Wert die Anfrage gefiltert werden soll.
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.
logconsume
requires
Angabe um den Zusammenhang zum Anzeigen des Layers festzulegen. Beispiel für einen Layer "Gebäudepunkte":
([Gebäude] = 1)
D.h. der Layer "Gebäudepunkte" ist nur dann sichtbar, wenn auch der Layer "Gebäude" sichtbar ist. Hinweis: In der Legende bzw. Themenauswahl erscheint der Layername dann nicht mehr (im Beispiel also der Layer "Gebäudepunkte"), es werden nur noch seine Classes angezeigt.
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
Der Login-Name erscheint im Browserfenster als "Nutzer" unten rechts.
stelle_id
Hier wird die Stelle angegeben, der dieser User beim ersten Start von kvwmap zugeordnet sein soll.
Weitere Hilfe
Unter der Rubrik Foren in der Menüleiste links finden Sie weitere Hilfe. Unter anderem befindet sich dort ein Bug-Report, eine Liste mit HowTo und eine allgemeine Fragen-Liste zu kvwmap.
Viele Einträge sind von Nutzern selber gemacht worden. Scheuen Sie sich also nicht hier im Wiki auch zur Dokumentation von kvwmap beizutragen.