- einige Tipps und Hinweise zur Erstellung von Beschriftung finden Sie auch hier
Symbole für diesen DesignLayer. Wird hier kein Symbol definiert, werden die Einstellungen aus "Legende" der Ebene verwendet, bzw. wenn auch diese nicht vorhanden ist - die Symboldatei der Ebene, dann die Standard-Palette des Projektes.
Klicken Sie in diesem Feld auf die Schaltfläche , so wird der Symboleditor gewählt. Die Einrichtung der Beschriftung machen Sie im Reiter Text.
Legt die Symbolnummer für die Beschriftung fest. Diese kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden.
Alternativ kann über den Symboleditor im Feld Symboldefinition die Schriftart eingerichtet werden.
Legt den Namen der IWAN-Skript-Datei fest. Die IWAN-Skript-Anweisungen "Go;" und "End;" dürfen in dieser Datei nicht enthalten sein. Dieser optionale Parameter überschreibt "theTextField". Das Skript wird vor jeder Ausführung gelesen. Wenn die gewünschten Ergebnisse eintreten, sollte aus Performancegründen der Inhalt mit "theTextField" konstant definiert werden.
Legt den Beschriftungstext für die Anzeige im cardo Auskunftssystem fest. Zusätzlich zu diesem Feld müssen die Felder theSizeField, theBasePoint und theAlign angegeben werden.
Dieser kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden. Durch einen Klick auf die Schaltfläche öffnet sich ein Dialog. Hier können Sie den Wertetyp (konstant, Spalte oder Script) wählen. Für die Auswahl der Spalten klicken Sie am Rand der Zeile auf das Symbol
und wählen den gewünschten Spaltennamen aus.
Im Feld theTextField können Sie einen Ausdruck definieren. Wählen Sie als Wertetyp Skriptblock und geben Sie ein Skript für den Beschreibungstext ein:
Beispiel 1:
if (compare($STR_BEF, "NEIN",eq)) ;
printf("%s\n%s\n%.1f%s", "Wanderwegkategorie:", $WEG_KAT, $SHAPE_LENG, "m")
endif;
Das Skipt muss ein IWAN6 Skript sein! Ggf. sprechen Sie uns dazu an.
Erläuterung: Wenn im Feld STR_BEF (Straßenbefahrung für Wanderwege) ein NEIN (Wanderweg nicht auf der Straße, Fußweg vorhanden) steht, soll die Wanderwegkategorie mit entsprechender Länge ausgegeben werden.
Beispiel 2: Beschriftung aus zwei Sachdatenspalten (BW und Gemeinde)
printf("%s%s%s%s", "Bauwerk ", $BW, " in der Gemeinde ", $GEMEINDE)
Beispiel 3: Schrift (Beschriftung) soll ab einem Maßstab > 1:250000 nicht mehr angezeigt werden (Schrift maßstababhängig Maßstabsabhängigkeit)
if (compare($CURR_MAPSCALE,250000,GT));endscript();endif;
print($NAME_1);
Name_1: Spaltenname, aus dem die Beschriftung kommt
Beispiel 4: Ausgabe eines Wertes in Prozent, bspw. 0,48762 wird zu 48,8% (Rundung auf 1 Stelle nach dem Komma)
printf("%.1f%s", ((($Prozentwert*1000)+0.5)/10), "%" )
Beispiel 5: Beschriftung soll nur zwischen den Bereichen 1:10000 und 1:50000 angezeigt werden
if(compare($CURR_MAPSCALE,50000,GT));endscript();endif;
if(compare($CURR_MAPSCALE,10000,LT)); endscript();endif;
print($Spaltenname);
Beispiel 6: Definition mehrerer Maßstabsbereiche um die Beschriftung anhand des Maßstabs zu zeichnen. Genutzt wurde hier eine verschachtelte IIF-Anweisung.
iif (
Bedingung:value,
TruePart:value,
FalsePart:value
);
Bedingung: die zu prüfende Bedingung.
TruePart: Rückgabewert, wenn der Ausdruck Wahr ergibt.
FalsePart: Rückgabewert, wenn der Ausdruck Falsch ergibt.
printf(IIF(Compare($CURR_MAPSCALE,10000,LT),(IIF(Compare(1000,500,GT),"Straßenbezeichnungdrucken10000","keine Ausgabe")),(IIF(Compare($CURR_MAPSCALE,20001,LT),(IIF(Compare(2000,1000,GT),"Straßenbezeichnungdrucken20000","keine Ausgabe")),(IIF(Compare($CURR_MAPSCALE,30001,LT),(IIF(Compare(3000,1500,GT),"Straßenbezeichnungdrucken30000","keine Ausgabe")),"keine"))))));
Im Beispiel wird in Abhängigkeit eines Maßstabes die Bezeichnung gedruckt, aber nur dann, wenn die Länge des Abschnitts entsprechend erfüllt ist. Das Feld Laenge wird On the Fly in der Datenquelle berechnet.
printf(IIF(Compare($CURR_MAPSCALE,10000,LT),(IIF(Compare($LAENGE,500,GT),"Straßenbezeichnungdrucken10000","keine Ausgabe")),(IIF(Compare($CURR_MAPSCALE,20001,LT),(IIF(Compare($LAENGE,1000,GT),"Straßenbezeichnungdrucken20000","keine Ausgabe")),(IIF(Compare($CURR_MAPSCALE,30001,LT),(IIF(Compare($LAENGE,1500,GT),"Straßenbezeichnungdrucken30000","keine Ausgabe")),"keine"))))));
Beispiel 7: Beschriftung anzeigen, wenn das Wort school in der Spalte type steht, dann nichts schreiben.
if (compare($type, "school", NE));
print($type);
endif;
Mehr zum Thema?
Legt die Größe der Beschriftung in Karteneinheiten fest. Diese kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden.
Haben Sie eine Beschriftung mit dem Symboleditor erstellt (siehe Feld Symboldefinition), so müssen Sie in dieses Feld eine 0 eintragen, sonst wird diese Einstellung primär ausgewertet.
Legt den Winkel für die Beschriftung fest. Dieser kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden. Bei Linien kann auch "INDIRECTION" angegeben werden, um den Winkel entsprechend des Verlaufs der Linie zu verwenden.
Hinweis: wird der Wert aus einer Spalte bezogen, erfolgt eine Umrechnung in RAD!
Beispiele:
theAngleField:leer
theAngleField:45°
theAngleField: INDIRECTION
Legt den Punkt der Geometrie für das DesignObjekt fest, der als Bezugspunkt verwendet werden soll. Mögliche Werte sind:
Beispiel Linienbeschriftung, theBasePoint =Feature
Legt die Ausrichtung des Design Objekts zum Bezugspunkt fest.
Eingabeformat:"X-Ausrichtung/Y-Ausrichtung", bspw.:
Diese kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden.
Beispiel:
weitere Parameter: theBasePoint: first
Legt falls erforderlich einen Versatz in Karteneinheiten in X-Richtung relativ zum Bezugspunkt fest. Dieser kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden. (Negative Zahlen -> Versatz nach Links)
Tipp: Ist die Symbolgröße in Pixel angegeben, so bietet es sich an die Funktion ToGeoDistance(10) zu nutzen. Hierbei wird der Abstand von Karteneinheiten in Pixel umgerechnet und ist in den unterschiedlichen Maßstabsbereichen/Zoomstufen immer gleich groß.
Für Maßstabsabhängige Abstände würde sich auch folgendes Skript eignen:
iif(compare($CURR_MAPSCALE,5000,LT), 15, 30);
(Wenn der Maßstab < 5000 ist, dann ist XOffset = 15, sonst 30)
Legt falls erforderlich einen Versatz in Karteneinheiten in Y-Richtung relativ zum Bezugspunkt fest. Dieser kann entweder konstant sein, aus einer Spalte bezogen werden oder via Script generiert werden.
Legt fest, dass das in "theFile" oder "theTextField" angegebene Skript die Erstellung der Grafik vornimmt. In diesem Fall werden der Skriptengine eine Reihe Variablen übergeben. Dieser Wert beeinflusst das Leistungsverhalten. Weitere Informationen dazu finden Sie unter: http://www.webmapserver.de/HOWTO$DESIGNLAYER