Suche
Die GBD WebSuite implementiert eine einheitliche Suchfunktionalität, die mit verschiedenen Arten von Raum- und Sachdaten arbeitet. Eine Suchanfrage an den Server enthält grundsätzlich drei Parameter:
| PARAMETER | BEDEUTUNG |
|---|---|
| keyword | ein Stichwort, nach dem gesucht werden soll |
| shape | eine Geometrie – falls vorhanden, ist die Suche räumlich auf diese Geometrie beschränkt |
| layers | eine Liste der Ebenen, auf denen die Suche durchgeführt werden soll (normalerweise die im Client sichtbaren bzw. selektierten Ebenen) |
Die von anderen GIS-Systemen bekannte „Identifizieren"-Funktion fällt in der GBD WebSuite ebenfalls unter den Begriff Suche – in diesem Fall ohne Stichwort und mit einer Punkt-Geometrie.
Wenn der Server eine Suchanfrage erhält, verbindet er sich mit den konfigurierten Suchanbietern (provider) und verwendet automatisch die für jede Quelle geeignete Methode: Für WMS-Quellen werden GetFeatureInfo-Anfragen gestellt, für Datenbankdaten wird eine SELECT-Abfrage durchgeführt usw. Die Ergebnisse aus verschiedenen Quellen werden konsolidiert, optional transformiert und formatiert und als Liste einheitlicher Features an den Client zurückgegeben.
Suchfunktion freischalten
Die Suchfunktionalität wird über die Aktion search freigeschaltet. Mit dem Parameter limit steuern Sie, wie viele Suchergebnisse der Server insgesamt zurückgibt (über alle Anbieter hinweg):
{
actions+ {
type search
limit 100
}
}
Suchanbieter werden entweder für das gesamte Projekt oder für individuelle Layer konfiguriert. Layer-Anbieter werden nur dann aktiviert, wenn die layers-Liste die entsprechende Layer-ID enthält.
Allgemeine Anbieteroptionen
Für jeden Suchanbieter stehen folgende allgemeine Optionen zur Verfügung:
| OPTION | BEDEUTUNG |
|---|---|
dataModel | Transformationsregel für Features |
defaultContext | räumliche Einschränkung der Suche, falls keine Geometrie vorhanden ist: die ganze Karte (map) oder die aktuelle Ansicht (view) |
templates | Formatierungsvorlagen für Features |
tolerance | räumliche Toleranz, entweder in Bildschirmpixeln (z. B. 10px) oder Karteneinheiten (z. B. 10m) |
withGeometry | wenn auf false gesetzt, werden räumliche Abfragen von diesem Anbieter nicht bearbeitet (reine Stichwortsuche) |
withKeyword | wenn auf false gesetzt, werden Abfragen mit Stichwort von diesem Anbieter nicht bearbeitet (rein räumliche Suche) |
Nominatim
Nominatim ist die Suchmaschine von OpenStreetMap und bietet eine Schnittstelle zur Adress- und Ortssuche auf Basis der OSM-Daten. Die GBD WebSuite unterstützt die Anbindung an einen Nominatim-Dienst direkt über den Suchanbieter nominatim.
Mit den Parametern country und language lassen sich die Suchergebnisse geografisch und sprachlich eingrenzen:
{
search.providers+ {
type nominatim
url "https://nominatim.openstreetmap.org"
country "de"
language "de"
}
}
Für den produktiven Einsatz empfiehlt sich eine eigene Nominatim-Instanz, da der öffentliche Dienst unter nominatim.openstreetmap.org Nutzungsbeschränkungen unterliegt.
Postgres
Der Postgres-Suchanbieter ermöglicht die direkte Suche in PostgreSQL/PostGIS-Tabellen. Neben der Datenbankverbindung (siehe PostgreSQL) wird mindestens die zu durchsuchende Tabelle (tableName) benötigt. Optional kann die Spalte für die Stichwortsuche (searchColumn) angegeben werden.
{
search.providers+ {
type postgres
db "meine_datenbank"
tableName "adressen"
searchColumn "bezeichnung"
geometryColumn "geom"
}
}
Wenn der Server eine Abfrage mit keyword und shape bearbeitet, wird ungefähr folgende SQL-Abfrage ausgeführt:
SELECT * FROM {table}
WHERE
{searchColumn} ILIKE %{keyword}%
AND ST_Intersects({geometryColumn}, {shape})
Das Stichwort wird dabei case-insensitiv mit beliebiger Platzierung gesucht; die Geometrie wird über Überschneidung geprüft. Fehlt searchColumn oder geometryColumn, entfällt die jeweilige Bedingung in der Abfrage.
WFS
Der WFS-Suchanbieter implementiert GetFeature-Anfragen für WFS-Quellen. Es muss die Service-URL angegeben werden. Optional kann die Suche auf bestimmte Layer (in WFS-Terminologie „Typen") eingeschränkt werden:
{
search.providers+ {
type wfs
url "https://example.com/wfs"
layers ["strassen", "gebaeude"]
}
}
WMS
Der WMS-Suchanbieter implementiert GetFeatureInfo-Anfragen für WMS-Quellen. Wie beim WFS muss die Service-URL angegeben werden; optional können die zu befragenden Suchlayer konfiguriert werden:
{
search.providers+ {
type wms
url "https://example.com/wms"
layers ["orthofotos", "flurstuecke"]
}
}