Template:WFS Konfiguration

From MapbenderWiki

(Redirected from WFS Konfiguration)
Jump to: navigation, search

Contents

Vorbereitungen

  • Tabelle (Datenbank) / Layer müssen vom Typ POINT, MULTILINESTRING oder MULTIPOLYGON sein (derzeitige Vorgaben für Mapbender)
  • In der Tabelle muss ein Feld Typ serial (Name egal) mit Primärschlüssel (pk) vorhanden sein (Stand Geoserver 1.5.3). Dieses Feld wird in der Konfiguration des Geoservers und des Mapbenders nacher nicht mehr angezeigt (ist aber notwendig für die fid des gml)
  • Spaltennamen dürfen nicht einen Tabellennamen enthalten
  • Administration aufrufen (im Geoserver)
  • Datastore anlegen (im Geoserver)
  • Featuretype anlegen (im Geoserver)
  • Konfiguration des WFS im Mapbender (siehe detaillierte Beschreibung weiter unten)

WFS Konfiguration

Das Modul zum Laden eines WFS ist in den Administrationsoberflächen 'admin1' und 'admin_xx_services' integriert. Zu beachten ist, dass die benutzerbezogene Verwaltung der WFS-Dienste noch nicht vollständig implementiert ist. Daher sollte dieses Modul nur dem Hauptadministrator zur Verfügung gestellt werden.

WFS Laden

WFS in eine GUI laden

Die Konfiguration des WFS bzw. der Such-Module (Gazetteer) erfolgt über die entsprechenden Module in der Administration des Mapbenders. Zunächst wird ein WFS mit dem Modul 'LOAD WFS' geladen und damit dem System bekannt gemacht. Hier ist eine GUI auszuwählen und anschließend der Pfad oder die URL zu einem WFS-Capabilities-Dokument anzugeben. Nach erfolgreichem Laden der WFS-Capabilities werden die Daten des WFS zur Bestätigung in der Mapbender-Administrationsoberfläche angezeigt. In einem weiteren Schritt muss der WFS konfiguriert werden, um von den verschiedenen Oberflächenmodulen genutzt werden zu können.

Beispiel-Aufruf

http://wms1.ccgis.de/geoserver/wfs?REQUEST=getCapabilities&VERSION=1.0.0&SERVICE=WFS

WFS Konfigurieren

Mit dem Modul 'WFS CONF' wird ein WFS für die weiteren Module konfiguriert. Zunächst wird in der Auswahlliste ein WFS zur Konfiguration ausgewählt. Daraufhin werden alle Layerebenen, die im Geoserver als FeatureType definiert wurden, zur Auswahl angeboten. Nach der Aktivierung eines FeatureTypes können folgende Einstellungen vorgenommen werden:

  • Abstract: Ein frei zu vergebender Name, der der weiteren Identifikation eines konfigurierten WFS dient.
  • Label: Die Überschrift eines Suchdialoges
  • Label_id: Eine eindeutige ID für die Klassenangabe der Stylesheets im Feld 'Style' (s.u)
  • Button: Beschriftung eines Buttons zum Abschicken der WFS-Anfrage
  • Button_id: Eine eindeutige ID für die Klassenangabe der Stylesheets im Feld 'Style' (s.u)
  • Style: Definition der Stylesheets (Design)
  • Buffer: Angabe zum Buffer beim Zoomen auf ein Objekt (in Karteneinheiten)
  • ResultStyle: Angaben zum Layout (Stylesheet) der Ergebnisanzeige (Klassen even/uneven)
  • WZ-Graphics: Auswahl, ob ein clientseitiges Darstellen (im Browser) der Geometrien erfolgen soll
  • Einstellungen zu den einzelnen Attributen:
