Klassifikationen
Zur Klassifikation von Elementen einer Ebene kann eine Legendendatei
angegeben werden. Die Legendendateien haben immer die Extension ".ILF".
Dies steht für IwanLegendFile.
Bei diesen Dateien handelt es sich ebenfalls um einfache ASCII Dateien,
welche z.B. mit einem einfachen Text-Editor erstellt werden können.
Die Legendendateien werden einmalig beim Laden einer Ebenen gelesen.
Veränderungen wirken sich erst nach dem Neuladen der Ebene aus. Es gibt zwei
Typen von Klassifikationen:
- Eindeutiger Wert,
- Bereich ("von bis")
Bei beiden Typen muss in der ersten Zeile der Legendetyp in
Großschreibung angegeben werden. Der nächste Wert ist jeweils der Name des
Bezugsfeld in der Ebene. Die Legendendatei wird durch die
theSymbolFile bei der Ebenendefinition
angegeben. Auch eine Inline-Definition ist möglich, weiteres dazu am Ende dieser
Seite.
Zusätzliche Steuerparameter
Ab Version 3.2.0 können in der
ersten Zeile weitere Schlüsselwörter eingefügt werden:
{FORCEORDER|NOORDER} Legt fest,
ob bei der Ausgabe der Legende die Reihenfolge wie beim Einlesen erhalten bleibt
(FORCEORDER), oder ob die Ausgabe alphanumerisch sortiert erfolgen soll. (nur
für UNIQUE)
{FORCECOUNTING|NOCOUNTING} ForceCounting
legt fest, dass nur für die Einheiten, welche auch mind. eine Geometrie
enthalten, die Ausgabe in der Legende erfolgen soll. Zudem wird in der
Legende die Anzahl der Elemente je Eintrag mit ausgegeben. Diese Option wirkt
nur auf ShapeLayer.
NoCounting ist die Standardeinstellung. Dabei werden immer alle Einträge der
Legendendatei in der von IWAN automatisch generierten Legende
angezeigt.
Ab Version 3.3.1 steht zusätzlich: SYMBOLRULE{minScale,maxScale,alternateSmbIndex}
zur Verfügung. Diese Angabe legt fest, das für einen bestimmten
Maßstabsbereich nur ein einfaches Symbol zum Einsatz kommt.
Ab der Iwan Version
3.4.x ist die Verwendung von ILF Dateien im Zusammenhang
mit mehr als einem Symbol möglich. Dabei werden verschiedene neue Optionen in
der Kopfzeile definiert.
Die Schreibweise scheint auf den ersten Blick berechtigter Weise nicht sehr
komfortabel, aber die damit gewährleistete Abwärtskompatibilität ist uns in der
Entwicklung sehr wichtig.
Die Verwendung der gebotenen Möglichkeit umgeht ein bekanntes
Darstellungsproblem von geschichteten Symbolen, dazu finden Sie [hier] weitere
Details.
Neu sind dabei die Schlüsselwörter:
SYMBOLLAYERCOUNT:n
Dieser Parameter ist im Fall des Einsatzes von
mehreren Symbolebenen nicht optional und gibt die Anzahl der Layer vor.
Jeder folgende Klassifikationseintrag in dieser ILF Datei muss genau über die
durch n festgelegte Anzahl von Symbolen verfügen. Die
Symbolnummern werden dabei durch ein | - Zeichen getrennt, siehe
Beispiel.
... und ...
LAYERRULES{index,showInLegend,minScale,maxScale;...}
Dieser Parameter ist optional. Die
Argumente stellen ein Viererpaar von kommagetrennten Werten pro Symbollayer dar,
die zu beschreibenden Layer werden durch ein Semikolon getrennt.
- index - der Null basierte Index
des Symbollayers für welche die folgenden Werte zutreffen
- showInLegend - ein Boolscher Wert
(true/false) welcher angibt das dieser Symbollayer in der Legende mit
aufgenommen werden soll. Die Legendensymbole für diesen Layer werden je
Klassifikationseintrag in der angegebenen Reihenfolge übereinander dargestellt,
wenn an dieser Stelle keine Ausnahme (durch Angabe von false) definiert
wird
- minScale - die unterer
Maßstabsgrenze ...
- maxScale - und die obere
Maßstabsgrenze in der dieser Symbollayer dargestellt werden soll. Die Werte -1
definieren "unendlich" groß bzw. klein.
Die Angabe kann für jeden Layer optional erfolgen.
Standardwerte sind: - immmer in Legende anzeigen, - keine Maßstabsbegrenzung.
Als Beispiel folgende Anweisung
(type ist entsprechend der untenstehenden Definition zu
ersetzten):
type SYMBOLLAYERCOUNT:2
LAYERRULES{0,TRUE,-1,-1;1,TRUE,-1,100000} OBJART 3201 120|121
Schienenbahn 3205 120|121 Bahnstrecke ...
Für den Platzhalter Type ist
entsprechend den Ausführungen unten IWAN_LEGEND_UNIQUE oder IWAN_LEGEND_RANGE einzusetzten.
Dabei wird festgelegt, dass der
später zugewiesene Layer zwei Zeichendurchgänge erfährt. Die
Schienenbahn/Bahnstrecke wird im Maßstabsbereich von >100000 nur mit Symbol
Nummer 120 dargestellt, darunter wird diese Ebene einmal vollständig mit Symbol
Nr. 120 und danach mit Symbol Nr. 121 gezeichnet. Das Legendensymbol wird für
jede Zeile als Überlagerung beider Symbole dargestellt.
Ab Version 4.0.3 ist das Schlüsselwort ALLOWQUERYOPTIMIZE
verfügbar.
Wenn
SYMBOLLAYERCOUNT definiert wurde, kann je nach Datenquelle eine
Optimierung bei dem Zeichenvorgang erfolgen.
Umgesetzt z.Z. bei dem Ebenentyp
Oracle SDO.
Bei Zeichenvorgängen wird das
generierte SQL Statement um " ... BEZUGSSPALTE IN
(Alle,In,Frage,Kommenden,Werte,Bei,DiesemMaßstab)" erweitert.
Sie sollten einen Index auf die
Bezugsspalte vorsehen.
Ab Version 4.1.4.201
ENABLESTRINGESCAPE ermöglicht das Niederschreiben der
Werte mit Escape-Zeichen um Sonderzeichen zu maskieren. Ausgewertet werden
Maskierungen für TAB, LF, CR und dem Backslash.
WARNINGSASERROR behandelt Warnungen als Fehler.
Konkret ist dies dann gegeben, wenn nicht alle Zeilen korrekte Werte enhalten.
Bisher wurde nur eine Warnung im Tracefile ausgegeben.
Eindeutiger WertAb der dritten Zeile folgen die Einträge in der
Form:
FELDWERT{TAB}SYMBOLNUMMER{TAB}BESCHRIFTUNG{CRLF}
IWAN_LEGEND_UNIQUE
OBJART
3501 51 Bahnhofsanlage
3502 50 Raststätte
3514 52 Brücke/Überführung/Unterführung
Ab der Version 4.0.2.186 kann als Wert auch $NULL angegeben werden. In
diesem Fall werden Datenbank NULL Werte entsprechend zugewiesen. Die Angabe
eines leeren Wertes führt zur Konvertierung in den Zieldatentypen. (z.B. wird ""
als Ganzahl 0 interpretiert)
BereichsklassifizierungDiese Art der Klassifizierung ist nur für
Numerische Datentypen möglich. Es muss eine Angabe des Datentyp erfolgen.
IWAN unterscheiden zwischen Fließkommazahlen und Ganzzahlen. Für Ganzzahlige
Argumente ist das Schlüsselwort LONG, für Fließkommazahlen das Wort
FLOAT zu verwenden. Die Werte werden in folgender Form geprüft:
VAL>=LOWER AND VAL<=HIGHER, wie zu erkennen ist, sollte die Liste
entsprechend Sortiert vorliegen. Die Angabe vierten Zeile folgen die Einträge
in der Form: LOWER{TAB}HIGHER{TAB}SYMBOL{TAB}BESCHRIFTUNG{CRLF}
IWAN_LEGEND_RANGE
GUETE
LONG
1 10 1 gering
10 100 2 mittel
100 900 3 hoch
Allgemeine Hinweise
In der letzten Zeile muss ebenfalls ein Zeilenumbruch erfolgen.
Kommentare werden durch ein vorangestelltes
/* Zeichen pro Zeile eingeleitet. Es ist zu
beachten, dass Kommentare nur im Datenteil ausgewertet werden.
Ab Version 3.2.5 kann der Pseudowert $ALLOTHER verwendet werden. Dabei
werden alle anderen Werte mit diesem Symbol dargestellt.
Die Syntax dafür lautet: $ALLOTHER{TAB}SYMBOL{TAB}BESCHRIFTUNG{CRLF}
Inline-Definition
Ab der Iwan Version 3.3.3.450 ist die Angabe von Inlinedefinitionen möglich.
Dabei muss keine separate Datei mehr erstellt werden, die Angabe des Inhaltes
kann direkt in der .iws Datei mit erfolgen. Dazu muss als erstes Wort "INLINE:"
angegeben werden. Danach kommt, in der gleichen Zeile, der Inhalt der Datei.
Diese Schreibweise ist an Stelle des Dateinamen zu verwenden.
|