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

SelectElements

FindByAttributes  [FND]