GGMan - Testen und Manipulieren von Geograf-Daten
Skript Factories Filter Grabber Funktionen Macros Utils Files GUI Typen Elemente
Filter werden in Factories, Grabber und an verschiedenen anderen Stellen benutzt, um abzufragen, ob ein Geografelement benutzt werden soll. Die Filter benutzen verschiedene Parameter, die den Wertebereich eingrenzen. Es können immer mehrere Parameter mit Wertebereichen angegeben werden, die Abfragen werden dann mit Boolschen Werten verknüpft.
Alle Filter besitzen analog zu den Factories Parameter und Variablen. Die folgenden gelten in allen Filtern.
StringValue name: Dem Filter kann ein Namen vergeben werden. Einige Factories benutzen diesen Namen, um Warnungen oder Fehler zu melden.
StringValue mode: Die Art der Boolschen Verknüpfung der einzelnen Wertebereiche. Möglich sind:
ObjectValue filter: Es können weitere Unterfilter definiert werden.
Filter werden wie folgt vereinbart:
filter = new Filter ArtFilter mode = or range = 100-200 list = 1010, 1020 endUm die Eingabe zu vereinfachen, kann die Eingabe einzeilig erfolgen:
filter = new Filter ArtFilter(1010,1020) endDie in der Klammer stehenden Werte werden wie ein einzeiliger Eintrag (in der Regel list=...) behandelt. In diesem Beispiel wird der Ausdruck analog zur Zeile list=1010,1020 ausgewertet.
Nimmt alle Elemente mit einer (Geograf-)Art entgegen
StringValue range: Bereichsangabe der zulässigen Arten '1000-2000'.
StringValue list: Auflistung der zulässigen Arten '1000, 1001, 1009'.
Für den folgenden Filter sind nur Elemente mit den Arten 100 - 200 oder 1010 oder 1020 gültig.
filter = new Filter ArtFilter range = 100-200 list = 1010, 1020 end
Nimmt alle Elemente mit einer (Geograf-) Ebene und Art entgegen
StringValue range: Bereichsangabe der zulässigen Ebenen (erste Angabe) und Arten (zweite Angabe) '1-20 1000-2000'.
Für den folgenden Filter sind nur Elemente auf den Ebenen 100 - 200 mit den Arten 1010 - 1020 gültig.
filter = new Filter ArtFilter range = 100-200 1010-1020 end
Nimmt alle Elemente mit einer (Geograf-)Ebene entgegen
StringValue range: Bereichsangabe der zulässigen Ebenen '10-20'.
StringValue list: Auflistung der zulässigen Ebenen '10, 11, 19'.
Für den folgenden Filter sind nur Elemente auf den Ebenen 10 - 20 oder 101 oder 102 gültig.
filter = new Filter EbeneFilter range = 10-20 list = 101, 102 end
Nimmt alle Elemente entgegen.
StringValue list: Hier wird ein oder mehrere (mit Komma getrennte) Elementtypen ausgewählt. Zulässig sind:
StringValue id: veraltet, entspricht list.
Für den folgenden Filter sind nur Punkte und Texte gültig.
filter = new Filter ElementIdFilter list = pk, te end
Nimmt Einzelelemente entgegen.
StringValue list: Es wird ein formatierter String der Form 'id:ebene:art' verlangt.
Für den folgenden Filter sind eine Linie auf Ebene 100 mit Art 101 und ein Punkt auf Ebene 200 mit Art 201 gültig.
filter = new Filter ElemFilter list = li:0100:0101, pk:0200:0201 end
Nimmt ein Einzelelement aus einer Auswahl entgegen. Der Filter ist einer Erweiterung des ElemFilter. Es wird nur ein in der Liste vorgegebener ElementTyp, dieser jedoch mehrfach bestätigt.
StringValue list: Es wird ein formatierter String der Form 'id:ebene:art' verlangt.
Für den folgenden Filter sind Linien auf Ebene 100 mit Art 101 und Punkte auf Ebene 200 mit Art 201 gültig. Wenn eine Linie bereits bestätigt wurde, werden die Punkte zurückgewiesen.
filter = new Filter ElemAlternateFilter list = li:0100:0101, pk:0200:0201 end
Nimmt ein Einzelelement aus einer Auswahl entgegen. Der Filter ist einer Erweiterung des ElemFilter.
Es wird nur ein in der Liste vorgegebener ElementTyp bestätigt. Die Anzahl bestätigten Elemente wird gezählt. Ist die vorzugebende Anzahl erreicht,
werden Folgeelemente zurückgewiesen.
Zum Verhalten der Zählweise siehe ElemCountFilter.
StringValue list: Es werden ein LongValue max und formatierte Strings der Form 'id:ebene:art' verlangt.
Für den folgenden Filter sind Linien auf Ebene 100 mit Art 101 oder Art 102 gültig. Es wird aber nur eine der beiden Arten bestätigt. Ist bereits eine Art bestätigt worden, wird die andere zurückgewiesen. Ebefalls zurückgewiesen werden Elemente, wenn die maximale Anzahl von 4 Elementen erreicht ist.
filter = new Filter ElemAlternateCountFilter list = 4, li:0100:0101, li:0100:0102 end
Nimmt eine begrenzte Anzahl von Einzelelementen entgegen. Dieser Filter ist eine Erweiterung des ElemFilter. Zu jedem Eintrag
kann eine maximale Anzahl zu bestätigender Elemente vorgegeben werden. Der ElemCountFilter hält für jeden Eintrag einen internen Zähler. Sobald die vorgegebene Elementanzahl
erreicht ist, werden die Folgeelemente abgewiesen.
Beachte: Factories, die Filter auf Unterelemente anwenden, setzen den Zähler selbständig zurück, so dass die Anzahl pro übergeordneten Element angewendet wird.
So wendet die Factory ObjectContentTester die alternate- und optional-Filter auf jedes Objekt an.
Der ElementCountFilter zählt also die Elemente pro einzelnes Objekt.
Wenn der ElemCountFilter für mehrere Factories als Eingabefilter verwendet werden soll, kann der interne Zähler mit der Funktion @Reset zurück
gesetzt werden.
StringValue list: Es wird jeweils ein LongValuemax mit der Anzahl der maximal zu bestätigenden Element und jeweils ein formatierter String der Form 'id:ebene:art' verlangt.
Für den folgenden Filter sind bis zu zwei Linien auf Ebene 100 mit Art 101 und fünf Punkte auf Ebene 200 mit Art 201 gültig.
filter = new Filter ElemCountFilter list = 2, li:0100:0101, 5, pk:0200:0201 end
Nimmt eine begrenzte Anzahl von Elementen entgegen. Dieser Filter ist eine Erweiterung des ElemFilter. Zusätzlich wird eine
maximale Anzahl zu bestätigender Elemente vorgegeben. Alle bestätigten Elemente werden gezählt, sobald die maximale Anzahl erreicht ist, werden die Folgeelemente abgelehnt.
Zum Verhalten der Zählweise siehe ElemCountFilter.
StringValue list: Es wird ein LongValuemax mit der Anzahl der maximal zu bestätigenden Elemente und eine Liste formatierter Strings der Form 'id:ebene:art' verlangt.
Für den folgenden Filter sind Linien auf Ebene 100 mit Art 101 und Punkte auf Ebene 200 mit Art 201 gültig. Sobald der Filter drei Elemente bestätigt hat, weist er weitere Elemente zurück.
filter = new Filter ElemGroupCountFilter list = 3, li:0100:0101, pk:0200:0201 end
Nimmt alle Elemente entgegen. Es kann eine BooleanFunction vereinbart werden. Das Element wird weitergegeben, wenn die Funktion wahr ergibt.
ObjectValue function: Hier wird eine BooleanFunction verlangt.
ObjectValue &in: Das zu prüfende Element. Auf diese Variable kann die Funktion zurückgreifen.
Für den folgenden Filter sind nur Texte mit dem Textinhalt "TTTT" gültig.
filter = new Filter MultiFilter mode = and filter = new Filter ElementIdFilter list = te end filter = new Filter FunctionFilter function = @Equals(@Get(&in, allText), "TTTT") end end
Dieser Filter dient dazu, mehrere Filter miteinander kombinieren zu können. Er kennt keine weiteren als die allgemeinen Parameter.
Für den folgenden Filter sind nur Texte der Art 500 gültig.
filter = new Filter MultiFilter mode = and filter = new Filter ElementIdFilter list = te end filter = new Filter ArtFilter list = 500 end end
Nimmt Texte mit einem bestimmten Textinhalt entgegen.
StringValue list: Es wird ein formatierter String der Form 'ebene:art:text' verlangt.
Für den folgenden Filter ist ein Text auf Ebene 100 mit Art 101 mit dem Inhalt 'Straße' gültig.
filter = new Filter TextFilter list = 0100:0101:Straße end
Nimmt Texte entgegen. Jede Ebene-Art-Kombibation muss dabei für alle Texte den identischen Textinhalt vorweisen.
StringValue list: Es wird ein formatierter String der Form 'ebene:art' verlangt.
Für den folgenden Filter sind Texte auf Ebene 100 mit Art 101 gültig, alle Texte müssen dabei identischen Textinhalt aufweisen. Es würden also mehrere Texte mit dem Textinhalt 'Text1' entgegengenommen werden, weitere Texte der Ebene 100 und Art 101 würden abgewiesen werden, wenn ihr Inhalt nicht 'Text1' enthält.
filter = new Filter TextUniqueFilter list = 0100:0101 end