Betroffenheitsrecherche

Die Anwendung erstellt für eine ausgewählte Geometrie eine HTML-basierte Anzeige von verschiedenen Sachdaten, welche mittels GeoSql-Abfragen konfiguriert werden können.

Konfiguration

Eine Abfrage besteht aus:

  • Titel
  • Abfragestring
  • Keywords

Der Titel wird im Ergebnis als Überschrift der jeweiligen Abfrageergebnisse dargestellt.

In "Keywords", ein Typ für die Abfrage, können kommagetrennt mehrere Werte eingegeben werden. Wenn ein "Feature" mit Geometrie als Quelle für die Abfragen verwendet wird, kann dort nach einer Eigenschaft $queryKeyFilter geschaut. Der dort evtl. vorhandene Wert wird dann verwendet, um nur die Abfragen auszuführen, die diesen Key haben.

Wird kein Titel eingegeben, so erscheint später bei der Auswertung im Ergebnis der Hinweis "Abfrage n (ohne Titel)" wobei n der Index der Abfrage (beginnend bei 1) bezogen auf die Gesamtanzahl darstellt.

Bei dem GeoSql-String ist darauf zu achten, dass ein Platzhalter '{0}' für die auszuwertende Geometrie eingesetzt wird.

Über das Feld Abfragen pro Block lässt sich der komplette Vorgang staffeln, damit der Server nicht mit zu vielen parallelen Abfragen belastet wird, und der Nutzer schon Teilergebnisse sehen kann, wenngleich noch nicht alle Abfragen beendet wurden.

Negative Einträge sowie 0 und Werte größer der Anzahl der Abfragen, bewirken das gleichzeitige Ausführen aller Abfragen.

Die Anzahl der möglichen Abfragen ist nicht begrenzt.

Beim Abspeichern der Konfiguration werden alle angelegten Abfragen auf Vollständigkeit geprüft. Eine zusätzliche Tiefenprüfung ist vor dem Speichern anwendbar. Dabei werden die Abfragen real ausgeführt ohne jedoch die Ergebnisdaten zu verwerten. Die Anwahl der Tiefenprüfung setzt sich nach erfolgreichem Speichern wieder zurück.

Konfiguration

Die Anwendung hat keinerlei Limitierungen, was die Anzahl der Ergebnisse betrifft. Etwaige Begrenzungen der Ausgaben sollten demnach direkt im SQL-String eingebunden werden (bspw. LIMIT 100). Ebenso kann es dazu kommen, dass durch die Nutzung verschiedener SQL-Funktionen (bspw. AVG(), SUM() etc.) Null-Ergebnisse geliefert werden welche einem Datensatz entsprechen. Dieser wird auch als solcher angezeigt (mit einem Minuszeichen als Wert).

Um dies zu vermeiden, und solche Ergebnisse nicht anzuzeigen, können entsprechende Statements in die SQL-Abfrage eingebaut werden:

Ein Nulldatenergebnis:

Nulldatenergebnis

lässt sich vermeiden, mit einer geschachtelten Abfrage:

Select * from
(
    Select AVG(verbr_gesamt) as [Gesamt], AVG(verbr_gewerbe) as [Gewerbe], AVG(verbr_haushalt) as [Haushalte]
    from L186
    where
    geom match '{0}' and ST_Intersects(geom,'{0}')
)
where Not [Gesamt] is null

Workflow

Über einen WellKnownType kann die Anwendung im Cardo4 aufgerufen werden. An Datensätzen, welche Geometrien beinhalten, ist die Anwendung dann im Kontextmenü aufgeführt.

Wkt Auswahl001

Die Anwendung kann auch allein über den Cardo-Button gestartet werden. Um eine Geometrie für die Abfragen zu erhalten, muss hierbei über den Geometrie-Editor eine Geometrie gezeichnet werden.

Betroffenheit im cardo Menue

Aufbau des User Interface

Das User Interface besteht aus drei Abschnitten.

  • Im oberen Bereich ist ein Geometrie-Editor, wie aus der Sketch Anwendung bekannt. Hiermit können Geometrien in die Karte gezeichnet und als Abfragebasis genutzt werden. Wurde die Anwendung mit Hilfe einer vorhandenen Geometrie über ein Kontextmenü gestartet, wird diese Geometrie in den Editor geladen. Diese lässt sich dann ebenfalls auf der Karte anzeigen und gegebenenfalls verändern.

  • Unter dem Geometrie-Editor befindet sich eine Toolbar mit zwei Buttons (nur einer ist sichtbar)

    • Abfragen starten
      • zum Starten der Abfragen auf die aktuelle Geometrie (nur interessant bei Geometrien welche manuell über den Geometrie-Editor erstellt wurden)
    • Abfragen abbrechen
      • zum Abbrechen laufender Abfragen (die Abfragen laufen synchron - beim Abbruch wird die aktuelle Abfrage noch beendet)
  • Unterhalb der Bedienelemente werden die Ergebnisse der Abfragen tabellarisch dargestellt.

    • eine Ergebnistabelle besitzt auf der rechten Seite entweder ein Icon zum Aus- (Compress Button) oder zum Einblenden (Compress Button)der Ergebnisse:

