Grundkonzepte

In diesem Kapitel beschreiben wir kurz, auf welchen Grundkonzepten die Funktionalitäten der GBD WebSuite basieren.

Anfragen und URLs

Einmal gestartet, hört die GBD WebSuite auf Ports 80/443 und verarbeitet GET und POST Anfragen. Wie ein herkömmlicher Webserver kann die GBD WebSuite statische Inhalte wie HTML-Seiten oder Bilder bereitstellen, aber der Hauptzweck liegt darin, dynamische Kartenbilder und Daten bereitzustellen. Für dynamische Anfragen gibt es einen einzigen Endpunkt (url), nämlich den _ (Unterstrich). Alle Anfragen an diesen Endpunkt müssen den Befehl (cmd) Parameter enthalten. Zusätzlich müssen alle POST Anfragen im JSON-Format vorliegen.

Hier ein paar Beispiele von Anfragen, die die GBD WebSuite bearbeiten kann.

Eine statische GET-Anfrage:

http://example.com/images/smile.jpg

Eine dynamische GET-Anfrage (z. B. ein Kartenbild):

http://example.com/_?cmd=mapHttpGetBox&projectUid=london&layerUid=london.map.metro&width=100&height=200

Bei dynamischen GET-Anfragen unterstützt die GBD WebSuite eine alternative Schreibweise mit der die Parameter und Werte mit einem Slash / getrennt werden:

http://example.com/_/mapGetBox/projectUid/london/layerUid/london.map.metro/width/100/height/200

Eine dynamische POST-Anfrage (z.B. Suche):

{
    "cmd":"search",
    "params": {
        "projectUid": "london",
        "bbox": [10,20,30,40],
        "keyword": "queen"
    }
}

Aktionen

Anhand vom cmd Parameter entscheidet der Server welche Server Aktion die Bearbeitung der Anfrage übernimmt. Falls die Aktion existiert und richtig konfiguriert ist, wird die Anfrage zu dieser Aktion weitergeleitet. Die Aktion bearbeitet die Anfrage und stellt eine Antwort bereit, die abhängig von der Natur der Anfrage, in HTML, JSON oder PNG Format vorliegt. Intern sind die Aktionen die Python-Klassen, die für jeden Befehl (cmd) über eine Methode verfügen. Im obigen Beispiel (cmd=mapHttpGetBox) ist map die Aktion und httpGetBox die Methode, die diese Anfrage bearbeitet.

Server Aktionen sind hier beschrieben.

Webseiten und Projekte

Auf der obersten Ebene arbeitet die GBD WebSuite mit zwei Arten von Entitäten: Projekte und Webseiten. Ein Projekt ist in etwa eine Karte und eine Sammlung von Einstellungen, die sich auf diese spezielle Karte beziehen. Eine Site ist ein Domain-Name, der an Autorisierungs- und Routing-Regeln gebunden ist.

In dieser URL

http://example.com/_?cmd=mapHttpGetBox&projectUid=london&layerUid=london.map.metro

ist london ein Projekt, london.map.metro ist eine für dieses Projekt konfigurierte Ebene, während der Domainname example.com aus der Webseiten-Konfiguration übernommen wird.

Webseiten und Projekte sind orthogonale Konzepte. Sie können dasselbe Projekt unter mehreren Webseiten ausführen. Wenn Sie z. B. example.com ins other-example.com ändern würden, würde dies keine Änderungen im Projekt london erfordern.

Client

Obwohl die GBD WebSuite als gewöhnlicher Webserver arbeiten kann, ist ihr Hauptzweck, zusammen mit einem "reichen" Javascript-Client verwendet zu werden, der in der Lage ist, dynamische Web-Maps wie OpenLayers of Leaflet anzuzeigen. Wir bieten einen solchen Client als Teil der GBD WebSuite an und stellen einige Optionen in der Serverkonfiguration zur Verfügung, um unseren Client gezielt zu unterstützen.

Mehr dazu in Client

Statische Dokumente und Assets

Statische Web-Dokumente sind Dateien (z.B. HTML oder PDF) die keine spezielle Bearbeitung auf dem Server erfordern und jedem Nutzer unverändert zur Verfügung stehen. Bei einer Webseite kann ein "public" Ordner mit statischen Dokumenten konfiguriert werden, wobei die URLs den Dateipfaden entsprechen. Zum Beispiel, wenn Ihr "public"-Ordner als data/web konfiguriert wird, und Sie eine PDF Datei unter data/web/documents/file.pdf abspeichern, kann diese Datei unter http://example.com/documents/file.pdf heruntergeladen werden.

