Plot Konfigurationen
Die Plotkonfigurationen / Ploteinstellungen finden Sie in MapEdit AppBuilder Repository hier:
Über die Funktion Neu kann eine neue Plotkonfiguration erstellt werden. Bei der Installation von MapEdit Desktop wird bereits eine Standardkonfiguration abgelegt, die bei einer Neuanlage dann zur Bearbeitung zur Verfügung steht.
Es werden standardmäßig die Formate A4 bis A0 im Hoch- und Querformat angelegt.
Zur Bearbeitung der Plotkonfiguration sind grundlegende XML-Kenntnisse erforderlich
Globale Einstellungen
<layouts>
In diesem Bereich befinden sich alle Einstellungen für die Definitionen einer Plotkonfiguration.
<set name>
Mit diesem Tag können Sie eine Variable definieren und dieser einen entsprechenden Wert zuweisen.
<layout>
Über das Layout wird das Aussehen eingerichtet, wenn z. B. ein umfangreicher Plankopf für eine externe Planauskunft und ein kleiner Plankopf für die interne Auskunft benötigt wird. Im Bereich Layout wird jeweils ein Layout eingerichtet, mit allen dazugehörigen Papierformaten. Beispiel:
<layout name="Standard" id="1" author="MuM Systemhaus GmbH" title="Standard">
Um weitere Layouts zu definieren, wird ein weiterer Namen und ID vergeben. Beispiel:
<layout name="Leitungsauskunft" id="2" author="MuM GmbH" title="Leitung">
Diese stehen den Anwendern im MaPEdit Desktop dann wie folgt zur Verfügung:
<format>
Im <format>
wird definiert, welche Papierformate und welche Maßstäbe verwendet werden und die Lage über X/Y Werte für alle Objekte in dem Planstempel wie Linien, Texte, Nordpfeil, Logo etc. angegeben.
Die Lage aller Objekte in einem Planstempel wird immer von der Ecke links oben ausgehend in mm angegeben.
Beispielcode:
<layout name="Standard" id="1" author="MuM Systemhaus GmbH" title="MapGuide Webplot">
<format name="DIN A4 Hochformat" id="1" height="297" width="210" dpi="150">
<scales>
<scale value="-1" />
<scale value="-2" />
<scale value="-3" />
<scale value="250" />
<scale value="500" />
<scale value="1000" />
<scale value="2500" />
</scales>
<objects>
<map>
<from x="10" y="10" />
<to x="200" y="287" />
</map>
<rectangle drawColor="#000000">
<from x="10" y="10" />
<to x="200" y="287" />
</rectangle>
<northArrow file="${property[northArrow]}">
<from x="11" y="268" />
<to x="23" y="286" />
</northArrow>
<scales>
scale = -1
bedeutet Automatisch (das Plotfenster wird immer gleich zur Größe des Browser geöffnet)scale = -2
bedeutet Benutzerdefiniert (Maßstab wird manuell eingetragen)scale = -3
bedeutet Aus Karte (entsprechende dem Zoomlevel wird der Maßstab übernommen)scale = 250
bedeutet Maßstab 1:250 ist fest vorgegeben
Variablen
Im Unterschied zu den Systemvariablen die teils vom Betriebssystem und MapEdit vorgegeben werden, kann man selbst definierte Variablen einführen, welche zur Anzeige verwendet werden können. Diese Variablen werden innerhalb des Tags <format>....</format>
dann an die gewünschte Position platziert:
<image file="${property[logo]}">
<from x="80" y="257" />
<to x="125" y="269" />
</image>
<statictext text="${property[city]}">
<from x="77" y="244" />
<font size="12" face="Arial" style="Bold" />
</statictext>
Systemvariablen
Unter Systemvariablen versteht man Variablen, die teils vom Betriebssystem und teils von MapEdit fest vorgegeben sind. Es können folgende Systemvariablen abgerufen und automatisch im Planstempel eingetragen werden:
Die Variablennamen erfolgen bei der Plot Konfiguratin in Kleinbuchstaben und nicht wie bei den anderen stellen mit "{@" bzw "}" sondern formatiert wie alle anderen Plotvariablen.
Systemvariable | Bedeutung |
---|---|
${date} | Datum |
${datetime} | Uhrzeit |
${scale} | Maßstab |
${loginusername} | Name des angemeldeten MapEdit Benutzernamen |
${loginusercomment} | Kommentar des angemeldeten MapEdit Benutzernamen (aus der Benutzerverwaltung) |
${loginuseremail} | EMAIL des angemeldeten MapEdit Benutzernamen (aus der Benutzerverwaltung) |
${osloginusername} | Name des angemeldeten Windows Benutzernamen |
${adloginusername} | Name des angemeldeten ActiveDirectory Benutzernamens |
${copyright} | Copyright-Informationen |
Hier ein Beispiel um den Benutzernamen an einer bestimmten Position mit der Größe 8 und Schriftart Arial anzuschreiben:
<statictext text="${loginusername}">
<from x="135" y="253" />
<font size="8" face="Arial" />
</statictext>
Zusätzlich können noch alle Variablen aus der neuen Variablenverwaltung verwendet werden. Die Variablennamen werden formatiert wie alle anderen Plotvariablen und werden in Kleinbuchstaben angegeben und nicht wie bei den anderen stellen mit "{@" bzw "}".
Objekte und Inhalte
<objects>
Hier werden alle Objekte eines Planstempels definiert,.
Die Position der Objekte im Plan wird hier im Beispiel über x="10" bzw. y="10" von der Ecke links oben in Millimeter ausgehend definiert.
<map>
Mit diesem Tag bestimmen Sie die bedruckbare Fläche, hier als Beispiel die bedruckbare Fläche DIN A4 Querformat
<map>
<from x="10" y="10" />
<to x="200" y="287" />
</map>
<rectangle>
Mit diesem Tag können Sie die Umrandung der bedruckbaren Fläche bzw. Rahmenfarbe usw. bestimmen.
<rectangle drawColor="#000000">
<from x="10" y="10" />
<to x="287" y="200" />
</rectangle>
<legend>
Eine Legende kann in den Ploteinstellungen konfiguriert werden. Hier der Standardeintrag, damit werden alle Layer der MapGuide Karte angezeigt.
<legend drawColor="#000000" fillColor="#FFFFFF">
<pos x="10" y="10" />
<font size="10" face="Arial" />
</legend>
Der Anwender kann in der Plotvorschau entscheiden welche Objekte in einer Legende angezeigt werden, in dem er einen Haken setzt und die Legendeneinträge erscheinen ab der vorgesehenen Position (x=10/y=10). Über die grünen Pfeile kann die Reihenfolge der Legendeneinträge verändert werden und mit + und - können manuell neue Einträge hinzugefügt/entfernt werden:
Wenn sie den Eintrag <legend>
entfernen, wird keine Legende angezeigt. Das empfiehlt sich, wenn generell keine Legende verwendet wird. Dadurch erscheint die Plotvorschau schneller, da die ganzen Kartenlayer nicht erst abgefragt werden.
layerPattern
Die Layer für die Legende können gefiltert werden. Es gibt die Möglichkeit über Filter bestimmte Layer hinzuzufügen add
oder bestimmte Layer nicht anzuzeigen remove
:
<legend drawColor="#000000" fillColor="#FFFFFF">
<pos x="10" y="10" />
<font size="10" face="Arial" />
<filter type="add" layerPattern="*" legendPattern="*" />
<filter type="remove" layerPattern="*" legendPattern="" />
</legend>
?
ist ein Platzhalter für ein beliebiges Zeichen (so wie in SQL das Zeichen _
)
*
ein Platzhalter für beliebig viele Zeichen ist (so wie in SQL das Zeichen %
)
layerPattern ist der MapEdit Layer Name, der meist einer MapGuide MapDefinition entspringt. In der Kartenverwaltung wird der Anzeigename angezeigt:
legendPattern
legendPattern ist der Name des LegendLabel im MapGuide Layer.
Beispiel 1:
Aus allen Karten sollen alle Label, die mit "QS" anfangen und alle Label die mit "TBL" enden, nicht angezeigt werden.
<legend textColor="#000000" drawColor="#000000" fillColor="#FFFFFF" icon="5">
<pos x="10" y="10" />
<font size="10" face="Arial" />
<filter type="add" layerPattern="*" legendPattern="*" />
<filter type="remove" layerPattern="Wasser" legendPattern="*TBL" />
<filter type="remove" layerPattern="Wasser" legendPattern="QS*" />
</legend>
Wenn nur die Legendeneinträge die mit "QS" anfangen angezeigt werden sollen, die von dem Gewerk Wasser stammen, dann sieht der Eintrag so aus:
<filter type="add" layerPattern="Wasser" legendPattern="QS*" />
Beispiel 2:
Alle Layer anzeigen, jedoch ALKIS rausnehmen, dann aber ALKIS dazunehmen, wenn die Legende mit einem beliebigen Buchstaben anfängt und mit 'lurstück' weitergeht (mögliche Treffer: Flurstück, flurstückskennzeichen). Die Leeren jedoch grundsätzlich weglassen:
<legend drawColor="#000000" fillColor="#FFFFFF">
<pos x="10" y="10" />
<font size="10" face="Arial" />
<filter type="add" layerPattern="*" legendPattern="*" />
<filter type="remove" layerPattern="ALKIS" legendPattern="*" />
<filter type="add" layerPattern="ALKIS" legendPattern="lurstück*" />
<filter type="remove" layerPattern="*" legendPattern="" /> </legend>
Noch ein Beispiel 3 für eine manuell defininerte Legende für einen Themenplan, in dem gezielt Layer von thematischen MapGuide-Layern aufgelistet werden:
Es können unterschiedliche Layer aus dieser MapGuide Karte verwendet werden und es wird der Eintrag aus LegendLabel verwendet:
So sieht diese thematische Legende in der Plotvorschau aus:
<northArrow>
Mit diesem Tag können sie ein Symbol für den Nordpfeil in Ihrem Ausdruck platzieren
...
<set name="northArrow" value="../images/print-map/Symbols/north_arrow.png" />
...
<northArrow file="${property[northArrow]}">
<from x="11" y="268" />
<to x="23" y="286" />
</northArrow>
Wenn der Ausdruck nicht geordnet ist, sondern gedreht, wird das Symbol des Nordpfeils automatisch nach Norden ausgerichtet.
<line>
Mit diesem Tag zeichnen Sie eine einfache gerade Linie von Position nach Postion
<line drawColor="#000000">
<from x="162" y="163" />
<to x="287" y="163" />
</line>
<statictext>
Die unter diesem Tag definierten Texte sind fix und können entsprechend platziert werden unter der Mitgabe von Textgröße und Schrifttyp.
<statictext text="${property[hintLine1]}">
<from x="77" y="283" />
<font size="7" face="Arial" color=”#FF0000”/>
</statictext>
<dynamictext>
Mit diesem Tag besteht die Möglichkeit Texte während des Karte drucken noch einzugeben. In der Plotvorschau hat der Anwender die Möglichkeit diese Werte vorzugeben.
Der Code zur Erstellung dieser beiden dynamischen Texte sieht folgendermaßen aus:
...
<set name="field3" value="Ortsnetz" />
<set name="field6" value="Bearbeiter" />
<statictext text="${property[field3]}:">
<from x="135" y="265" />
<font size="8" face="Arial" />
</statictext>
<dynamictext name="${property[field3]}">
<from x="157" y="265" />
<font size="8" face="Arial" />
</dynamictext>
<statictext text="${property[field6]}:">
<from x="135" y="277" />
<font size="8" face="Arial" />
</statictext>
<dynamictext name="${property[field6]}">
<from x="157" y="277" />
<font size="8" face="Arial" />
</dynamictext>
...
<image>
Werden neben dem Nordpfeil noch weitere PNG benötigt, dann wird der HTML-Code einfach erweitert. Es können kleine Legenden fest mit angegeben werden, die als *.png
erstellt wurden.
<layouts…>
<set name="northArrow" value="../images/print-map/Symbols/north_arrow.png" />
<set name="Legende" value="../images/print-map/Symbols/legende_neu.png" />
<layout>
<format…>
<northArrow file="${property[northArrow]}">
<northArrow file="${property[Legende]}">
</format>
</layout>
</layouts>
Damit ein Logo im Druck richtig angezeigt wird, muss der Eintrag im XML zu dem vorhandenen Bild (*.bmp
/*.jpg
) passen. Die Standardvorlage gibt ein Verhältnis (Länge / Breite) von 1:3 an.
<image file="${property[logo]}">
<from x="76" y="256"/>
<to x="129" y="276"/>
</image>
Weitere Einstellungen
Maßstabsbalken
Der Maßstabsbalken wird zwischen </statictext>
und </objects>
am Ende eines
Layouts eingefügt.
Die Breitenangabe des Balkens ist dynamisch, da zur Laufzeit ein gerader Anzeigewert gewählt wird. D.h. die Breite (from x,y to x,y) die der User in der Plotdefinition angibt, ist nur die maximale Breite für den Balken.
Es gibt eine neue Option barHeight
, mit der man die Höhe des Balkens ändern kann (Angabe in mm). Gibt man nichts an, dann ist die Höhe 1mm.
<scaleStatus barHeight="2">
< from x="150" y="240" />
< to x="190" y="250" />
</scaleStatus>
Sprich in dem Fall 10mm hoch und 40mm breit und eine Balkenhöhe von 2mm. Die Größe des Textes ist jetzt abhängig von der angegebenen Höhe des Kastens 10mm)
minus der Balkenhöhe (2mm), d.h. wenn man die Kastenhöhe höher macht, dann wird der Text größer.
Zur Verdeutlichung werden in der folgenden Abbildung die Werte
<scaleStatus barHeight="2">
< from x="150" y="240" />
< to x="190" y="250" />
</scaleStatus>
durch einen grauen Rahmen angezeigt. Der graue Rahmen ergibt sich aus den
Koordinatenwerte die man bei scalestatus angibt:
Warum ist der Balken nicht so lang wie der Kasten?
Der Balken entspricht der Länge der angegeben Meter/Kilometer in der Karte.
Die Länge die man für den Kasten angibt, ist die maximale Länge die der Balken
einnehmen darf. In Realität ist der Balken also in den meisten fällen nicht so lange wie der im grauen Kasten.
Copyright Texte
Copyright Texte die in der Kartenverwaltung eingetragen wurden, können für den Ausdruck an der gewünschten Position definiert werden.
Dazu erfolgt ein Eintrag wie bei den Variablen als StaticText:
<statictext text="${copyright}">
<from x="200" y="10" />
<font size="8" face="Arial" />
</statictext>
Protokollierung aktivieren
Zum Aktivieren der Logging Funktion muss in der web.config
im Verzeichnis C:\\inetpub\\wwwroot\\Mum.Geo.Server.Printing
ein neuer Key hinzugefügt werden:
<appSettings>...
<add key="LogFile" value="C:\inetpub\wwwroot\MumGeoData\Log\ServerPrinting.log"/>
<add key="LogLevel" value="error"/>
<appSettings>
Mit dem Key LogLevel können folgende mögliche Werte gesetzt werden: Error, Warn, Info, Debug (Groß- Kleinschreibung ist egal). Die Datei ServerPrinting.log
muss in dem Verzeichnis manuell angelegt werden: C:\\inetpub\\wwwroot\\MumGeoData\\Log\\ServerPrinting.log
Wenn diese nicht vorhanden ist, wird auch nichts protokolliert!
Öffnen sie den Ordner Knowledgebase, dort befindet sich ein PDF zu der Standard Plotkonfiguration.
Download Standard Plotkonfiguration
Mehrere Plotkonfigurationen in einem Projekt
Man kann im MapEdit AppBuilder einem Projekt mehrere Plotkonfigurationen zuweisen.
Ein Layout-Title/Name muss in allen Konfigurations-Dateien, die man benutzt eindeutig sein.
Wenn ein gleicher Name/Title in mehr als einer Datei vorkommt, dann gibt es einen Mehrfacheintrag in der Liste und bei der Auswahl wird dann ggf. vom Programm intern das falsche gewählt.
Werden Variablen mit <set
benutzt, wie dies zum Beispiel:
<set name="logo" value="../images/print-map/Symbols/logo.jpg" />
<set name="city" value="Musterstadt (Westf.)" />
gewinnt immer die letzte Zuweisung.
Oder wenn zum Beispiel: <set name="logo" value="../images/print-map/Symbols/logo.jpg" />
in der ersten, zweiten und dritten Config-Datei vorkommt dann gewinnt die Einstellung der dritten Config-Datei, egal was in den anderen steht.
Drucken aus den Client
Über den Befehl ruft der Anwender den Befehl Karte drucken auf.