GGMan   -  Testen und Manipulieren von Geograf-Daten

Skript   Factories   Filter   Grabber   Funktionen   Macros   Utils   Files   GUI   Typen   Elemente  

Filter

Allgemeines
Filter allgemein
verfügbare Filter

Allgemeines

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.

Filter allgemein

Alle Filter

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
   end
Um die Eingabe zu vereinfachen, kann die Eingabe einzeilig erfolgen:
   filter = new Filter ArtFilter(1010,1020) end
Die 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.

verfügbare Filter

ArtFilter

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

EbeneArtFilter

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

EbeneFilter

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

ElementIdFilter

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

ElemFilter

Nimmt Einzelelemente entgegen.

StringValue list: Es wird ein formatierter String der Form 'id:ebene:art' verlangt.

Es können mehrere Eingaben mit Komma getrennt angegeben werden.

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

ElemAlternateFilter

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.

Es können mehrere Eingaben mit Komma getrennt angegeben werden.

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

ElemAlternateCountFilter

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.

Die maximale Anzahl ist als erstes Element anzugeben, die Elementauswahlen können mehrfach mit Komma getrennt angegeben werden.

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

ElemCountFilter

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.

Es können mehrere Eingaben mit Komma getrennt angegeben werden.

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

ElemGroupCountFilter

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.

Es können mehrere Eingaben mit Komma getrennt angegeben werden.

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

FunctionFilter

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

MultiFilter

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

TextFilter

Nimmt Texte mit einem bestimmten Textinhalt entgegen.

StringValue list: Es wird ein formatierter String der Form 'ebene:art:text' verlangt.

Es können mehrere Eingaben mit Komma getrennt angegeben werden.

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

TextUniqueFilter

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.

Es können mehrere Eingaben mit Komma getrennt angegeben werden.

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

GGMan © 2009, Jörg Schröder, WWW: GeoCalc - Softwareentwicklung Jörg Schröder, Mail: info@geocalc.de
Impressum und Hinweise: Impressum
weitere Informationen bei: Vermessungsbüro M. Wolf - J. Schröder