FindByAttributes [FND]

Top  Previous  Next

Selektieren von Objekten nach Attributen.

Die Selektionsliste besteht aus allen selektierten Objekten. Neue Objekte werden mit Select/SEL selektiert oder auch mit FindByAttributes/FND. Der Unterschied zu Select/SEL besteht darin, dass die Objekte jetzt nach den Attributen gesucht werden. Jedes Objekt kann mehrere Attribute besitzen. Die Attribute werden mit QTX hinzugefügt und mit VQL können sie angezeigt werden. Ein Objekt hat niemals doppelte Attribute. Mehrere Objekte können aber wieder gleiche Attribute haben. Das Attribut besteht aus zwei Komponenten, dem Attributnamen und dem Attributwert. Ein Attribut könnte z.B. so aussehen: Attributname = 'Eigentümer' und Attributwert = 'Hans Müller'. Hier ist zu sehen, dass Umlaute und auch alle Sonderzeichen bei den Attributwerten erlaubt sind.

Die Suche geschieht folgendermassen: FindByAttributes bekommt als Parameter das Attribut, nach dem es suchen soll. Die Parameterübergabe kann auf drei verschiedene Arten geschehen. Erstens, in der Form Attributname/Attributwert (ohne Leerzeichen). Zweitens, durch Angabe lediglich des Attributnamens. Und drittens, durch die Angabe von LBL/<Attributname>. Der Unterschied zwischen den letzten beiden ist der, wenn der Attributname wieder wie ein Schlüsselwort geschrieben wird, kann mit dem Präfix LBL/ keine Verwechslung stattfinden. Wenn der Attributwert nicht mitangegeben wird, erfolgt später ein Dialog. In diesem Dialog können auch noch weitere Attribute eingegeben werden.

Bei den Attributwerten darf die Suchanfrage auch mit Platzhaltern (Wildcards) umschrieben werden. Erlaubt sind '*' für beliebig viele Buchstaben und '?' für genau einen Buchstaben. Wird z.B. das Attribut Eigentümer/Mül* gesucht, werden alle Objekte selektiert, deren Attributwerte mit 'Mül' beginnen. Mit dem '?' kann genau ein Buchstabe maskiert werden, an dessen Stelle jedes Zeichen stehen darf.

Kommen Leerzeichen vor, so muss der gesamte Text in Anführungszeichen stehen, also "Eigentümer/Hans Müller". Wenn hier keine Anführungszeichen stehen würden, wäre 'Müller' ein neuer Attributname.

Normalerweise wird die alte Selektionsliste durch eine neue ersetzt, mit den Objekten die FindByAttributes ermittelt hat. Es kann aber mit den Schaltern /AND, /OR und /NOT die bestehende Selektionsliste verändert werden.

Voraussetzung

Um eine schnellere Suche durchzuführen, sollten schon bestimmte Vorselektionen getätigt sein (z.B. sollten die Objekte deselektiert sein, die sowieso nicht in Betracht kommen).

Parameter

LABEL/TEXT

Auf diese Weise wird der Attributname gefolgt vom '/' und direkt danach der Attributwert das gesuchte Attribut angegeben. Weil zum Attributname ein Attributwert angegeben wurde, wird hierzu kein Dialog kommen.

LBL/<text>

Nach 'LBL/' muss direkt der Attributname folgen. Im späteren Dialog wird dieser Attributname wiederholt und der Benutzer aufgefordert, den entsprechenden Attributwert einzugegeben. Dieser Parameter ist hauptsächlich dafür um Mehrdeutigkeiten bei Attributnamen und Schlüsselwörter zu vermeiden. Ansonsten verhält er sich genauso wie der nächste Parameter

<text>

Mit diesem Parameter wird der Attributname angegeben. Der Attributwert wird im späteren Dialog vom Benutzer abgefragt.

/HIGHLIGHT

Mit diesem Schalter wird keine neue Selektionsliste erstellt. Alle gefundenen Objekte werden als gehighlightet dargestellt.

/AND

Mit dem Schalter /AND wird die bestehende Selektionsliste verändert. Es werden alle Objekte aus der Selektionsliste entfernt, die nicht die gesuchten Attribute haben. Es bleiben die Objekte in der Selektionsliste, die durch die Suchanfrage gefunden werden. AND hat Vorrang vor NOT

/OR

Mit dem Schalter /OR wird die bestehende Selektionsliste verändert. Es werden alle Objekte in die Selektionsliste aufgenommen, die die gesuchten Attribute haben. Alle Objekte, die sich schon in der Selektionsliste befinden und nicht die gesuchten Attribute besitzen, bleiben trotzdem in der Selektionsliste. OR hat Vorrang vor AND und NOT