Konfiguration Attribute
    • geom: Auswahl der Geometriespalte
    • gid: Auswahl der eindeutigen Id (für Transanktionen)
    • search: Attribut soll für die alphanumerische Suche (Textfeld) angeboten werden
    • pos: Position des Textfeldes. Wichtig auch für die Reihenfolge durch Ansteuern über den Tabulator (Barrierefreiheit)
    • minimum_input: Definition einer Mindestanzahl an einzugebenden Zeichen (ab Mapbender >= 2.6)
    • style_id: Angaben zur Stylesheet-Klasse, die im Feld 'Style' vorgenommen werden kann (Layout)
    • upper: Spalte liegt in Großschreibung vor, so dass der Client Eingaben ebenfalls in Großbuchstaben wandelt und somit eine caseinsensitive (ohne Berücksichtigung der Groß-/Kleinschreibung) Suche erfolgen kann.
    • label: Beschriftung des Textfeldes
    • label_id: Angaben zur Stylesheet-Klasse, die im Feld 'Style' vorgenommen werden kann (Layout)
    • show: Werte der Attributspalte werden in der Ergebnisliste angezeigt
    • position: Position der Anzeige in der Ergebnisliste (muss bei Anzeige ungleich 0 sein)
    • show_detail: Werte dieses Attributs werden in einem zusätzlichen Detailfenster angezeigt, falls der gazetteerWFS entsprechend konfiguriert ist (ab Mapbender >= 2.6)
    • detail_position: Position der Anzeige im Detailfenster (muss bei Anzeige ungleich 0 sein). (ab Mapbender >= 2.6)
    • mandatory: Pflichfeld beim Speichern und Updaten
    • html:
      1. Das html-Textfeld kann zur Eingabe durch eine Auswahlliste ersetzt. Der Value des jeweiligen Listeneintrags wird als Wert zum Speichern übernommen. Name und Id der Auswahlliste müssen dem Namen der Attributspalte entsprechen.
      2. Das html-Textfeld kann zusätzlich noch zur Eingabe durch eine Checkbox genutzt werden. Name und Id der Checkbox müssen dem Namen der Attributspalte (hier im Beispiel 'altlastenkataster') entsprechen. Wichtig dabei ist, dass nur einfache Hochkommata genutzt werden. Ein Eintrag kann dann wie folgt aussehen:
      3. Erzeugen von Links in der Detailausgabe:
        • (definieren Sie einen Link im Feld html. Enthält der Rückgabewert einen Link, so wird dieser im Detailfenster als Link angezeigt)
    • html > 2.7.1:
      • Ab 2.7.2 wird das Textfeld durch eine Dropdown Box ersetzt. Hier werden Templates mit einzelnen Modulen zur Auswahl angeboten
        HTML Templates
        1. Textarea
        2. Datepicker
          Datepicker
          • Änderung des Datumsformats:
            <input data='{\"dateFormat\": \"yy-mm-dd\"}' type='text' id='myfield' class='hasdatepicker' />
        3. Selectbox
        4. Checkbox
        5. Upload
    • auth: Beschränkter Zugang auf Features für bestimmte Benutzer oder Gruppen. Das Featuretype element, dass die IDs des Besitzers beinhaltet, muss in der auth-Spalte z.B. $_SESSION["mb_user_id"] enthalten (ab Mapbender >= 2.5)
    • helptext: Sind hier Informationen eingestellt, so wird an dem jeweiligen Feld im Formular ein Hilfesymbol angezeigt. Wenn man auf dieses Symbol klickt, geht im Formular dann der Hilfetext auf. Links werden unterstützt.
    • operator: Definition des Filteroperators für diese Spalte (ab Mapbender >= 2.6)
    • category: Hier lässt sich eine Kategorie für das jeweilige Attribut auswählen. Die Attribute gleicher Kategorien werden im Formular auf einzelnen Seiten angezeigt. Die Reiter des Formulars enthalten dabei den Text aus dem category Feld als Überschrift. Die Überschriften werden alphabetisch sortiert. Will man eine spezielle Reihenfolge vorgeben, bietet es sich an eine Ziffer vor die Kategorie zu schreiben
      Categories

Wichtig für den WFS-T ist die Angabe eines Abstracts sowie die Einstellung der Geometriespalte durch Aktivierung des Radiobuttons. Auch eine eindeutige GID sollte angegeben werden. Steht dafür z.B. keine OID Spalte zur Verfügung, kann hierfür auch die Geometriespalte genutzt werden. Abschließend wird die Konfiguration über die Schaltfläche SAVE gespeichert.

Spätere Änderungen an der Konfiguration sind über den Link editWFSConfiguration möglich. Es erscheint eine Auswahlliste mit den vorhandenen WFS. Nach der Markierung eines Punktes erscheint die Konfigurationsoberfläche, wo Änderungen vorgenommen werden können.

Verbindung zu einer Gui

Die Verbindung eines geladenen WFS-T zu einer Gui erfolgt über den Menüpunkt EDIT GUI-WMS. Nach Auswahl der entsprechenden Gui und des WMS, ist in der tabellarischen Übersicht für jeden Layer eine Schaltfläche setWFS vorhanden. Über diese Schaltfläche wird die Verbindung zu einem definierten FeatureType des Geoserver hergestellt. Durch den vorher vergebenen Abstract ist der entsprechende FeatureType erkennbar, kann markiert und abgespeichert werden. Anschließend wird auf der Schaltfläche setWFS die ID-Kennung des jeweiligen FeatureTypes sichtbar, z.B. WFS: 10. Wurde als Basis für die Gui die GUI Digitize gewählt, ist der WFS-T nun funktionsfähig.

