Select Condition |
Top Previous Next |
Die Select Condition - Anweisung ist eine komplexe Selektionsmethode die neben der Abhängigkeit zu der objektbezogenen Attributierung eine Selektionsbestimmung in Bezug zu Element, - oder Punktbezogenen Merkmalen möglich macht. Alle Abfragekriterien lassen sich „Baukastenweise“ zusammen stellen. Für die Select - Condition Selektions-Methode sind bisher die folgenden Select - Parameter implementiert: NEW und IOR (Neu selektieren oder Zufügen in bestehende Selektionen) Voraussetzung Die Datenbank muß geöffnet sein. Vor jeder schließenden und nach jeder öffnenden Klammer muß ein Leerzeichen stehen, sonst werden die Parameter nicht korrekt ausgewertet.
Bemerkung Die Lesbarkeit des Select ... condition-Befehls gewinnt, wenn das FLAG 25 für mehrzeilige Kommandos in Batchdateien auf den Wert 1 gesetzt wird. (Siehe dazu in der Tabellenreferenz Globale Flags GLOBAL_FLAG_MULTILINE 25.) Das Ignorieren bestimmter Elementtypen in der Selektion läßt sich über die globale Variable SYSTEM.SelectOptions steuern. Dabei gilt 1 String-Elemente ignorieren 2 Symbol-Elemente ignorieren 4 Text-Elemente ignorieren 8 Raster-Elemente ignorieren 16 Set-Elemente ignorieren 32 Attribut-Elemente ignorieren Kombinationen sind über die Summe möglich. Wichtig hierbei ist, dass die zu ignorierenden Elementtypen nicht im Select-Kommando aufgelistet werden, da sonst die Überprüfung der Anzahl stattfindet und evtl. nicht das gewünscht Ergebnis erzielt wird. Parameter Erster Parameter der „Select-Condition“ Anweisung ist eine Kombination aus O, E und P. Diese Parameter legen fest, für wen die folgenden Parameter Gültigkeit besitzen: Objekte (O), Elemente (E) und oder Punkte (P). Es folgen beliebig viele Blöcke, die folgender Form entsprechen müssen: “#( eigenschaft1 wert1 eigenschaft2 wert2 .... )“ Operator Anzahl statt eigenschaft1 wert1 ist auch ein geschachtelter Block der Form ( eigenschaft1 Operator wert1 ) möglich. Wichtig: Zwischen den Parametern und vor jeder schließenden und nach jeder öffnenden Klammer muß ein Leerzeichen stehen, sonst werden die Parameter nicht korrekt ausgewertet! Enthalten Werte Leerzeichen (z.B. Textinhalte), so sind diese in doppelte Anführungszeichen zu setzen. (Doppelt, da bereits der Block in Anführungszeichen steht.) Funktionsweise
Die Funktion “Select NEW condition” greift per Definition auf die üblichen Pseudoattribute zurück, welche für Objekte, Texte, Strings und Punkte die bspw. bei gewöhnlichen DBquery –Abfragen verwendet werden. Diese „Pseudoattribut – Teilabfrageergebnisse“ werden nun in der „Condition - Gesamtabfragefunktionalität“, zeilenweise für die einzelnen Objektausprägungen, wie gewünscht mit entsprechenden Bedingungen, wie gleich, größer als, kleiner als, usw. angegeben.
Pseudoattribute Die aktuellen gültigen Pseudoattribute für Objekte, Elemente, Punkte usw. finden Sie in der Tabellenreferenz unter dem Stichwort „Pseudoattribute“. Pseudoattribute finden ihre Anwendung bei GIS typischen DBquery – Abfragen. Daher finden sie häufig verwendeten Pseudoattribute auch im Moskito Attributabfrage Dialog, im Menü unter Analyse -> Attributabfrage. Die dort zusammenstellbaren DBquery - Abfragen enthalten die Pseudoattribute die auch für Condition –Anweisung verwendet werden können. Eine typische Abfrage ist bspw. : DBquery($keys from open object) Diese Abfrage liefert alle Objektschlüssel vom geöffneten Objekt. Das Pseudoattribut ist in diesem Fall $keys. Mit Bedingungen, oder Operatoren ist die angegebenen Häufigkeit des Vorkommens der ausgewählten Merkmale (verwendete Pseudoattribute) gemeint. Diese können Numerisch mit Gleich, Größer kleiner, Kleiner als, usw. bestimmt werden. Die Bedingungen werden als Kürzel, größtenteils ähnlich der bekannten mathematischen MOSKITO Funktionen (z.B. m_eq) , jedoch nur Groß geschrieben und ohne „m_“ davor angeben. Die für die Select - Condition Abfragemethode gültigen Operatoren sind:
Operatoren EQ (equal) NE (not equal) GE (greater equal) GT (greater then) LE (lower equal) LT (lower than) IN (liste) NOTIN (Negativliste) BETWEEN (bereich)
Erläuterungsbeispiel:
Möchten Sie bspw. Objekte herausselektieren welche den Objektschlüssel 13120 haben und als Zusatzbedingungen den DKY - Wert 41 und den DKA - Wert 2 besitzen, und als weitere Zusatzbedingung sollen die gewünschten Objekte über nur einen Text verfügen und genau 7 Attribute besitzen, dann würde die Selektion wie folgt aussehen:
Select NEW condition/OE "#( $typ OBJECT $keys 13120 )" EQ 1 \ "#( $typ STRING $dky 41 $dka 2 )" EQ 1 \ "#( $typ TEXT )" EQ 1 \ "#( $typ ATTRIBUT )" EQ 7
In der ersten Zeile wird festgelegt welche Planinhalte berücksichtigt werden (/OE = Objekte und Elemente) und das vom Typ OBJECT nur die Objekte die genau einen Schlüssel, mit dem Wert 13120, herausgesucht werden. Die zweite Zeile setzt die Bedingung, so das diese Objekte nur einen STRING mit dem DKY Wert 41 und dem DKA Wert 2 haben dürfen. Die dritte Zeile legt fest das diese Objekte nur einen Text haben dürfen und die vierte Zeile legt fest das diese Objekte über sieben Attribute verfügen müssen.
HINWEIS: Alle Parameter innerhalb der Klammern werden überprüft. Wird kein $typ angegeben würden die weiteren Parameter auf jeden Elementtyp angewendet werden. Dialog 184 Objekte selektiert. Nach einer Selektion wir die Anzahl der selektierten Objekte ausgegeben
Beispiele Gleiche Abfragebedingungen wie im Erläuterungsbeispiel (siehe oben), nur mit einem bestimmten Attributnamen (Test)
Select NEW condition/OE "#( $typ OBJECT $keys 13120 )" EQ 1 \ "#( $typ STRING $dky 41 $dka 2 )" EQ 1 \ "#( $typ TEXT )" EQ 1 \ "#( $typ ATTRIBUT $name Test )" EQ 1 \ "#( $typ ATTRIBUT )" GE 1
Gleiche Abfragebedingungen wie im Erläuterungsbeispiel (siehe oben), nur mit einem bestimmten Attributnamen (Test) und einem bestimmten Attributwert (2).
Select NEW condition/OE "#( $typ OBJECT $keys 13120 )" EQ 1 \ "#( $typ STRING $dky 41 $dka 2 )" EQ 1 \ "#( $typ TEXT )" EQ 1 \ "#( $typ ATTRIBUT $name Test $value 2 )" EQ 1 \ "#( $typ ATTRIBUT )" GE 1
Alle Objekte Selektieren, die mindestens ein Element mit einem Punkt mit dem Punktsymbol 2 oder 3 haben:
Select NEW condition/P "#( $typ POINT $inf.EB 28 $inf.ST 4 $inf.SM 1 )" GE 1 \ "#( $typ POINT ( $psy IN 2 3 ) )" GE 1
Alle Objekte Selektieren, die genau ein Linien-Element mit den Elementattributen EB = 11, ST = 11 und SM=1 und mindestens 1 Attribut haben:
Select NEW condition/EO "#( $typ OBJECT )" EQ 1 \ "#( $typ STRING $inf.EB 11 $inf.ST 11 $inf.SM 1 )" EQ 1 \ "#( $typ ATTRIBUT )" GE 1
In Allen Objekten mit Key 100 diejenigen selektieren, die mindestens einen Attributtext mit den u.g. Eigenschaften und die dazugehörenden Attribute und insgesamt mindestens 3 Attribute haben:
Select NEW KEY/100 Select AND condition/EO "#( $typ OBJECT )" EQ 1 \ "#( $typ TEXT $dky 218 $dka 0 $size 250 $font 4 $isatx 1 $atext ""%TYP%%QUE%"" )" GE 0 \ "#( $typ ATTRIBUT $name TYP )" EQ 1 \ "#( $typ ATTRIBUT $name QUE )" EQ 1 \ "#( $typ ATTRIBUT )" GE 3
Siehe auch FindByAttributes [FND]
|