/NOT

Mit dem Schalter /NOT wird die bestehende Selektionsliste verändert. Es werden die Objekte aus der Selektionsliste entfernt, die die gesuchten Attribute besitzen. Die Selekttionsliste besteht danach aus den Objekten, die nicht die gesuchten Attribute haben. NOT hat die geringste Priorität von OR, AND und NOT

/TEXT

Mit diesem Schalter wird angegeben, dass es sich bei den Attributen um Text handelt. Der Vergleich findet auf Ebene eines Textvergleichs statt.

/NUMBER

Mit diesem Schalter wird angegeben, dass es sich bei den Attributen um Zahlen handelt. Der Vergleich findet also mit Zahlen statt.

/DATE

Mit diesem Schalter wird angegeben, dass es sich bei den Attributen um Datumsangaben handelt. Der Vergleich findet also mit Datumswerten statt.

Rückgabewert

Wert

Beschreibung

<Zahl>

Anzahl der selektierten Objekte

Dialog

Geben Sie den Attributtext ein (<CON> Beenden):

Dieser Dialog fordert Sie dazu auf weitere Attribute einzugeben. Dies geschieht, nachdem die Kommandozeile ausgewertet ist. Wenn Sie keine weiteren Attribute eingeben wollen, bestätigen Sie diesen Dialog mit <CON>, danach wird die Selektion ausgeführt.

Der Attributtext lautet:

Nachdem die Kommandozeile ausgewertet wurde, werden die noch fehlenden Attributwerte abgefragt. Dazu wird zu jedem fehlenden Attributwert der zugehörige Attributname mit diesem Dialog ausgegeben. Im darauffolgenden Dialog wird dann der Attributwert abgefragt.

Geben Sie das Attribut ein:

In diesem Dialog müssen Sie den Attributwert eingeben. Im Dialog zuvor wurde der entstprechende Attributname aufgeführt, der noch kein Attributwert hat.

Beispiel 1

Aufruf nur mit dem Attributnamen

Befehl eingeben: FindByAttributes Linienzug

FindByAttributes Linienzug

Der Attributtext lautet: Linienzug

Geben Sie das Attribut ein:

sehr lang

Geben Sie den Attributtext ein (<CON> Beenden):

Da  der Aufruf nur mit dem Attributnamen stattfand, wurde im Dialog der Suchtext mit dem Attributwert vervollständigt. Da keine weiteren Attribute in der Kommandozeile angegeben wurde, wurde im Dialog nach weiteren Attributen gefragt. Die Abfrage wurde mit CON beendet und die Selektion beginnt.

Beispiel 2

Selektiert werden so alle Objekte mit dem Attribut (STN=Strassennamen) und Attributwert (Alter Postweg):

FindByAttributes "STN/Alter Postweg" /TEXT

In der Menü, - und Dialog Sprache sieht das wie folgt aus:

FindByAttributes "STN/%104c%"  /TEXT

 

Bemerkung

Wenn der Vergleich mit Zahlen oder Datumsangaben stattfindet, kann auch auf grösser oder kleiner verglichen werden. Dazu muss beim Attriubtwert ein '<' oder '>' direkt vorangestellt werden. Auf Gleichheit wird sonst verglichen.

Die Datumsangabe muss in folgender Form angegeben werden:{<|>} T[T] [.-/] [M[M] | MMM[M...]] [.-/] [JJ[JJ]]. Die Leerzeichen sind nur der Deutlichkeit wegen vorhanden, sie dürfen nicht mitangegeben werden. Folgende Beispiele verdeutlichen die Eingabe, wobei der Einfachheit nur der '.' verwendet wird: 09.M.J oder 9.M.J – sind mögliche Tagesangabe.

T.08.J, T.8.J, T.September.J oder T.Sep.J – sind Beispiele wie Monate angegeben werden dürfen. Bei den letzten beiden sind immer nur die ersten drei Buchstaben signifikant.

T.M.2001, T.M.00 oder T.M.55 – sind Beispiele für die Jahresangabe. Liegt bei einer zweistelligen Zahl der Wert zwischen 50 und 100, wird sie auf 1900 aufaddiert.

Hier ergibt also 55 das Jahr 1955. Ist der Wert kleiner als 50, wird er auf 2000 dazuaddiert.

Das Datum lässt sich auch als Zahl darstellen und zwar in der Form JJJJMMTT, z.B. 20001231.

Mit den Angaben /DATE, /NUMBER oder /TEXT wird der Vergleich auf diese Art erzwungen.

Siehe auch

Select

SelectObjectsInPolygon