Ausdrücke: Unterschied zwischen den Versionen
Nati (Diskussion | Beiträge) |
|||
(41 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Attribute oder Eigenschaften kombiniert mit Operatoren werden als Ausdrücke bezeichnet. Diese können in Form von Abfragen auf Haltungen, Schächte, Wasserleitungen, Wasserknoten, und Gebiete angewendet werden. Ein wichtiger Anwendungsfall ist das Finden, Markieren und Anpassen von Objekten, welche die definierten Eigenschaften des Ausdruck aufweisen. Ausdrücke können aber auch für die Ansichtskonfiguration | + | Attribute oder Eigenschaften kombiniert mit Operatoren werden als Ausdrücke bezeichnet. Diese können in Form von Abfragen auf Haltungen, Schächte, Wasserleitungen, Wasserknoten, und Gebiete angewendet werden. Ein wichtiger Anwendungsfall ist das Finden, Markieren und Anpassen von Objekten, welche die definierten Eigenschaften des Ausdruck aufweisen. Ausdrücke können aber auch für die Ansichtskonfiguration und Farbkonfiguration verwendet werden, um Informationen bestmöglich darzustellen. |
− | |||
− | |||
+ | '''Möglichkeit zur Verwendung von Ausdrücken:''' | ||
*'''Abfragen:''' Die gefundenen Elemente werden in einem Meldungsfenster aufgelistet. Darüber lassen sich die gefundenen Elemente markieren und folglich Eigenschaften neu setzen oder anpassen. | *'''Abfragen:''' Die gefundenen Elemente werden in einem Meldungsfenster aufgelistet. Darüber lassen sich die gefundenen Elemente markieren und folglich Eigenschaften neu setzen oder anpassen. | ||
*'''Ansichtskonfigurationen:''' In den Ansichtskonfigurationen können Informationen gezielt dargestellt werden, um komplexe Sachverhalte zu erklären. | *'''Ansichtskonfigurationen:''' In den Ansichtskonfigurationen können Informationen gezielt dargestellt werden, um komplexe Sachverhalte zu erklären. | ||
− | *'''Farbkonfiguration:''' Es ist möglich die Einfärbung von Objekten anhand von Ausdrücken zu steuern. Dies führt zu einem | + | *'''Farbkonfiguration:''' Es ist möglich die Einfärbung von Objekten anhand von Ausdrücken zu steuern. Dies führt zu einem umfrangreichen Werkzeug in ++SYSTEMS Ergebnisse und Informationen zu präsentieren. |
− | *'''Eigenschaftslisten:''' Das Erstellen von Listen kann auch mit zuvor definierten Ausdrücken durchgeführt werden. | + | *'''Eigenschaftslisten:''' Das Erstellen von Listen kann auch mit zuvor definierten Ausdrücken durchgeführt werden. |
− | |||
{{Kontextmenü4 | {{Kontextmenü4 | ||
Zeile 22: | Zeile 20: | ||
==Objektebene== | ==Objektebene== | ||
− | In der Objektebene können die Ausdrücke auf die jeweiligen Objekte ausgeführt werden. Hierfür können Sie je nach Modul verschiedene Objekte wählen: | + | In der Objektebene können die Ausdrücke auf die jeweiligen Objekte ausgeführt werden. <br> Hierfür können Sie je nach Modul verschiedene Objekte wählen: |
+ | |||
*Knoten | *Knoten | ||
*Abschnitte | *Abschnitte | ||
Zeile 51: | Zeile 50: | ||
}} | }} | ||
− | ==Syntax der | + | ==Syntax der Ausdrücke== |
<div class="col col-12 form-group"> | <div class="col col-12 form-group"> | ||
<div class="card"> | <div class="card"> | ||
− | <div class="card-header"; style="background-color: #b50d7c;color: white;text-align: center">'''Liste der | + | <div class="card-header"; style="background-color: #b50d7c;color: white;text-align: center">'''Liste der Rechenoperatoren'''</div> |
<div class="card-body"> | <div class="card-body"> | ||
<!--<div class="scrollable">--> | <!--<div class="scrollable">--> | ||
Zeile 65: | Zeile 64: | ||
|"||Anführungszeichen||Texte/Strings werden unter Anführungszeichen gestellt, gewünschte Leerzeichen müssen innerhalb der Anführungszeichen liegen.||„Text1 “ | |"||Anführungszeichen||Texte/Strings werden unter Anführungszeichen gestellt, gewünschte Leerzeichen müssen innerhalb der Anführungszeichen liegen.||„Text1 “ | ||
|- | |- | ||
− | |.f0-.fx| | + | |.f0-.fx|| Floating Point||Festlegung der Ausgabe der Dezimalstellen für Werte mit Nachkommastellen.||(Maximales Überstauvolumen).f2 |
|- | |- | ||
|.||[[Pointer]]||Zugriff auf verknüpfte Daten über Pointer ||Deckel.Radius | |.||[[Pointer]]||Zugriff auf verknüpfte Daten über Pointer ||Deckel.Radius | ||
Zeile 135: | Zeile 134: | ||
|.right(n)||Funktion für String(Text)-Attribute||Gibt n Buchstaben des Textes zurück von Rechts||Name="Schacht_xy_test" -> Name.right(7) -> "xy_test" | |.right(n)||Funktion für String(Text)-Attribute||Gibt n Buchstaben des Textes zurück von Rechts||Name="Schacht_xy_test" -> Name.right(7) -> "xy_test" | ||
|- | |- | ||
− | |.substr(n,m))||Funktion für String(Text)-Attribute||Gibt ein Teilstück des Textes zurück mit n von Links und m | + | |.substr(n,m))||Funktion für String(Text)-Attribute||Gibt ein Teilstück des Textes zurück mit n von Links und m als die Länge des zurückgelieferten Strings|||Name="Schacht_xy_test" -> Name.substr(7,4) -> "_xy_" |
+ | |- | ||
+ | |.substr(n))||Funktion für String(Text)-Attribute||Gibt ein Teilstück des Textes zurück mit n von Links bis zum Ende des Strings|||Name="Schacht_xy_test" -> Name.substr(7) -> "_xy_test" | ||
+ | |- | ||
+ | |.count()||Die Funktion wird auf einen String oder Array von Strings angewendet||Ausgegeben wird die Anzahl von Vorkommnisse des Parameter-Stringes in dem Array von Strings, unter Beachtung von Gross/Kleinschreibung.|||Um die Anzahl von bestimmten Beobachtungskürzeln anzuzeigen, müsste ein Ausdruck wie Schäden.Kode.count(„BCA“) z.B. in einer Eigenschaftsliste als Tabelle angezeigt werden. | ||
|- | |- | ||
+ | |||
|} | |} | ||
</div></div> | </div></div> | ||
</div> | </div> | ||
</div> | </div> | ||
+ | <br> | ||
==Abfragen mit Ausdrücke== | ==Abfragen mit Ausdrücke== | ||
− | Ein wichtiger Grund ist das Finden von Objekten, die über die Abfrage definierte Eigenschaften haben müssen. Diese Funktion wird häufig genutzt, um die Konsistenz der importierten Daten zu überprüfen. Mit dem Ausführen der jeweiligen Ausdrücke können sehr schnell Fehler gefunden und angepasst werden. Zudem können bereits viele Fehlerquellen vor einer Berechnung überprüft werden. | + | Ein wichtiger Grund ist das Finden von Objekten, die über die Abfrage definierte Eigenschaften haben müssen. Diese Funktion wird häufig genutzt, um die Konsistenz der importierten Daten zu überprüfen. Mit dem Ausführen der jeweiligen Ausdrücke können sehr schnell Fehler gefunden und angepasst werden. Zudem können bereits viele Fehlerquellen vor einer Berechnung überprüft werden. Erweiterte Abfragen mit [[Pointer]] sind auch möglich. |
Eine Auflistung der gängisten Abfragen zur Netz- und Eingangsdatenkontrolle. | Eine Auflistung der gängisten Abfragen zur Netz- und Eingangsdatenkontrolle. | ||
Zeile 250: | Zeile 255: | ||
</div> | </div> | ||
− | ==Anwendung von | + | ===Anschlussleitungen=== |
+ | <div class="col col-12 form-group"> | ||
+ | <div class="card"> | ||
+ | <div class="card-header"; style="background-color: #b50d7c;color: white;text-align: center">'''Beispiele für Ausdrücke bei Abschnitten'''</div> | ||
+ | <div class="card-body"> | ||
+ | <div class="scrollable"> | ||
+ | {| cellpadding="20" cellspacing="0" class="wikitable centered" | ||
+ | !Name ||Ausdruck||Beschreibung | ||
+ | |- | ||
+ | |- | ||
+ | |Anschlussleitung ohne Zuordnung zu einem Hauptobjekt||(!Hauptobjekt.exist) & (Kantentyp=1)|| Sucht nach Anschlussleitungen, welche nicht an einem Hauptobjekt (z.B. Haltung/Knoten) hängen | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | </div> | ||
+ | </div> | ||
+ | <br> | ||
+ | |||
+ | ==Anwendung von Rechenoperatoren== | ||
+ | |||
+ | ===BSP - Funktion .count() === | ||
+ | Die Funktion wird auf einen String oder Array von Strings angewendet. <br> | ||
+ | Es wird ein String als Parameter erwartet (direkt in Form „abc“ oder auch ein Ausdruck, das zu einem String evaluiert, so z.B. „Name Anfangsknoten“). <br> | ||
+ | Ausgegeben wird die Anzahl von Vorkommnisse des Parameter-Stringes in dem Array von Strings unter Beachtung von Gross/Kleinschreibung. | ||
+ | |||
+ | Um die Anzahl von bestimmten Beobachtungskürzeln anzuzeigen, müsste ein Ausdruck wie "Schäden.Kode.count(„BCA“)", z.B. in einer Eigenschaftsliste als Tabelle angezeigt werden. | ||
+ | |||
+ | <div class="res-img">[[File:Zählen_240130.png|400px|center]]</div> | ||
+ | <br> | ||
+ | Hier aufpassen, "Schäden.count(„BCA“)" wird nicht funktionieren, weil Schäden keine Strings, sondern Objekte zurückliefert. <br> Auch Schaden ist hierfür nicht geeignet, da es keinen Array, sondern einzelne Beobachtungen zeilenweise auswertet. | ||
+ | |||
+ | Man kann die Funktion auch für eine Suche verwenden, z.B. "((Name Anfangsknoten).count(„M12“) > 0)". | ||
+ | ===BSP - Funktion .substr(n,m) und .substr(n)=== | ||
+ | Diese Funktion erwartet einen oder zwei Integer N und M als Parameter, und liefert einen String, angefangen von N-ten Zeichen und M Zeichen lang, falls M nicht angegeben wird, bis Stringende. <br> Das kann interessant werden, vielleicht auch zusammen mit der .count()-Funktion. <br> | ||
+ | |||
+ | '''Beispiel 1:''' <br> | ||
+ | (Name Anfangsknoten).substr(0, 3).count(„M12”) > 0, um die Knoten zu finden, die „M12“ am Anfang haben – M1222 wird gefunden, KM1222 aber nicht. | ||
+ | <br> | ||
+ | <br> | ||
+ | '''Beispiel 2:''' <br> | ||
+ | Vom Namen der Videodatei die ersten 3 Stellen abschneiden. | ||
+ | <div class="res-img">[[File:Operatoren_20240130.png|800px|center]]</div> | ||
+ | <br> | ||
+ | <br> | ||
+ | '''Beispiel 3:''' <br> | ||
+ | Vom Namen die 3 bis 5. Stelle ausgeben. | ||
+ | <div class="res-img">[[File:Operatoren2_20240130.png|800px|center]]</div> | ||
+ | <br> | ||
+ | |||
+ | ==Anwendung von Ausdrücken in der Ansichtskonfiguration== | ||
===Beschriftung=== | ===Beschriftung=== | ||
Zeile 282: | Zeile 336: | ||
Der Lange Ausdruck 2 wurde nochmals mit Formatierungsregeln ausgegeben (</br> zur besseren Übersicht: | Der Lange Ausdruck 2 wurde nochmals mit Formatierungsregeln ausgegeben (</br> zur besseren Übersicht: | ||
− | + | <code> | |
Sonderbauwerke="Außengebiet"?("Einleitung von:"#"<br> | Sonderbauwerke="Außengebiet"?("Einleitung von:"#"<br> | ||
"#GEP_Auslauf_Art):(Sonderbauwerke="Auslauf"|Sonderbauwerke="Anschluss"?(Sonderbauwerke_Name#"<br> | "#GEP_Auslauf_Art):(Sonderbauwerke="Auslauf"|Sonderbauwerke="Anschluss"?(Sonderbauwerke_Name#"<br> | ||
Zeile 296: | Zeile 350: | ||
Y="#Hochwert.f0):((Sonderbauwerke="DBw"|Sonderbauwerke="Schieber"|Sonderbauwerke="RRR")?(Sonderbauwerke_Name #"<br> | Y="#Hochwert.f0):((Sonderbauwerke="DBw"|Sonderbauwerke="Schieber"|Sonderbauwerke="RRR")?(Sonderbauwerke_Name #"<br> | ||
Q d= "#(Ablauf Maximaler Abfluss).f2#" l/s"#"<br> | Q d= "#(Ablauf Maximaler Abfluss).f2#" l/s"#"<br> | ||
− | X="#Rechtswert.f0#"<br>Y="#Hochwert.f0):)))) | + | X="#Rechtswert.f0#"<br>Y="#Hochwert.f0):))))</code> |
===Darstellung=== | ===Darstellung=== | ||
Zeile 303: | Zeile 357: | ||
Hierfür wird ein Mindestwert von 2 mit dem Wert der Division des anfallenden Maximalen Überstauvolumen durch 5 addiert. | Hierfür wird ein Mindestwert von 2 mit dem Wert der Division des anfallenden Maximalen Überstauvolumen durch 5 addiert. | ||
− | <div class="res-img">[[File:Allgemein_img15.png|600px|center]]</div> | + | <div class="res-img">[[File:Allgemein_img15.png|600px|center]]</div></br> |
− | + | <code>2+((Maximales Überstauvolumen)/5)</code> | |
Da hier auf ein hydraulisches Attribut zurückgegriffen wird, ist eine Veränderung der Anzeige erst nach erfolgreicher Berechnung der Hydraulik möglich. Das Ergebnis schaut wie folgt aus: | Da hier auf ein hydraulisches Attribut zurückgegriffen wird, ist eine Veränderung der Anzeige erst nach erfolgreicher Berechnung der Hydraulik möglich. Das Ergebnis schaut wie folgt aus: | ||
Zeile 323: | Zeile 377: | ||
Im folgenden Standard-Beispiel sollen die Schächte angezeigt werden, welche einen Überstau generieren. | Im folgenden Standard-Beispiel sollen die Schächte angezeigt werden, welche einen Überstau generieren. | ||
Hierfür wurde folgender Ausdruck in den Knoten verwendet: | Hierfür wurde folgender Ausdruck in den Knoten verwendet: | ||
− | + | <code> | |
(Ein.size<1) ? ((Maximaler Wasserspiegel)<(((Sohlhöhe)+(Aus.Profilhöhe mm.max)/1000)) ? 1000 : ((Maximaler Wasserspiegel) - (Deckelhöhe))) : ((Maximaler Wasserspiegel)<(((Sohlhöhe)+(Ein.Profilhöhe mm.max)/1000)) ? 1000 : ((Maximaler Wasserspiegel) - (Deckelhöhe))) | (Ein.size<1) ? ((Maximaler Wasserspiegel)<(((Sohlhöhe)+(Aus.Profilhöhe mm.max)/1000)) ? 1000 : ((Maximaler Wasserspiegel) - (Deckelhöhe))) : ((Maximaler Wasserspiegel)<(((Sohlhöhe)+(Ein.Profilhöhe mm.max)/1000)) ? 1000 : ((Maximaler Wasserspiegel) - (Deckelhöhe))) | ||
+ | </code> | ||
Hier wird zuvor eine Abfolge von WENN ? DANN : SONST Bedingung an die Anzahl der eingehenden Abschnitte gesetzt. | Hier wird zuvor eine Abfolge von WENN ? DANN : SONST Bedingung an die Anzahl der eingehenden Abschnitte gesetzt. | ||
Zeile 333: | Zeile 388: | ||
Und folgender Ausdruck in den Abschnitten: | Und folgender Ausdruck in den Abschnitten: | ||
− | (Wasserspiegel Ende)<(Ende Sohle)+(Profilhöhe m) ? 1000 : ((Wasserspiegel Ende) - (Endknoten.Deckelhöhe)) | + | <code>(Wasserspiegel Ende)<(Ende Sohle)+(Profilhöhe m) ? 1000 : ((Wasserspiegel Ende) - (Endknoten.Deckelhöhe))</code> |
<div class="res-img">[[File:Allgemein_img22.png|600px|center]]</div> | <div class="res-img">[[File:Allgemein_img22.png|600px|center]]</div> | ||
Zeile 343: | Zeile 398: | ||
Hier wird eine WENN ? DANNN Abfrage für die Färbung durchgeführt: Flächen ignorierter Haltungen nicht färben. | Hier wird eine WENN ? DANNN Abfrage für die Färbung durchgeführt: Flächen ignorierter Haltungen nicht färben. | ||
− | Abschnitt.Ignoriert=1 ? 200 : (Anteil undurchlässig Prozent) | + | <code>Abschnitt.Ignoriert=1 ? 200 : (Anteil undurchlässig Prozent)</code> |
<div class="res-img">[[File:Allgemein_img27.png|600px|center]]</div> | <div class="res-img">[[File:Allgemein_img27.png|600px|center]]</div> | ||
Zeile 353: | Zeile 408: | ||
<div class="res-img">[[File:Allgemein_img19.png|600px|center]]</div> | <div class="res-img">[[File:Allgemein_img19.png|600px|center]]</div> | ||
Im Beispiel sollen nur die spezfischen Haltungsdaten der Regenwasserkanäle in einer Tabelle ausgegeben werden: | Im Beispiel sollen nur die spezfischen Haltungsdaten der Regenwasserkanäle in einer Tabelle ausgegeben werden: | ||
− | (Entwässerungssystem)=2 | + | <code>(Entwässerungssystem)=2</code> |
Über das Kontextmenü kann dann eine Tabelle mit Ausdruck erzeugt werden. Die Ergebnisse sind dann an die zuvor angelegte Abfrage gekoppelt. In diesem Fall werden spezifische Haltungsdaten nur von den Regenwasserkanälen ausgegeben. | Über das Kontextmenü kann dann eine Tabelle mit Ausdruck erzeugt werden. Die Ergebnisse sind dann an die zuvor angelegte Abfrage gekoppelt. In diesem Fall werden spezifische Haltungsdaten nur von den Regenwasserkanälen ausgegeben. |
Aktuelle Version vom 30. Januar 2024, 15:54 Uhr
Attribute oder Eigenschaften kombiniert mit Operatoren werden als Ausdrücke bezeichnet. Diese können in Form von Abfragen auf Haltungen, Schächte, Wasserleitungen, Wasserknoten, und Gebiete angewendet werden. Ein wichtiger Anwendungsfall ist das Finden, Markieren und Anpassen von Objekten, welche die definierten Eigenschaften des Ausdruck aufweisen. Ausdrücke können aber auch für die Ansichtskonfiguration und Farbkonfiguration verwendet werden, um Informationen bestmöglich darzustellen.
Möglichkeit zur Verwendung von Ausdrücken:
- Abfragen: Die gefundenen Elemente werden in einem Meldungsfenster aufgelistet. Darüber lassen sich die gefundenen Elemente markieren und folglich Eigenschaften neu setzen oder anpassen.
- Ansichtskonfigurationen: In den Ansichtskonfigurationen können Informationen gezielt dargestellt werden, um komplexe Sachverhalte zu erklären.
- Farbkonfiguration: Es ist möglich die Einfärbung von Objekten anhand von Ausdrücken zu steuern. Dies führt zu einem umfrangreichen Werkzeug in ++SYSTEMS Ergebnisse und Informationen zu präsentieren.
- Eigenschaftslisten: Das Erstellen von Listen kann auch mit zuvor definierten Ausdrücken durchgeführt werden.
Neuen Ausdruck erstellen.
Sie können projektübergreifend Ausdrücke über das Clipboard kopieren und mit dieser Funktion in das bestehende Projekt einfügen.
Löscht alle vorhandenen Ausdrücke.
Legt ein Unterverzeichnis „Unterverzeichnis_1“ an, um bei vielen Ausdrücken eine Ordnungsstruktur anlegen zu können. Die einzelnen Ausdrucksobjekte können per Drag&Drop zwischen den Verzeichnissen verschoben werden.
Inhaltsverzeichnis
Objektebene
In der Objektebene können die Ausdrücke auf die jeweiligen Objekte ausgeführt werden.
Hierfür können Sie je nach Modul verschiedene Objekte wählen:
- Knoten
- Abschnitte
- Wasserknoten
- Wasserleitungen
- Gebiete
- Beobachtungen
- Sanierungsmaßnahmen
- Gewässerabschnitte
- GeoCPM
Ein Dialog zum Erstellen eines neuen Ausdrucks wird geöffnet.
Ein vorhandener Ausdruck wird zum Ändern geöffnet.
Löscht den ausgewählten Ausdruck.
Ausdruck in die Zwischenablage kopieren um ihn in ein anderes Projekt zu kopieren.
Neuer Ausdruck wird mit „Name_Kopie“ angelegt.
Starten der Abfrage auf Knoten/ Abschnitte/ Wasserknoten/ Wasserleitungen/ Gebiete/ Beobachtungen/ Sanierungsmaßnahmen/ Gewässerabschnitte/ GeoCPM.
Starten der Abfrage auf eine markierte Menge von ausgewählten Objekten
Syntax der Ausdrücke
Operator | Name | Beschreibung | Beispiel |
---|---|---|---|
( ) | Klammern | Bei Rechenoperationen sollten die Attribute in Klammer geschrieben werden, um Syntaxprobleme zu vermeiden | (Maximales Überstauvolumen)/5 |
" | Anführungszeichen | Texte/Strings werden unter Anführungszeichen gestellt, gewünschte Leerzeichen müssen innerhalb der Anführungszeichen liegen. | „Text1 “ |
.f0-.fx | Floating Point | Festlegung der Ausgabe der Dezimalstellen für Werte mit Nachkommastellen. | (Maximales Überstauvolumen).f2 |
. | Pointer | Zugriff auf verknüpfte Daten über Pointer | Deckel.Radius |
* | Multiplikation | Multipliziert die Werte seiner Operanden und gibt das Ergebnis zurück. | (Profilhöhe)*5 |
sqrt() | Wurzel | Zieht die Qudatratwurzel aus dem Attribut | sqrt(Fläche) |
sqr() | Quadrat | Bildet das Quadrat aus dem gewählten Attribut | sqr(Fläche) |
/ | Division | Dividiert die Werte seiner Operanden und gibt das Ergebnis zurück. Bei der Division von Ganzzahlen fällt ein eventueller Rest weg, es wird also nicht gerundet. | (Profilhöhe)/2 |
% | Modulo | Dividiert die Werte seiner Operanden und gibt den Divisionsrest zurück. Kann nur auf ganzzahlige Operanden angewendet werden. Ist mindestens ein Operand negativ, so ist das Vorzeichen des Resultats implementationsabhängig. | (Entwässerungssystem)%3 |
< | kleiner | Ergibt den boolschen Wert WAHR, wenn der linke Operand kleiner als der rechte ist, sonst FALSCH. | (Deckelhöhe)<(Sohlhöhe) |
<= | kleiner oder gleich | Ergibt den boolschen Wert WAHR, wenn der linke Operand kleiner oder gleich dem rechten ist, sonst FALSCH. | (Sohlhöhe)<=0 |
= | gleich | Ergibt den boolschen Wert WAHR, wenn die beiden Operanden gleich sind, sonst FALSCH. | (Deckelhöhe)=0 |
<> | ungleich | Ergibt den boolschen Wert WAHR, wenn die beiden Operanden ungleich sind, sonst FALSCH. | Entwässerungssystem<>2 |
>= | größer oder gleich | Ergibt den boolschen Wert true, wenn der linke Operand größer oder gleich dem rechten ist, sonst false. | (Abschnittslänge m)>= 30 |
> | größer | Ergibt den boolschen Wert WAHR, wenn der linke Operand größer als der rechte ist, sonst FALSCH. | (Abschnittslänge m)>100 |
! | Negierung | Invertiert den Wert seiner Operanden. Aus WAHR wird FALSCH und umgekehrt. | !(Deckelhöhe).exists |
& | Und-Verknüpfung | Verknüpft die beiden Operanden und gibt WAHR zurück, wenn beide Operanden den Wert WAHR haben, sonst FALSCH. | !(Anfang Hochwert).exists & !(Ende Rechtswert).exists |
| | Oder-Verknüpfung | Verknüpft die beiden Operanden und gibt WAHR zurück, wenn mindestens einer der beiden Operanden den Wert WAHR hat, sonst FALSCH. | (Material)="MA" | (Material)="Sb" |
.exists | Abfrage-Vorhanden | Abfrage nach dem gesuchten Attribut und gibt WAHR zurück (Objekt wird ausgegeben) | (Deckelhöhe).exists |
.size | Abfrage-Anzahl | Liefert die Anzahl der Elemente für das ausgwählte Attribut | (Individuelles Überstauvolumen).size |
.len | Abfrage-Länge | Liefert die Länge eines Strings | (Name).len |
.max | Abfrage-Maximalwert | Liefert den Maximalwert des Elements für das ausgewählte Attribut | (Individuelles Überstauvolumen).max |
.min | Abfrage-Minimalwert | Liefert den Minimalwert des Elements für das ausgewählte Attribut | (Individuelles Überstauvolumen).min |
.sum | Abfrage-Summation | Summiert die Werte der Elemente eines ausgewählten Attributs | Zuflüsse.Einwohner.sum |
.eq | Vergleichsfunktion für Strings | Vergleicht 2 Strings auf Gleichheit (equal) | Attribut_XY.eq("Test") |
.neq | Vergleichsfunktion für Strings | Vergleicht 2 Strings auf Ungleichheit (not-equal) | Attribut_XY.neq("Test") |
WENN ? DANN : SONST | Wenn-Dann Abfrage | Soll die Beschriftung variabel, je nach bestimmten Eigenschaften eines Objektes erfolgen kann diese vorher abgefragt werden | ((Maximales Überstauvolumen) > 0) ?(Name) :"" |
# | Raute | Eine Folge von Texten (Strings) und Feldnamen verbunden mit # | „Text1 “#Feldname.f2#“ Text“ |
</br> | Neue Zeile | Über den Ausdruch kann eine neue Zeile eingefügt werden | „Text1 “#Feldname.f2#“ Text“ |
.i | integer | Wandelt ein numerisches Feld ineinen Integer-Wert um (ganze Zahl) | Belastungsgrad.i |
.s | string | Wandelt ein numerisches Feld in einen String um | Deckelhöhe.s |
.nth(1) | Individuelle ereignisspezifische Ausdrücke | Der größte Wert eines Arrays wird ausgegeben | (Individuelles Überstauvolumen).nth(1).f2 |
.nth(2) | Individuelle ereignisspezifische Ausdrücke | Der zweitgrößte Wert eines Arrays wird ausgegeben | (Individuelles Überstauvolumen).nth(2).f2 |
.left(n) | Funktion für String(Text)-Attribute | Gibt n Buchstaben des Textes zurück von Links | Name="Schacht_xy_test" -> Name.left(10) -> "Schacht_xy" |
.right(n) | Funktion für String(Text)-Attribute | Gibt n Buchstaben des Textes zurück von Rechts | Name="Schacht_xy_test" -> Name.right(7) -> "xy_test" |
.substr(n,m)) | Funktion für String(Text)-Attribute | Gibt ein Teilstück des Textes zurück mit n von Links und m als die Länge des zurückgelieferten Strings | Name="Schacht_xy_test" -> Name.substr(7,4) -> "_xy_" |
.substr(n)) | Funktion für String(Text)-Attribute | Gibt ein Teilstück des Textes zurück mit n von Links bis zum Ende des Strings | Name="Schacht_xy_test" -> Name.substr(7) -> "_xy_test" |
.count() | Die Funktion wird auf einen String oder Array von Strings angewendet | Ausgegeben wird die Anzahl von Vorkommnisse des Parameter-Stringes in dem Array von Strings, unter Beachtung von Gross/Kleinschreibung. | Um die Anzahl von bestimmten Beobachtungskürzeln anzuzeigen, müsste ein Ausdruck wie Schäden.Kode.count(„BCA“) z.B. in einer Eigenschaftsliste als Tabelle angezeigt werden. |
Abfragen mit Ausdrücke
Ein wichtiger Grund ist das Finden von Objekten, die über die Abfrage definierte Eigenschaften haben müssen. Diese Funktion wird häufig genutzt, um die Konsistenz der importierten Daten zu überprüfen. Mit dem Ausführen der jeweiligen Ausdrücke können sehr schnell Fehler gefunden und angepasst werden. Zudem können bereits viele Fehlerquellen vor einer Berechnung überprüft werden. Erweiterte Abfragen mit Pointer sind auch möglich.
Eine Auflistung der gängisten Abfragen zur Netz- und Eingangsdatenkontrolle.
Abschnitte
Name | Ausdruck | Beschreibung |
---|---|---|
Fehlende Profilhöhe | !(Profilhöhe mm).exists | Sucht nach Abschnitten mit fehlender Profilhöhe oder Nullhöhe |
Fehlendes Gefälle | !(Gefälle).exists | Sucht nach Abschnitten mit fehlenden Gefälle |
Kontrolle Anschlusspunkt Höhe | (Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe) | Sucht nach Abschnitten mit falscher Orientierung |
Abschnittslänge zu lang | (Abschnittslänge m)>100 | Sucht nach extrem langen Abschnittslängen größer 100 m |
Kein Entwässerungssystem | !(Entwässerungssystem).exists | Sucht nach Abschnitten ohne zugewiesenen Entwässerungssystem |
Fehlende Koordinaten | !(Anfang Hochwert).exists | !(Ende Rechtswert).exists | !(Ende Hochwert).exists | Sucht nach Abschnitten ohne Koordinatenzuweisungen |
Belastungsgrad über 200 % | (Belastungsgrad)>200 | Sucht nach Abschnitten mit hoher hydraulischer Belastung (>200%) |
Knoten
Name | Ausdruck | Beschreibung |
---|---|---|
Fehlende Sohlhöhe | !(Sohlhöhe).exists | Sucht nach Knoten ohne Sohlhöhe. |
Sohlhöhe gleich Nullwert | (Sohlhöhe)=0 | Sucht nach Knoten mit einer Sohlhöhe von Null. |
Fehlende Deckelhöhe | !(Deckelhöhe).exists | Sucht nach Knoten ohne Deckelhöhe. |
Deckelhöhe hat Nullwert | (Deckelhöhe)=0 | Sucht nach Knoten mit einer Deckelhöhe von Null. |
Knoten ohne Abschnitte | ((Aus).size=0)&((Ein).size=0) | Sucht nach Knoten ohne Abschnitten. |
Auslauf | ((Aus).size=0)&((Ein).size=1) | Sucht nach Knoten, welche als Auslauf von ++SYSTEMS betrachtet werden. |
Auslauf-Fehler | ((Aus).size=0)&((Ein).size=2) | Sucht nach Knoten, welche zwei Zuläufe und keinen Ablauf hat. Hier wird eine Fehlermeldung in die .MLD Datei geschrieben. |
Extreme Schachtiefe | ((Deckelhöhe)-(Sohlhöhe))>5 | Sucht nach Knoten, welche eine extreme Schachttiefe aufweisen! |
Anschlusssohlhöhen Abschnitte unterhalb der Knotensohle | (Ein).(Endknoten Anschlusspunkt Höhe).min<(Sohlhöhe) | Sucht nach Knoten, welche eingehende oder ausgehende Abschnitte aufweisen, welche tieferliegende Anschlusshöhen haben, als die Sohlhöhe des Knotens. Dies führ in DYNA zu erhöhten Schacht-/Bauwerksvolumina. |
Haltungsscheitel über Deckelhöhe | ((Ein).Profilhöhe.max) +(Sohlhöhe * 1000) - (Deckelhöhe * 1000)>0 | Sucht nach Knoten, welche eingehende oder ausgehende Abschnitte mit Scheitelhöhe größer der Deckelhöhe aufweisen. |
Absturz | ((Aus).(Anfangsknoten Anschlusspunkt Höhe).min)-((Ein).(Endknoten Anschlusspunkt Höhe).min)>0.05 | Sucht nach Knoten, indem ein Versatz von mindestens 5 cm von eingehnder und ausgehenden Abschnitt vorhanden ist. |
Sohlsprung im Schacht (Gegengefälle) | (Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe) | Sucht nach Knoten, indem ein Sohlsprung von der eingehenden Höhe zur ausgehenden Höhe vorhanden ist (Gegengefälle im Schacht) |
Knoten Nichtgraphisch | !(Hochwert).exists | Sucht nach Knoten ohne Koordinaten (Nichtgrafische Elemente). |
Sohle berechnet oder geschätzt | (Status Sohlhöhe)=6 | Sucht nach Knoten mit dem Status berechnet oder geschätzt. |
Schacht mit Bauwerksumriss | (Bauwerksumriss als Folge von RW und HW).exists | Sucht nach Knoten mit einem definierten Bauwerksumriss. |
Knoten ist Revisionsschacht | (Knotentyp)=1 | Sucht nach Knoten, welche als Revisionsschacht definiert wurden. |
Sonderbauwerk | (Sonderbauwerkstyp)>=10 | Sucht nach Knoten, welche als Sonderbauwerk festgelegt wurden. |
Überstau | (Wasserspiegel Ende)<(Ende Sohle)+(Profilhöhe m) ? 1000 : ((Wasserspiegel Ende) - (Endknoten.Deckelhöhe)) | Sucht nach Knoten, welche einen Überstau verursachen. |
Einzugsgebiete
Name | Ausdruck | Beschreibung |
---|---|---|
Einwohner an Regenwasser | (Abschnitt.(Entwässerungssystem) = 2) & ((Einwohner) > 0) | Sucht alle Einzugsgbeite mit Einwohner, welche dem Regenwasserkanal zugewiesen wurden. |
Gewerblicher Abfluss | ((Abfluss gewerblich)>0.500) | Sucht alle Einzugsgbeite mit einem gewerblichen Abfluss über 0,5 l/s in der ausgewählten Partition. |
Kleine Flächen | ((Fläche)<0.001) | Sucht extrem kleine Flächen unter 0.001 m² in der ausgewählten Partition. |
Großeinleiter | ((Konstanter Zufluss)>0.000) & ((Konstanter Zufluss)<1000.000) | Sucht Einzugsgebiete mit großen Zufluss. |
Undurchlässigkeitsanteil der Fläche | ((Anteil undurchlässig Prozent)<40.000) & ((Anteil undurchlässig Prozent)>=0.000) | Sucht Einzugsgebiete mit einem Anteil an undurchlässiger Fläche von 0 bs 40% |
Anschlussleitungen
Name | Ausdruck | Beschreibung |
---|---|---|
Anschlussleitung ohne Zuordnung zu einem Hauptobjekt | (!Hauptobjekt.exist) & (Kantentyp=1) | Sucht nach Anschlussleitungen, welche nicht an einem Hauptobjekt (z.B. Haltung/Knoten) hängen |
Anwendung von Rechenoperatoren
BSP - Funktion .count()
Die Funktion wird auf einen String oder Array von Strings angewendet.
Es wird ein String als Parameter erwartet (direkt in Form „abc“ oder auch ein Ausdruck, das zu einem String evaluiert, so z.B. „Name Anfangsknoten“).
Ausgegeben wird die Anzahl von Vorkommnisse des Parameter-Stringes in dem Array von Strings unter Beachtung von Gross/Kleinschreibung.
Um die Anzahl von bestimmten Beobachtungskürzeln anzuzeigen, müsste ein Ausdruck wie "Schäden.Kode.count(„BCA“)", z.B. in einer Eigenschaftsliste als Tabelle angezeigt werden.
Hier aufpassen, "Schäden.count(„BCA“)" wird nicht funktionieren, weil Schäden keine Strings, sondern Objekte zurückliefert.
Auch Schaden ist hierfür nicht geeignet, da es keinen Array, sondern einzelne Beobachtungen zeilenweise auswertet.
Man kann die Funktion auch für eine Suche verwenden, z.B. "((Name Anfangsknoten).count(„M12“) > 0)".
BSP - Funktion .substr(n,m) und .substr(n)
Diese Funktion erwartet einen oder zwei Integer N und M als Parameter, und liefert einen String, angefangen von N-ten Zeichen und M Zeichen lang, falls M nicht angegeben wird, bis Stringende.
Das kann interessant werden, vielleicht auch zusammen mit der .count()-Funktion.
Beispiel 1:
(Name Anfangsknoten).substr(0, 3).count(„M12”) > 0, um die Knoten zu finden, die „M12“ am Anfang haben – M1222 wird gefunden, KM1222 aber nicht.
Beispiel 2:
Vom Namen der Videodatei die ersten 3 Stellen abschneiden.
Beispiel 3:
Vom Namen die 3 bis 5. Stelle ausgeben.
Anwendung von Ausdrücken in der Ansichtskonfiguration
Beschriftung
In den Ansichtskonfigurationen können auch komplexe Abfragen für die Informationsausgabe im Bearbeitungsfenster oder Plan erfolgen. Im Folgenden ein Beispiel wird die Knotenbeschriftung mit einem Ausdruck erstellt. Hier kommen sowohl Stammattribute in der Abfrage vor, als auch freie Attribute, z.B. "Sonderbauwere". Zudem werden Bedingungen (WENN ? DANN : SONST) vorangestellt, wann eine Beschriftung der Knoten erfolgen soll.
- Ausdruck 1:
"D = "#Deckelhöhe.f2
- Ausdruck 2:
Sonderbauwerke="Außengebiet"?("Einleitung von:"#"<br> "#GEP_Auslauf_Art):(Sonderbauwerke="Auslauf"|Sonderbauwerke="Anschluss"?(Sonderbauwerke_Name#"<br> Einleitung von:"#"<br> "#GEP_Auslauf_Art#"<br>X="#Rechtswert.f0#"<br> Y="#Hochwert.f0):(Sonderbauwerke="RÜ"?(Sonderbauwerke_Name#"<br> Schwellenlänge= "#(Beckenüberlauf Länge).f2#" m"#"<br> Überfallbeiwert= "#(Beckenüberlauf Überfallbeiwert).f2#"<br> X="#Rechtswert.f0#"<br> Y="#Hochwert.f0):((Sonderbauwerke="DBw mit NÜ"|Sonderbauwerke="RRR mit NÜ")?(Sonderbauwerke#" "#Sonderbauwerk Kurzname#"<br>Schwellenlänge= "#(Beckenüberlauf Länge).f2#" m"#"<br> Überfallbeiwert= "#(Beckenüberlauf Überfallbeiwert).f2#"<br> X="#Rechtswert.f0#"<br> Y="#Hochwert.f0):((Sonderbauwerke="DBw"|Sonderbauwerke="Schieber"|Sonderbauwerke="RRR")?(Sonderbauwerke_Name #"<br> Q d= "#(Ablauf Maximaler Abfluss).f2#" l/s"#"<br> X="#Rechtswert.f0#"<br>Y="#Hochwert.f0):))))
- Ausdruck 3:
(Entwässerungssystem<3&((Ein).Summierte Einzugsgebietsfläche.sum)>0)?"Ab,ges.= "#((Ein).Summierte Einzugsgebietsfläche.sum.f2)#"<br>Au,ges.= "#((Ein).Summe undurchlässige Einzugsgebietsfläche.sum.f2):
Das Ergebnis dieser komplexen Abfrage schaut dann wie folgt aus:
Der Lange Ausdruck 2 wurde nochmals mit Formatierungsregeln ausgegeben (
zur besseren Übersicht:
Sonderbauwerke="Außengebiet"?("Einleitung von:"#"
"#GEP_Auslauf_Art):(Sonderbauwerke="Auslauf"|Sonderbauwerke="Anschluss"?(Sonderbauwerke_Name#"
Einleitung von:"#"
"#GEP_Auslauf_Art#"
X="#Rechtswert.f0#"
Y="#Hochwert.f0):(Sonderbauwerke="RÜ"?(Sonderbauwerke_Name#"
Schwellenlänge= "#(Beckenüberlauf Länge).f2#" m"#"
Überfallbeiwert= "#(Beckenüberlauf Überfallbeiwert).f2#"
X="#Rechtswert.f0#"
Y="#Hochwert.f0):((Sonderbauwerke="DBw mit NÜ"|Sonderbauwerke="RRR mit NÜ")?(Sonderbauwerke#" "#Sonderbauwerk Kurzname#"
Schwellenlänge= "#(Beckenüberlauf Länge).f2#" m"#"
Überfallbeiwert= "#(Beckenüberlauf Überfallbeiwert).f2#"
X="#Rechtswert.f0#"
Y="#Hochwert.f0):((Sonderbauwerke="DBw"|Sonderbauwerke="Schieber"|Sonderbauwerke="RRR")?(Sonderbauwerke_Name #"
Q d= "#(Ablauf Maximaler Abfluss).f2#" l/s"#"
X="#Rechtswert.f0#"
Y="#Hochwert.f0):))))
Darstellung
Auch die Darstellung der angezeigten Knoten, kann über Ausdrücke und Attribute angepasst werden. In diesem Beispiel wird der Knotenradius an das anfallende Überstauvolumen angepasst. Hierfür wird ein Mindestwert von 2 mit dem Wert der Division des anfallenden Maximalen Überstauvolumen durch 5 addiert.
2+((Maximales Überstauvolumen)/5)
Da hier auf ein hydraulisches Attribut zurückgegriffen wird, ist eine Veränderung der Anzeige erst nach erfolgreicher Berechnung der Hydraulik möglich. Das Ergebnis schaut wie folgt aus:
Ausdruck zum Ausblenden der Knoten
In der Ansichtskonfiguration können Sie auch über Ausdrücke und Attribute Knoten explizit ausblenden. Als Beispiel werden alle Knoten mit Überstau über 40 m³ über den folgenden Ausdruck ausgeblendet:
Ausdrücke in Farbkonfigurationen
Wie bereits bei den Beschriftungen der Ansichtskonfiguration, so können auch in der dazugehörigen Farbkonfiguration Ausdrücke zum darstellen der Objektfarben verwendet werden.
Im folgenden Standard-Beispiel sollen die Schächte angezeigt werden, welche einen Überstau generieren.
Hierfür wurde folgender Ausdruck in den Knoten verwendet:
(Ein.size<1) ? ((Maximaler Wasserspiegel)<(((Sohlhöhe)+(Aus.Profilhöhe mm.max)/1000)) ? 1000 : ((Maximaler Wasserspiegel) - (Deckelhöhe))) : ((Maximaler Wasserspiegel)<(((Sohlhöhe)+(Ein.Profilhöhe mm.max)/1000)) ? 1000 : ((Maximaler Wasserspiegel) - (Deckelhöhe)))
Hier wird zuvor eine Abfolge von WENN ? DANN : SONST Bedingung an die Anzahl der eingehenden Abschnitte gesetzt. Wenn der Maximale Wasserspiegel die Sohlhöhe mit der Profilhöhe nicht überschreitetet, dann wird für den Deckel ein Wert 1000 ausgegeben. Ist dre Maximale Wasserspiegel größer als die Sohlhöhe mit Profilhöhe dann wird der Boolsche Wert Wahr ausgegbeen, welcher hier mit dem numerischen Wert 0 ausgegeben wird.
Und folgender Ausdruck in den Abschnitten:
(Wasserspiegel Ende)<(Ende Sohle)+(Profilhöhe m) ? 1000 : ((Wasserspiegel Ende) - (Endknoten.Deckelhöhe))
Das Ergebnis schaut wie folgt aus:
Ein Weiteres Beispiel, wäre die Einfärbung von Flächen zu steuern, welche an ignorierten Haltungen hängen. Hier wird eine WENN ? DANNN Abfrage für die Färbung durchgeführt: Flächen ignorierter Haltungen nicht färben.
Abschnitt.Ignoriert=1 ? 200 : (Anteil undurchlässig Prozent)
Ausdrücke in Eigenschaftslisten
Auch bei den Eigenschaftslisten können umfangreiche Daten über Ausdrücke gefiltert und angepasst werden. Hierfür können Sie im Dialog der Eigenschaftsliste ein bereits erstellten Ausdruck über das Dropdown-Menü hinzufügen oder aber direkt einen Ausdruck erstellen.
Im Beispiel sollen nur die spezfischen Haltungsdaten der Regenwasserkanäle in einer Tabelle ausgegeben werden:
(Entwässerungssystem)=2
Über das Kontextmenü kann dann eine Tabelle mit Ausdruck erzeugt werden. Die Ergebnisse sind dann an die zuvor angelegte Abfrage gekoppelt. In diesem Fall werden spezifische Haltungsdaten nur von den Regenwasserkanälen ausgegeben.
Ausdrücke dynamisch setzen
Es besteht die Möglichkeit Ausdrücke auch dynamisch auszuwerten. Hierbei werden die Ausdrücke beim setzen über "markierte ändern" dynamisch berechnet/ausgeführt.
Im folgenden Beispiel wird das Attribut Tiefe immer an die aktuellen Werte des Knotens angepasst:
Im ersten Schritt muss wie gewohnt ein Ausdruck erstellt werden:
Danach wird dieser Ausdruck über die Funktion "markierte ändern" auf ein freies Attribut gesetzt. Dabei wird bei der Zuweisung des Ausdruckes eckige Klammern [Tiefe_dyna] verwendet.
Im Dialog des Knoten wird dann diese dynamische Zuweisung sichtbar.