Ausdrücke: Unterschied zwischen den Versionen
Nati (Diskussion | Beiträge) |
(Automatisierte Rechtschreib-/Formatierungskorrektur) |
||
| (36 dazwischenliegende Versionen von 6 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 | + | 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 Ausdrucks 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:''' | '''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 umfangreichen Werkzeug, um 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. | ||
| − | {{ | + | {{Card-Box-Blue-Kontext-Start|Titel=Kontextmenü}} |
| − | + | {| class="wikitable centered" cellpadding="40" cellspacing="0" | |
| − | | | + | ! Funktion !! Beschreibung |
| − | | | + | |- |
| − | | | + | | Neu… || Neuen Ausdruck erstellen. |
| − | | | + | |- |
| − | | | + | | Einfügen || Sie können projektübergreifend Ausdrücke über das Clipboard kopieren und mit dieser Funktion in das bestehende Projekt einfügen. |
| − | | | + | |- |
| − | | | + | | Alle löschen || Löscht alle vorhandenen Ausdrücke. |
| − | | | + | |- |
| − | }}</br> | + | | Neues Unterverzeichnis || 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. |
| + | |} | ||
| + | {{Card-Box-Blue-Kontext-Ende}}</br> | ||
==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 31: | Zeile 34: | ||
*GeoCPM | *GeoCPM | ||
| − | {{ | + | {{Card-Box-Blue-Kontext-Start|Titel=Kontextmenü}} |
| − | + | {| class="wikitable centered" cellpadding="40" cellspacing="0" | |
| − | | | + | ! Funktion !! Beschreibung |
| − | + | |- | |
| − | + | | Neu… || Ein Dialog zum Erstellen eines neuen Ausdrucks wird geöffnet. | |
| − | + | |- | |
| − | | | + | | Ändern || Ein vorhandener Ausdruck wird zum Ändern geöffnet. |
| − | | | + | |- |
| − | | | + | | Löschen || Löscht den ausgewählten Ausdruck. |
| − | | | + | |- |
| − | | | + | | Kopieren || Ausdruck in die Zwischenablage kopieren um ihn in ein anderes Projekt zu kopieren. |
| − | | | + | |- |
| − | | | + | | Kopie erzeugen || Neuer Ausdruck wird mit „Name_Kopie“ angelegt. |
| − | | | + | |- |
| − | | | + | | Ausführen… || Starten der Abfrage auf Knoten/ Abschnitte/ Wasserknoten/ Wasserleitungen/ Gebiete/ Beobachtungen/ Sanierungsmaßnahmen/ Gewässerabschnitte/ GeoCPM. |
| − | | | + | |- |
| − | }} | + | | Ausführen markierte || Starten der Abfrage auf eine markierte Menge von ausgewählten Objekten |
| + | |} | ||
| + | {{Card-Box-Blue-Kontext-Ende}} | ||
==Syntax der Ausdrücke== | ==Syntax der Ausdrücke== | ||
<div class="col col-12 form-group"> | <div class="col col-12 form-group"> | ||
| − | <div class="card"> | + | <div class="card shadow-lg bg-white rounded"> |
| − | <div class="card-header" | + | <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 63: | Zeile 68: | ||
|"||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 69: | Zeile 74: | ||
|+||Addition||Addiert die Werte seiner Operanden und gibt das Ergebnis zurück||(Deckelhöhe)+5 | |+||Addition||Addiert die Werte seiner Operanden und gibt das Ergebnis zurück||(Deckelhöhe)+5 | ||
|- | |- | ||
| − | |-|| | + | |-||Subtraktion||Subtrahiert die Werte seiner Operanden und gibt das Ergebnis zurück. ||(Deckelhöhe)-5 |
|- | |- | ||
|*||Multiplikation||Multipliziert die Werte seiner Operanden und gibt das Ergebnis zurück.||(Profilhöhe)*5 | |*||Multiplikation||Multipliziert die Werte seiner Operanden und gibt das Ergebnis zurück.||(Profilhöhe)*5 | ||
|- | |- | ||
| − | |sqrt()||Wurzel||Zieht die | + | |sqrt()||Wurzel||Zieht die Quadratwurzel aus dem Attribut||sqrt(Fläche) |
|- | |- | ||
|sqr()||Quadrat||Bildet das Quadrat aus dem gewählten Attribut||sqr(Fläche) | |sqr()||Quadrat||Bildet das Quadrat aus dem gewählten Attribut||sqr(Fläche) | ||
| Zeile 119: | Zeile 124: | ||
|#||Raute||Eine Folge von Texten (Strings) und Feldnamen verbunden mit #||„Text1 “#Feldname.f2#“ Text“ | |#||Raute||Eine Folge von Texten (Strings) und Feldnamen verbunden mit #||„Text1 “#Feldname.f2#“ Text“ | ||
|- | |- | ||
| − | |<nowiki>< | + | |<nowiki><br></nowiki>||Neue Zeile||Über den Ausdruck </b> kann eine neue Zeile bei Knoten eingefügt werden||"TEST1"#"<nowiki><br></nowiki>"#"TEST" |
|- | |- | ||
| − | |.i||integer||Wandelt ein numerisches Feld | + | |.i||integer||Wandelt ein numerisches Feld in einen Integer-Wert um (ganze Zahl)||Belastungsgrad.i |
|- | |- | ||
|.s||string||Wandelt ein numerisches Feld in einen String um||Deckelhöhe.s | |.s||string||Wandelt ein numerisches Feld in einen String um||Deckelhöhe.s | ||
| Zeile 137: | Zeile 142: | ||
|.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" | |.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 | + | |.count()||Die Funktion wird auf einen String oder Array von Strings angewendet||Ausgegeben wird die Anzahl der Vorkommnisse des Parameter-Stringes in dem Array von Strings, unter Beachtung von Groß-/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. |
|- | |- | ||
| Zeile 149: | Zeile 154: | ||
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. | 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 | + | Eine Auflistung der gängigsten Abfragen zur Netz- und Eingangsdatenkontrolle. |
===Abschnitte=== | ===Abschnitte=== | ||
<div class="col col-12 form-group"> | <div class="col col-12 form-group"> | ||
| − | <div class="card"> | + | <div class="card shadow-lg bg-white rounded"> |
| − | <div class="card-header" | + | <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="card-body"> | ||
<div class="scrollable"> | <div class="scrollable"> | ||
| Zeile 163: | Zeile 168: | ||
|Fehlende Profilhöhe||(Profilhöhe mm)=0|!(Profilhöhe mm).exists|| Sucht nach Abschnitten mit fehlender Profilhöhe oder Nullhöhe | |Fehlende Profilhöhe||(Profilhöhe mm)=0|!(Profilhöhe mm).exists|| Sucht nach Abschnitten mit fehlender Profilhöhe oder Nullhöhe | ||
|- | |- | ||
| − | |Fehlendes Gefälle||!(Gefälle).exists|| Sucht nach Abschnitten mit | + | |Fehlendes Gefälle||!(Gefälle).exists|| Sucht nach Abschnitten mit fehlendem Gefälle |
|- | |- | ||
|Kontrolle Anschlusspunkt Höhe||(Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe)|| Sucht nach Abschnitten mit falscher Orientierung | |Kontrolle Anschlusspunkt Höhe||(Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe)|| Sucht nach Abschnitten mit falscher Orientierung | ||
| Zeile 169: | Zeile 174: | ||
|Abschnittslänge zu lang||(Abschnittslänge m)>100|| Sucht nach extrem langen Abschnittslängen größer 100 m | |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 | + | |Kein Entwässerungssystem||!(Entwässerungssystem).exists|| Sucht nach Abschnitten ohne zugewiesenes Entwässerungssystem |
|- | |- | ||
|Fehlende Koordinaten||!(Anfang Rechtswert).exists | !(Anfang Hochwert).exists | !(Ende Rechtswert).exists | !(Ende Hochwert).exists|| Sucht nach Abschnitten ohne Koordinatenzuweisungen | |Fehlende Koordinaten||!(Anfang Rechtswert).exists | !(Anfang Hochwert).exists | !(Ende Rechtswert).exists | !(Ende Hochwert).exists|| Sucht nach Abschnitten ohne Koordinatenzuweisungen | ||
| Zeile 182: | Zeile 187: | ||
===Knoten=== | ===Knoten=== | ||
<div class="col col-12 form-group"> | <div class="col col-12 form-group"> | ||
| − | <div class="card"> | + | <div class="card shadow-lg bg-white rounded"> |
| − | <div class="card-header" | + | <div class="card-header" style="background-color: #b50d7c;color: white;text-align: center">'''Beispiele für Ausdrücke bei Knoten'''</div> |
<div class="card-body"> | <div class="card-body"> | ||
<div class="scrollable"> | <div class="scrollable"> | ||
| Zeile 197: | Zeile 202: | ||
|Deckelhöhe hat Nullwert||(Deckelhöhe)=0 || Sucht nach Knoten mit einer Deckelhöhe von Null. | |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 | + | |Knoten ohne Abschnitte||((Aus).size=0)&((Ein).size=0)|| Sucht nach Knoten ohne Abschnitte. |
|- | |- | ||
|Auslauf||((Aus).size=0)&((Ein).size=1)|| Sucht nach Knoten, welche als Auslauf von ++SYSTEMS betrachtet werden. | |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 | + | |Auslauf-Fehler||((Aus).size=0)&((Ein).size=2)|| Sucht nach Knoten, welche zwei Zuläufe und keinen Ablauf haben. Hier wird eine Fehlermeldung in die .MLD Datei geschrieben. |
|- | |- | ||
|Extreme Schachtiefe||((Deckelhöhe)-(Sohlhöhe))>5|| Sucht nach Knoten, welche eine extreme Schachttiefe aufweisen! | |Extreme Schachtiefe||((Deckelhöhe)-(Sohlhöhe))>5|| Sucht nach Knoten, welche eine extreme Schachttiefe aufweisen! | ||
|- | |- | ||
| − | |Anschlusssohlhöhen Abschnitte unterhalb der Knotensohle||(Aus).(Anfangsknoten Anschlusspunkt Höhe).min<(Sohlhöhe) | (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. <p style="color: #b50d7c ">Dies | + | |Anschlusssohlhöhen Abschnitte unterhalb der Knotensohle||(Aus).(Anfangsknoten Anschlusspunkt Höhe).min<(Sohlhöhe) | (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. <p style="color: #b50d7c ">Dies führt in DYNA zu erhöhten Schacht-/Bauwerksvolumina.</p> |
|- | |- | ||
|Haltungsscheitel über Deckelhöhe||((Aus).Profilhöhe.max) +(Sohlhöhe * 1000) - (Deckelhöhe * 1000)>0 |((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. | |Haltungsscheitel über Deckelhöhe||((Aus).Profilhöhe.max) +(Sohlhöhe * 1000) - (Deckelhöhe * 1000)>0 |((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, | + | |Absturz||((Aus).(Anfangsknoten Anschlusspunkt Höhe).min)-((Ein).(Endknoten Anschlusspunkt Höhe).min)>0.05|| Sucht nach Knoten, bei dem ein Versatz von mindestens 5 cm von eingehendem und ausgehendem Abschnitt vorhanden ist. |
|- | |- | ||
| − | |Sohlsprung im Schacht (Gegengefälle)||(Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe)|| Sucht nach Knoten, | + | |Sohlsprung im Schacht (Gegengefälle)||(Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe)|| Sucht nach Knoten, bei dem ein Sohlsprung von der eingehenden Höhe zur ausgehenden Höhe vorhanden ist (Gegengefälle im Schacht) |
|- | |- | ||
|Knoten Nichtgraphisch||!(Rechtswert).exists | !(Hochwert).exists|| Sucht nach Knoten ohne Koordinaten (Nichtgrafische Elemente). | |Knoten Nichtgraphisch||!(Rechtswert).exists | !(Hochwert).exists|| Sucht nach Knoten ohne Koordinaten (Nichtgrafische Elemente). | ||
| Zeile 233: | Zeile 238: | ||
<div class="col col-12 form-group"> | <div class="col col-12 form-group"> | ||
<div class="card"> | <div class="card"> | ||
| − | <div class="card-header" | + | <div class="card-header" style="background-color: #b50d7c;color: white;text-align: center">'''Beispiele für Ausdrücke bei Einzugsgebieten'''</div> |
<div class="card-body"> | <div class="card-body"> | ||
<div class="scrollable"> | <div class="scrollable"> | ||
| Zeile 239: | Zeile 244: | ||
!Name ||Ausdruck||Beschreibung | !Name ||Ausdruck||Beschreibung | ||
|- | |- | ||
| − | |Einwohner an Regenwasser||(Abschnitt.(Entwässerungssystem) = 2) & ((Einwohner) > 0)|| Sucht alle | + | |Einwohner an Regenwasser||(Abschnitt.(Entwässerungssystem) = 2) & ((Einwohner) > 0)|| Sucht alle Einzugsgebiete mit Einwohnern, welche dem Regenwasserkanal zugewiesen wurden. |
|- | |- | ||
| − | |Gewerblicher Abfluss||((Abfluss gewerblich)>0.500)|| Sucht alle | + | |Gewerblicher Abfluss||((Abfluss gewerblich)>0.500)|| Sucht alle Einzugsgebiete 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. | |Kleine Flächen||((Fläche)<0.001)|| Sucht extrem kleine Flächen unter 0.001 m² in der ausgewählten Partition. | ||
| Zeile 247: | Zeile 252: | ||
|Großeinleiter||((Konstanter Zufluss)>0.000) & ((Konstanter Zufluss)<1000.000)|| Sucht Einzugsgebiete mit großen Zufluss. | |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 | + | |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 bis 40% |
|- | |- | ||
|} | |} | ||
| Zeile 256: | Zeile 261: | ||
===Anschlussleitungen=== | ===Anschlussleitungen=== | ||
<div class="col col-12 form-group"> | <div class="col col-12 form-group"> | ||
| − | <div class="card"> | + | <div class="card shadow-lg bg-white rounded"> |
| − | <div class="card-header" | + | <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="card-body"> | ||
<div class="scrollable"> | <div class="scrollable"> | ||
| Zeile 270: | Zeile 275: | ||
</div> | </div> | ||
</div> | </div> | ||
| − | |||
<br> | <br> | ||
| − | == | + | ==Anwendung von Rechenoperatoren== |
| − | + | ===BSP - Funktion .count() === | |
| − | Die Funktion wird auf einen String oder Array von Strings angewendet. | + | 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“). | + | 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 | + | 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. | + | 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)". | |
| − | + | ||
| − | 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. | (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== | ==Anwendung von Ausdrücken in der Ansichtskonfiguration== | ||
===Beschriftung=== | ===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. " | + | 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. "Sonderbauwerke". Zudem werden Bedingungen (WENN ? DANN : SONST) vorangestellt, wann eine Beschriftung der Knoten erfolgen soll. |
<div class="res-img">[[File:Allgemein_img14.png|500px|center]]</div> | <div class="res-img">[[File:Allgemein_img14.png|500px|center]]</div> | ||
| Zeile 321: | Zeile 339: | ||
<div class="res-img">[[File:Allgemein_img13.png|500px|center]]</div> | <div class="res-img">[[File:Allgemein_img13.png|500px|center]]</div> | ||
| − | Der | + | Der lange Ausdruck 2 wurde nochmals mit Formatierungsregeln ausgegeben (</br>) zur besseren Übersicht: |
<code> | <code> | ||
Sonderbauwerke="Außengebiet"?("Einleitung von:"#"<br> | Sonderbauwerke="Außengebiet"?("Einleitung von:"#"<br> | ||
| Zeile 341: | Zeile 359: | ||
Auch die Darstellung der angezeigten Knoten, kann über Ausdrücke und Attribute angepasst werden. | 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. | 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 | + | Hierfür wird ein Mindestwert von 2 mit dem Wert der Division des anfallenden maximalen Überstauvolumens durch 5 addiert. |
<div class="res-img">[[File:Allgemein_img15.png|600px|center]]</div></br> | <div class="res-img">[[File:Allgemein_img15.png|600px|center]]</div></br> | ||
| Zeile 368: | Zeile 386: | ||
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. | ||
| − | Wenn der | + | Wenn der maximale Wasserspiegel die Sohlhöhe mit der Profilhöhe nicht überschreitet, dann wird für den Deckel ein Wert 1000 ausgegeben. Ist der maximale Wasserspiegel größer als die Sohlhöhe mit Profilhöhe, dann wird der boolesche Wert Wahr ausgegeben, welcher hier mit dem numerischen Wert 0 ausgegeben wird. |
<div class="res-img">[[File:Allgemein_img21.png|600px|center]]</div> | <div class="res-img">[[File:Allgemein_img21.png|600px|center]]</div> | ||
| Zeile 381: | Zeile 399: | ||
<div class="res-img">[[File:Allgemein_img23.png|600px|center]]</div> | <div class="res-img">[[File:Allgemein_img23.png|600px|center]]</div> | ||
| − | Ein | + | Ein weiteres Beispiel wäre, die Einfärbung von Flächen zu steuern, welche an ignorierten Haltungen hängen. |
| − | Hier wird eine WENN ? | + | Hier wird eine WENN ? DANN Abfrage für die Färbung durchgeführt: Flächen ignorierter Haltungen nicht färben. |
<code>Abschnitt.Ignoriert=1 ? 200 : (Anteil undurchlässig Prozent)</code> | <code>Abschnitt.Ignoriert=1 ? 200 : (Anteil undurchlässig Prozent)</code> | ||
| Zeile 389: | Zeile 407: | ||
==Ausdrücke in Eigenschaftslisten== | ==Ausdrücke in Eigenschaftslisten== | ||
Auch bei den Eigenschaftslisten können umfangreiche Daten über Ausdrücke gefiltert und angepasst werden. | Auch bei den Eigenschaftslisten können umfangreiche Daten über Ausdrücke gefiltert und angepasst werden. | ||
| − | Hierfür können Sie im Dialog der Eigenschaftsliste | + | Hierfür können Sie im Dialog der Eigenschaftsliste einen bereits erstellten Ausdruck über das Dropdown-Menü hinzufügen oder aber direkt einen Ausdruck erstellen. |
<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 | + | Im Beispiel sollen nur die spezifischen Haltungsdaten der Regenwasserkanäle in einer Tabelle ausgegeben werden: |
<code>(Entwässerungssystem)=2</code> | <code>(Entwässerungssystem)=2</code> | ||
| Zeile 407: | Zeile 425: | ||
<div class="res-img">[[File:Allgemein_img24.png|600px|center]]</div> | <div class="res-img">[[File:Allgemein_img24.png|600px|center]]</div> | ||
| − | Danach wird dieser Ausdruck über die Funktion "markierte ändern" auf ein freies Attribut gesetzt. Dabei | + | Danach wird dieser Ausdruck über die Funktion "markierte ändern" auf ein freies Attribut gesetzt. Dabei werden bei der Zuweisung des Ausdruckes eckige Klammern [Tiefe_dyna] verwendet. |
<div class="res-img">[[File:Allgemein_img25.png|800px|center]]</div> | <div class="res-img">[[File:Allgemein_img25.png|800px|center]]</div> | ||
| − | Im Dialog des | + | Im Dialog des Knotens wird dann diese dynamische Zuweisung sichtbar. |
<div class="res-img">[[File:Allgemein_img26.png|800px|center]]</div> | <div class="res-img">[[File:Allgemein_img26.png|800px|center]]</div> | ||
Aktuelle Version vom 27. August 2026, 09:06 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 Ausdrucks 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 umfangreichen Werkzeug, um in ++SYSTEMS Ergebnisse und Informationen zu präsentieren.
- Eigenschaftslisten: Das Erstellen von Listen kann auch mit zuvor definierten Ausdrücken durchgeführt 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
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 Quadratwurzel 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 Ausdruck kann eine neue Zeile bei Knoten eingefügt werden | "TEST1"#"<br>"#"TEST" |
| .i | integer | Wandelt ein numerisches Feld in einen 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 der Vorkommnisse des Parameter-Stringes in dem Array von Strings, unter Beachtung von Groß-/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ängigsten 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 fehlendem 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 zugewiesenes 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 Abschnitte. |
| 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 haben. 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ührt 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, bei dem ein Versatz von mindestens 5 cm von eingehendem und ausgehendem Abschnitt vorhanden ist. |
| Sohlsprung im Schacht (Gegengefälle) | (Anfangsknoten Anschlusspunkt Höhe)<(Endknoten Anschlusspunkt Höhe) | Sucht nach Knoten, bei dem 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 Einzugsgebiete mit Einwohnern, welche dem Regenwasserkanal zugewiesen wurden. |
| Gewerblicher Abfluss | ((Abfluss gewerblich)>0.500) | Sucht alle Einzugsgebiete 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 bis 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. "Sonderbauwerke". 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 Überstauvolumens 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 überschreitet, dann wird für den Deckel ein Wert 1000 ausgegeben. Ist der maximale Wasserspiegel größer als die Sohlhöhe mit Profilhöhe, dann wird der boolesche Wert Wahr ausgegeben, 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 ? DANN 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 einen bereits erstellten Ausdruck über das Dropdown-Menü hinzufügen oder aber direkt einen Ausdruck erstellen.
Im Beispiel sollen nur die spezifischen 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 werden bei der Zuweisung des Ausdruckes eckige Klammern [Tiefe_dyna] verwendet.
Im Dialog des Knotens wird dann diese dynamische Zuweisung sichtbar.