Ein Asset ist dagegen ein Dokument, das dynamisch erzeugt wird, abhängig vom Kontext (eine Vorlage) oder nur berechtigten Nutzern zur Verfügung steht. Assets werden in einem speziellen Ordner platziert, der sowohl für eine Webseite als auch Projekt-abhängig konfiguriert werden kann.

Mehr dazu in Applikation, Vorlagen und Projekte.

Autorisierung

GWS enthält eine Rollen-Basierte Autorisierung. Bei allen konfigurierbaren Systemobjekte kann mittels Zugriffsblöcken (access) spezifiziert werden, welche Rollen den Zugriff zu diesem Objekt haben. Falls es für die gegebene Rolle keine explizite Anweisung gibt, wird das übergeordnete Objekte gecheckt. Für das Root Objekt (application) werden per default alle Zugriffe verweigert.

Individuelle Zugangsdaten (Nutzername, Passwort) werden zu Rollen mittels Autorisierungsanbieter (provider) verknüpft. Die Aufgabe eines Anbieters ist, die Zugangsdaten gegen der angegebenen Datenquelle zu prüfen. Aktuell werden folgende Anbieter unterstützt:

  • LDAP/ActiveDirectory
  • file-basiert
  • Datenbank (Postgres) basiert

Autorisierungsmethoden (method) geben an, wie die Zugangsdaten dem System übergeben werden. Aktuell sind diese Methoden unterstützt:

  • web: Übergabe mittels eines Web-Formulars (Login-Form)
  • basic: Übergabe mittels einer HTTP-Basic Autorisierung

In der Zukunft sind auch OAuth, Two-Factor sowie Windows single sign-on (SSO) geplant.

Mehr dazu in Autorisierung.

Karten und Layer

Jedes GBD WebSuite Projekt enthält eine Karte (map), die eine Sammlung von Layern (layers) ist. Es gibt verschiedene Arten von Ebenen (z. B. "Qgis" oder "WMS"). Sie können Zugriffsrechte, Ansichtseigenschaften (wie ein Extent) und die Metadaten für die gesamte Karte und für jede Ebene individuell konfigurieren. Die meisten Ebenen sind auch an Quellen gebunden, die dem Server mitteilen, woher die Geodaten stammen. Eine Layer-Konfiguration enthält typischerweise Anweisungen für den Server, wie die Quelldaten transformiert werden. In der aktuellen Version unterstützt GWS folgende Geodaten-Quellen:

  • PostGIS Tabellen
  • WMS/WMTS und WFS Dienste
  • Kacheldienste wie Open Street Map
  • GeoJSON

In der Zukunft sind auch Rasterquellen, Shape und Geopackage Daten geplant.

Mehr dazu in Karten und Layer.

Suche und Features

In der GBD WebSuite sind die Funktionen wie Suche nach dem Schlüsselwort oder auch räumliche Suche durch Klicken oder Ziehen einheitlich Suche (search) genannt. Es können diverse Such-Quellen (provider) konfiguriert werden.

Ein Feature ist ein Objekt das sowohl Sachdaten in Form von Attributen, als auch Geoinformation in Form einer Geometrie enthält. Die Suchergebnisse sind, unabhängig von der Art der Suche, als eine Liste von Features repräsentiert.

GWS bietet Werkzeuge um die Features aus diversen Quellen im Client oder in einem OWS Dienst einheitlich darzustellen. Dazu gehören Datenmodellen (dataModel), die Attributen transformieren und Vorlagen (template), die aus Attributen Präsentationsobjekte, wie HTML Snippets, erstellen.

Mehr dazu in Suche und Features.

Arbeiten mit QGIS

Die GBD WebSuite bietet dedizierten Support für QGIS, ein kostenloses und quelloffenes geografisches Informationssystem. Die Unterstützung ist optional und kann abgeschaltet werden, wenn Sie QGIS nicht verwenden.

QGIS Projekte können in den GWS Karten reibungslos integriert werden. Ein QGIS Projekt wird als ein Layer in der GWS Karte dargestellt und kann mit anderen Layer-Typen frei kombiniert werden.

Für Drucken unterstützt GWS auch die QGIS Druckvorlagen ("Layouts"), die auch für nicht-QGIS Karten verwendet werden können.

Mehr dazu im QGIS-Plugin.