Hinweis

Die WFS-Auswahl wird über die Abfragbarkeit eines Layers gehandelt. Daher müssen die Ebenen, die mit einem WFS gekoppelt werden, abfragbar sein (queryable=1) (s. auch WFS - WMS Kopplung).

Konfiguration einer GUI zuweisen

Damit die oben beschriebene Konfiguration wirksam wird, muss abschließend diese der gewünschten Gui zugewiesen werden. Dies geschieht über das Modul WFS_GUI.

Wählen Sie zuerst den entsprechenden WFS aus der Liste aus. In der Liste WFS Configuration List erscheint/erscheinen der/die konfigurierten WFS. Wählen Sie nun in der Liste der GUIs, diejenige GUI aus, der Sie die WFS Konfiguration zuordnen möchten. Durch die Pfeiltasten können Sie anschließend die entsprechende Konfiguration aus der WFS Konfiguration Liste in das Feld GUI Konfiguration Liste verschieben. Analog können Sie eine WFS Konfiguration durch die Pfeiltaste nach links aus einer GUI entfernen.


Auswahlliste aktualisieren

Eine im html-Textfeld eingefügte Auswahlliste kann folgendermaßen aktualisiert werden:


Einen View erzeugen:

Create view grunddaten.qry_strassen as
Select  '<option value =\|| strschl ||'\'>'|| name ||'</option>' as bez
from grunddaten.strassen order by name;


Funktion in PostGIS schreiben:

--Drop function grunddaten.get_options_strassen();
CREATE FUNCTION grunddaten.get_options_strassen() RETURNS TEXT AS $$
DECLARE
  val TEXT;
  a grunddaten.qry_strassen %ROWTYPE; 
BEGIN
val := '<select id=\'strschl\' name=\'strschl\'><option value =\'\'>...</option>';
FOR a IN Select  '<option value =\|| strschl ||'\'>'|| name ||'</option>' as bez from grunddaten.strassen order by name
LOOP
  IF val =  then
     val := a.bez;
  ELSE
     val := val || a.bez;
  END IF;
END LOOP;
val := val || '</select>';
return val;
END;
$$ LANGUAGE plpgsql;


Trigger erzeugen, um ein Update im Mapbender vorzunehmen:

  • Funktion für den Trigger:
drop function update_mapbender_db_wfs_conf_element()cascade;
CREATE OR REPLACE FUNCTION update_mapbender_db_wfs_conf_element_fuer_strassen()
 RETURNS "trigger" AS
 $BODY$
 DECLARE
   val TEXT;
   c TEXT;
   execsql TEXT;
   updatesql TEXT;
    BEGIN   
Select replace(grunddaten.get_options_strassen(),'\,'$') INTO c;
       val := c;
       execsql:= 'Update wfs_conf_element set f_form_element_html =  \ || val || '\;
       execsql:= execsql || ' where wfs_conf_element_id = 1234567;'; 
SELECT dblink_exec('dbname=mapbender options=\'-c client_encoding=latin1\,execsql) INTO c;
updatesql:= 'Update wfs_conf_element set f_form_element_html = replace(f_form_element_html,\'$\',\'\\\'\') where wfs_conf_element_id = 1234567;';
SELECT dblink_exec('dbname=mapbender options=\'-c client_encoding=latin1\,updatesql) INTO c;
-- RAISE EXCEPTION 'val: % val',val;
-- RAISE EXCEPTION 'ex: % execsql',execsql;
Return NEW;           
   END;
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;
  • Trigger erzeugen:
CREATE TRIGGER update_mapbender_from_strassen AFTER INSERT OR UPDATE OR DELETE ON grunddaten.strassen
   FOR EACH ROW EXECUTE PROCEDURE update_mapbender_db_wfs_conf_element_fuer_strassen();
  • Testen:
Update grunddaten.strassen set name = 'Teststrasse' WHERE a_id = 1234567;
  • Inhalt im Mapbender ansehen:
Select * from dblink('dbname=mapbender port=5432 host=myserver.com user=postgres password=xxx',
'Select wfs_conf_element_id,f_form_element_html  from wfs_conf_element where wfs_conf_element_id = 1234567 
as a(wfs_conf_element_id integer,f_form_element_html text);
Views
Personal tools