Allgemeines
Attributblöcke sind neben Einzeltexten eine Möglichkeit, Objekte aus einer GISX2-Datenquelle mit Beschriftungen zu versehen. Dazu wird ein Symbol erzeugt, dass mehrere Texte mit entweder statischen und/oder dynamischen Inhalten besitzt.
GISX3 unterstützt derzeit das bereits von GISX2 Worldview bekannte XML-Format für Attributblöcke. Damit können diese entweder in einem XML-Editor geschrieben oder bestehende, im CAD entworfene Attributblöcke mittels den Konverters "DWG2XML" in XML-Dateien überführt werden. (Details zu "DWG2XML" erfragen Sie ggf. bei GEOGRAT. Dieses Programm wird derzeit nicht mit GISX3 ausgeliefert.)
Um einem Objekt einen Attributblock zuzuweisen, muss dieser - wie in GISX 2.x üblich - in der Spalte C30 der C-Tabelle zum jeweiligen Element namentlich eingetragen sein (ohne die Endung .xml). Das entspechende Symbol (also die .xml-Datei) muss im Ordner <GISX3HOME>\symbols abgelegt sein. Attributblöcke besitzen üblicherweise das Benennungsschema <Tabelle>_<Nr>.xml, also bspw. "e0101_01.xml", um sie leichter von anderen XML-Symbolen zu unterscheiden, dies ist jedoch nicht zwingend.
Aufbau einer XML-Datei für einen Attributblock
Die Grundstruktur einer XML-Definition für einen Attributblock ist im Folgenden Codeblock zu sehen. Nach den XML-Header-Informationen folgt ein Tag <symbollibary>, in dem genau ein Symbol mit dem unter "name" angegebenen Symbolnamen befindet. Dieser Symbolname sollte mit dem Namen der XML-Datein übereinstimmen, relevant ist aber der hier angegebene Symbolname! Es folgen ein oder mehrere Definitionen dynamischer (Tag <attdef>) und/oder statischer (Tag <text>) Texte. Dynamische Texte (Attribute) erhalten Ihren Inhalt zur Laufzeit aus der darin referenzierten Spalte des Objekts, für das sie gezeichnet werden. Damit lässt sich bspw. die Breite einer Haltung beschriften. Statische Texte hingegen haben einen festen Textinhalt, wie er oft für Einheiten verwendet wird. Ein Attributblock kann aus beliebig vielen dynamischen und/oder statischen Texten bestehen. Diese sollten sich sinnvollerweise natürlich nicht räumlich überlappen.
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE symbollibary SYSTEM "geograt.dtd"> <symbollibary> <symbol name="SYMBOLNAME"> <attdef ... > ... Definition eines dynamischen Attributs ... </attdef> <text ...> ... Definition eines statischen Texts ... </text> ... weitere dynamische oder statische Texte ... </symbol> </symbollibary>
Im Folgenden ein konkretes, kommentiertes Beispiel mit einem dynamischen und einem statischen Text.
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE symbollibary SYSTEM "geograt.dtd"> <symbollibary> <symbol name="E0102_04"> <text farbnummer="0" <!-- Statischer Text. CAD-Farbnummer: 0=schwarz, 1=rot usw. --> drehwinkel="0.000" <!-- Drehwinkel des Texts. Üblicherweise 0, da der Block i.d.R. als Ganzes gedreht wird. --> neigungswinkel="0.000" <!-- Textneigung. Standardwert 0 --> x_skalierfaktor="1.00" <!-- Horizontale Textskalierung. Standardwert 1 --> fontname="ISO8" <!-- Textfont. Das sollte einer der auf dem Server installierten Fonts sein, z.B. Arial, Courier New -->) h_just="LEFT" v_just="BASE"> <!-- Horizontale und vertikale Ausrichtung, siehe unten --> <startpunkt> <!-- Einfügepunkt des Texts relative zum Einfügepunkt des ganzen Blocks. Angabe in m --> <x>-1.534</x> <y>1.282</y> </startpunkt> <texthoehe>1.00</texthoehe> <!-- Texthöhe in m --> <textstring>/</textstring> <!-- Inhalt des statischen Texts. Hier: "/" --> </text> <attdef <!-- Dynamischer Text, aus zugehörigem Objekt ermittelt --> farbnummer="0" drehwinkel="0.000" neigungswinkel="0.000" x_skalierfaktor="1.00" fontname="ISO8" h_just="RIGHT" v_just="BASE"> <startpunkt> <x>-5.185</x> <y>1.282</y> </startpunkt> <texthoehe>1.00</texthoehe> <vorgabewert></vorgabewert> <!-- Defaultwert für Textinhalt, wenn Attribut des Objekts leer ist --> <anfrageprompt>PROFILART (EI,MAUL)</anfrageprompt> <!-- Beschreibung des Attributs --> <bezeichner>E0102.C06_%S</bezeichner> <!-- Angabe des auszugebenden Attributs (Spalte) und Formats --> </attdef> <!-- ... weitere Attribute ... --> </symbol> </symbollibary>
Ausrichtung
Für die horizontale Ausrichtung sind die Werte LEFT (linksbündig), CENTER (zentriert) und RIGHT (rechtsbündig) gültig.
Für die vertikale Ausrichtung können folgende Werde verwendet werden:
- TOP (Einfügepunkt an Oberkante von Buchstabe "H")
- CENTER/MIDDLE (Einfügepunkt in der Mitte von Buchstabe "H")
- BASE (Einfügepunkt an Unterkante von Buchstabe "H", also auf der Grundlinie)
- BOTTOM (Einfügepunkt an Unterkante der Textzeile, also an Unterkante von Buchstaben wie "p" oder "g")
Textinhalt
Die Beschreibung des Attributs im Tag <anfrageprompt>
wird für die Darstellung selbst nicht ausgewertet. Sie dient rein zur Dokumentation.
Das Tag <bezeichner>
hingegen wird ausgewertet. Er muss das Format
<Tabelle>.<Spalte>_<Format>
besitzen. Dabei referenzieren Tabelle und Spalte die Datenbankspalte, aus der der Wert ermittelt werden soll. Das Format ist im Folgenden beschrieben.
Unterstützte Formatierungen
Die Angabe der Formatierungen erfolgt in der aus dem Befehl "sprintf" der Programmierspache C bekannten Art. Im Folgenden sind übliche, unterstützte Formate angegeben
Textformatierung
- %S (oder %s) - Gibt den Text unverändert aus
- %.8S - Kürzt den Text auf maximal 8 Zeichen (von links beginnend) ein.
- %16.20S - Gibt den Text auf 16 Zeichen (durch Voranstellen von Leerzeichen) aufgefüllt zurück, aber maximal mit einer Länge von 20 Zeichen. (Weitere werden abgeschnitten.)
Zahlenformatierung
- %0.0F, %0.1F, %0.2F, %0.3F - Formatiert die Zahl mit 0, 1, 2, 3 usw. Nachkommastellen.
- %.0F oder %.0f - Alternative Schreibweisen des eben genannten
- %3.2F - Hat ebenfalls die gleiche Auswirkung wie %0.2F, rundet also auf 2 Nachkommastellen (Zahlen werden nie "aufgefüllt".)
- %.1f‰ - Formatiert die Zahl mit einer Nachkommastelle und hängt das Promillezeichen an
- %.1F%% - Formatiert die Zahl mit einer Nachkommastelle und hängt das Prozentzeichen an. (Beachten Sie das doppelte % am Ende!)
Grundsätzlich kann eine Formatierung auch beliebigen Text beinhalten, also z.B. "Höhe %0.2F m N.N.", dieser wird jedoch immer in Kleinbuchstaben konvertiert. Hier empfiehlt sich die Verwendung von statischen Texten für die Angabe von Einheiten etc.
Hinweis: Die Groß- und Kleinschreibung der Formatangabe ist in GISX 3 nicht relevant.