Je nachdem wie (WellKnownType oder per Geometrie-Editor) eine Abfrage gestartet wurde, wird zusätzlich über den Ergebnissen noch ein Informationstext zur Abfrage dargestellt (Recherche für [Informationen abhängig von den verfügbaren Daten])

Ui Aufbau

Erfassung anhand des Kontextmenüs der Karte

Die Anzeige der Ergebnisse erfolgt HTML-formatiert. Im ersten Beispiel wurde die Betroffenheitsrecherche über das Kontextmenü beim Klick auf die Kartenebene geladen.

Ergebnisanzeige02

Erfassung anhand des Geometrie-Editors

In diesem Beispiel wurde mit einer eigenen Geometrie über den Editor eine Recherche gestartet.

Ergebnisanzeige01

Beispiele für die Datenerstellung

Im Folgenden werden Ausgaben mit den zugehörigen Abfragen dargestellt. Es wurde der Übersicht halber immer die selbe Datenbasis verwendet.

Einfache Abfrage mit ausgewählten Spalten

Select verbr_gesamt as [Gesamt], verbr_gewerbe as [Gewerbe], verbr_haushalt as [Haushalte]
from L186
where
geom match '{0}' and ST_Intersects(geom,'{0}')

Beispielergebnis01

Einfache Abfrage mit ausgewählten Spalten und Durchschnittswerten

Select AVG(verbr_gesamt) as [Gesamt], AVG(verbr_gewerbe) as [Gewerbe], AVG(verbr_haushalt) as [Haushalte]
from L186
where
geom match '{0}' and ST_Intersects(geom,'{0}')

Beispielergebnis02

Abfrage mit ausgewählten Spalten und Summen

Select SUM(verbr_gesamt) as [Gesamt], SUM(verbr_gewerbe) as [Gewerbe], SUM(verbr_haushalt) as [Haushalte]
from L186
where
geom match '{0}' and ST_Intersects(geom,'{0}')

Beispielergebnis03

Abfrage mit ausgewählten Spalten und den Top 3 im Gewerbeverbrauch und absteigender Sortierung

Select verbr_gesamt as [Gesamt], verbr_gewerbe as [Gewerbe], verbr_haushalt as [Haushalte]
from L186
where
geom match '{0}' and ST_Intersects(geom,'{0}')
order by Gewerbe desc
Limit 3;

Beispielergebnis04

Abfrage mit ausgewählten Spalten wobei die Gewerbespalte größer 60 betragen muss

Select verbr_gesamt as [Gesamt], verbr_gewerbe as [Gewerbe], verbr_haushalt as [Haushalte]
from L186
where
geom match '{0}' and ST_Intersects(geom,'{0}') and Gesamt > 60

order by Gewerbe asc;

Beispielergebnis05

Weitere Informationen zur Darstellung der Daten

Liefert eine Abfrage keine Ergebnisse, so wird jedoch das Listenfeld mit Titel, und dem Hinweis dass keine Einträge vorhanden sind, angezeigt.

Eine Abfrage innerhalb einer Ebene mit Flurstücken liefert in der Regel eine zusätzliche Überschrift mit Darstellung der Flurnummer, Zähler und Nenner, sofern die Spalten "flurnummer", "zaehler" und "nenner" vorhanden sind. Zusätzlich werden Informationen aus den Spalten "flur", "gemarkung", "gemeinde" und "alknr" mit angezeigt, sofern die jeweilige Spalte vorhanden ist.

Nicht-Text-Datentypen werden wie folgt textuell dargestellt:

  • DateTime
    • dd.MM.YYYY
  • Int / Uint
    • als Ganzzahl
  • Null
    • "NULL"
  • Object
    • wird rekursiv abgearbeitet und entsprechend den jeweiligen Typen angezeigt
  • SingleByte
    • als Ganzzahl
  • Boolean
    • "True" / "False"
  • Double
    • Als Gleitkommazahl mit drei Nachkommastellen
  • Binary
    • "Binärdaten"
  • Geom
    • "Geometrie"

Die Werte werden immer per HTML Encode ausgegeben. Soll wirklich eine Textausgabe unformatiert gewünscht sein, kann der Name der Spalte mit dem Suffix "_html" erweitert werden. Bsp.: SELECT '<b>Fetter</b> Text' as Beispiel_html


Zuletzt geändert: 01.04.2021 06:56:45 (erstmals erstellt 21.03.2019)