Hinzufügen von Parametern:
Parameter werden im SQL mit @ hinzugefügt.
Hinzufügen von Filtern:
Filter werden im SQL mit $ hinzugefügt.
Werte des SQL-Statementes können durch vom Anwender abzufragende Parameter ersetzt werden. Dazu muss ein neuer Parameter definiert werden. Dessen Schlüssel kann dann wiederum im SQL-Statement an Stelle des konkreten Wertes verwendet werden und muss mit einem vorangestellten @ kenntlich gemacht werden.
Beschreibung: Beschreibung für den Parameter
Standard: Definieren Sie einen Standardwert, mit welchem die Abfrage standardmäßig belegt ist (der Parameter ist für den Nutzer beim Start der Abfrage schon vorbelegt.)
Beispiel, wenn ein Parameter mit dem Schlüssel 'puffer' definiert wurde:
Select ... ST_BUFFER(haltestellen.gdo_geometry, @puffer) ...
---------------
Beispiel: Betroffenheitsrecherche: Liegt das ausgewählte Flurstück im Gewässerrandstreifen und/oder in einem Überschwemmungsgebiet und/oder Trinkwasserschutzgebiet?
Definition eines Parameters für den Abstand zum Flurstück:
Umsetzung in der Abfrage:
st_buffer(flst.geom, @MAX_DIST)
Anforderung: Auflistung der Gewässer in einer Gemeinde. Die Gemeinde kann durch eine Benutzereingabe bestimmt werden.
Lösung: für die Gemeinde wird ein Parameter definiert.
Titel: Geben Sie einen Titel für das Eingabefeld des Parameters an.
Schlüssel: Geben Sie eine Bezeichnung des Schlüssels an, welcher in der Abfrage verwendet wird.
Datentyp: Geben Sie den Datentyp des abzufragendenen Datenfeldes an.
Beschreibung: Die Beschreibung erscheint im Tooltip des Parametereingabefeldes. Formulieren Sie hier einen entsprechenden Text. Diese Angabe ist optional.
Standard: Hier können Sie einen Standardwert festlegen, mit welchem das Parameterfeld initialisiert werden soll. Diese Angabe ist optional.
Text der Abfrage:
select gewaesser.gewkz , gewaesser.name , gewaesser.laenge as gesamtlaenge
from L276 as gewaesser
inner join (select * from L416 as gemeinden where gemeinden.kreis='Demokreis' and replace(ortsname, ', Stadt', '')=@gemeinde) gemeinden
on match(gemeinden.shapeGeometry, gewaesser.geom) and st_intersects(gemeinden.shapeGeometry, gewaesser.geom)
order by gewaesser.laenge desc;
Erläuterungen zur Abfrage:
L276: Source ID der Ebene, welche abgefragt werden soll.(im Beispiel die Gewässerebene - Layertyp: PostgreSQL - Geometrien und das Geometriefeld heißt geom.
L416: Source ID der Ebene zur Verschneidung.(im Beispiel die Gemeinden - Layertyp: Shape und das Geometriefeld heißt shapeGeometry).
match(gemeinden.shapeGeometry, gewaesser.geom): Verschneidung der Geometrien => Betroffenheit prüfen.
@gemeinde:Bezugnahme auf definierten Parameter
Parameterfeld im Abfragefenster:
Filterausdrücke können durch vom Anwender abzufragende Bedingungen ersetzt werden. Dazu muss ein entsprechender Filter definiert werden. Dessen Parameter haben folgende Bedeutung:
Schlüssel - Name des Filters, welcher dann im SQL-Statement als Platzhalter gekennzeichnet mit einem vorangestellten $ verwendet werden kann
Spalte - Ergebnisspalte des SQL-Statements, welche gefiltert werden soll
Optional - Wenn gesetzt, kann die Abfrage auch ohne Angabe eines Filterwertes ausgeführt werden
Auswahl-SQL - Statement zur Generierung einer Nachschlageliste. Die erste Ergebnisspalte wird dabei als Wertespalte interpretiert.
Hinweis: Eine mit OR verknüpfte Abfrage mehrerer Werte kann über den IN-Operator umgesetzt werden.
Beschreibung: Beschreibung für den Filter
Standard: Definieren Sie einen Standardwert, mit welchem die Abfrage standardmäßig belegt ist (der Filter ist für den Nutzer beim Start der Abfrage schon vorbelegt.)
Beispiel für die Ersetzung im Statement:
... WHERE $id_filter AND name LIKE '%wasser%'
Beispiel für eine Abfrage mit Filterdefinition:
Anforderung: Anzeige aller Einleitstellen in einer Gemeinde einer spez. Anlagenart bzw. alle Anlagen.
Die Gemeinde sowie die Anlagenart soll durch Benutzereingaben gewählt werden.
Lösung: Für die Gemeinde und die Anlagenart wird jeweils ein Filter definiert.
Definition Filter für die Gemeinde:
Auswahl - Sql: Select distinct gemeinde from L416 order by gemeinde;
Durch Aktivieren der Angabe Optional, ist es möglich, die Abfrage auch ohne Einschränkung auf eine Gemeinde auszuführen.
Definition Filter Anlagenart:
Auswahl - Sql: select distinct anlagenart from L493 order by anlagenart;
Durch Aktivieren der Angabe Optional, ist es möglich, die Abfrage auch ohne Einschränkung auf eine Anlagenart auszuführen.
Text der Abfrage:
select einleitstellen.anlagenart as "Anlagenart", einleitstellen.anlagentyp as "Anlagentyp", einleitstellen.pzlnodetitle as "Bezeichnung", einleitstellen.gewaessername as "Gewässer", einleitstellen.geom as "Punkt", gemeinden.ortsname as "Gemeinde"
from L493 as einleitstellen
inner join (select * from L416 as gemeinden where $GEMEINDE) gemeinden
on match(gemeinden.shapeGeometry, einleitstellen.geom) and st_intersects(gemeinden.shapeGeometry, einleitstellen.geom)
where $ART
order by einleitstellen.anlagenart asc, einleitstellen.pzlnodetitle asc;
Erläuterung der Abfrage:
L493: Source ID der Ebene, welche abgefragt werden soll.(im Beispiel die Ebene Einleitstellen- Layertyp: PostgreSQL - Geometrien und das Geometriefeld heißt geom.
L416: Source ID der Ebene zur Verschneidung.(im Beispiel die Gemeinden - Layertyp: Shape und das Geometriefeld heißt shapeGeometry).
st_intersects(gemeinden.shapeGeometry, einleitstellen.geom)
match(gemeinden.shapeGeometry, einleitstellen.geom): Verschneidung der Geometrien => Betroffenheit prüfen.
$gemeinde: Bezugnahme auf definierten Filter gemeinde (Beim Ausführen der Abfrage wird durch das System die Angabe durch einen aus der Filterdefinition generierten Filterausdruck ersetzt. (z.B. gemeinden.ortsname ='Bautzen') ,
$Art: Bezugnahme auf definierten Filter gemeinde (Beim Ausführen der Abfrage wird durch das System die Angabe durch einen aus der Filterdefinition generierten Filterausdruck ersetzt. (z.B. einleitstellen.anlagenart ='Anlage am Gewässer') ,
Definierte Filter im Abfragefenster:
Die Abfrage von WFS Diensten ist mit GeoSQL auch möglich.
Beachten Sie, dass bei WFS Diensten mit mehreren Layern nur ein Layer über die Eigenschaft wfsLayers eingerichtet ist.
Beispiel: Abfrage eines WFS-Dienstes
Anforderung:
Anzeige aller Querbauwerke einer Gemeinde. Eine Einschränkung auf die Gemeinde und Bauwerksart muss ermöglicht werden.
Nutzen Sie zur Auswertung den WFS-Dienst der Fließgewässerstrukturkartierung 2009 vom LfULG
Layer: wasser_strukturguete_utm:Querbauwerke
Lösung: Definition Gemeinde und Bauwerksart als Filter
Abfragetext:
select Querbauwerke.[WEHR-ID__aus_WEHR-Datenbank_] as "Wehr_ID", Querbauwerke.Querbauwerksart_Strukturkartierung as "Bauwerksart",Querbauwerke.Gewaesserkennzahl as "GewKz",
Querbauwerke.gewaessername as "Gewässername", Querbauwerke.[Absturzhoehe__cm_] as "[Absturzhöhe in cm]", Querbauwerke.Hochwert as "Hochwert", Querbauwerke.Rechtswert as "Rechtswert", Querbauwerke.shape as "Punkt", gemeinden.ortsname as "Gemeinde"
from "L497.Querbauwerke" as Querbauwerke
inner join (select * from L416 as gemeinden where gemeinden.kreis='Bautzen' and $GEMEINDE) gemeinden
on match(Querbauwerke.shape,gemeinden.shapeGeometry) and st_intersects(Querbauwerke.shape,gemeinden.shapeGeometry)
where $ART
order by Querbauwerke.gewaessername,Querbauwerke.Querbauwerksart_Strukturkartierung asc;
Erläuterung der Abfrage:
"L497.Querbauwerke": Zugriff auf die cardo-Ebene mit SoureId: L497. Layertype OGC - WFS Dienst ausgewählter WFSLayer - Querbauwerke;
- Syntax für den Zugriff: "SoureID.WFSLayername"
(Beachten Sie die Anführungszeichen!)
L416: Zugriff aus cardo Ebene gemeinden mit der SoureID: 416.
match(Querbauwerke.shape,gemeinden.shapeGeometry)
st_intersects(Querbauwerke.shape,gemeinden.shapeGeometry): Verschneidung der WFS-Ebene mit den Gemeinden. Das Geometriefeld der Ebene L497 (WFS-Dienst) heißt "shape" und das Geometriefeld der Ebene L416 heißt "shapeGeometry"
$Gemeinde: Zugriff auf definierten Filter "Gemeinde" - Schlüssel: "Gemeinde"
$Art: Zugriff auf definierten Filter "Bauwerksart" - Schlüssel: "Art"