Das Plotten im UT Editor, im UT Asset Manager und über den Web Map Plot Service nutzt die ArcGIS-Druck-Engine. Diese basiert auf dem Microsoft Windows Graphics Device Interface (GDI).
Die GDI bringt einige Einschränkungen mit sich, die sich auf das Plotten mit ArcGIS auswirken.
Wenn Sie das Plotten nicht über die neueren Schnittstellen im ArcGIS Pro vornehmen können oder wollen, dann helfen Ihnen die Artikel "Probleme beim Plotten ..." hoffentlich beim Verstehen der Effekte und geben Ihnen Hinweise zur Verbesserung des Plots an die Hand.
Rasterung von Vektordaten:
Eine Rasterung wird vorgenommen, um mittels des Rasters Defizite der verwendeten Schnittstelle zu umgehen.
Das erste Defizit liegt darin, dass eine Zeichenebene und ein Zeichenebenenverbund nur entweder Vektordaten oder Rasterdaten enthalten kann. Liegen beide Datenarten vor, dann werden Rasterdaten behandelt. Als Einschränkungen für eine saubere Darstellung ergeben sich daraus:
- die harte Trennung von Rasterlayern (unten in der Darstellungsreihenfolge) und Vektorlayern (oben in der Darstellungsreihenfolge),
- die "Sortenreinheit" der Gruppenlayer und
- die Vermeidung von Bildsymbolen (Bild-Marker-/Bitmap-Symbole), die ja kleine Rasterbildchen sind.
Das zweite Defizit liegt darin, dass die Transparenz über die Rasterung gelöst wird. Das kann man sich so vorstellen, dass bei einer Transparenz von 50% nur jedes zweite Pixel des Rasters dargestellt wird. Dadurch scheint das Bild darunter durch. Als Einschränkungen für eine saubere Darstellung ergeben sich daraus:
- die Vermeidung von Layertransparenz und
- die Vermeidung von Transparenz von Flächensymbolen.
Genauigkeit von Berechnungen:
Zur Reduzierung des Speicherverbrauchs und zur Beschleunigung der Berechnungen arbeitet die Schnittstelle mit Ganzzahlen statt mit Fließkommazahlen. Bei Berechnungen führt das dazu, dass die Position von Zwischenpunkten auf die nächstpassende Ganzzahl gerundet wird.
Die Genauigkeit der Berechnungen hängt dabei von der "Dichte" der Ganzzahlen ab. Die wird bestimmt durch die Auflösung (dpi). Dies beeinflusst:
- wie genau Bildsymbole mit Bitmap-Markern/-Füllungen vektorisiert werden,
- wie genau die Linienstücke von unterbrochenen Linien in der Flucht liegen,
- wie genau Texte auf einer Linie liegen.
Bedeutung der Auflösung (dpi):
Anders als bei der Betrachtung am Bildschirm, wo ein Zoomen zu einem neuen Bildausschnitt mit der vollen Bildschirmauflösung führt, hat ein Plot eine feste Auflösung für das Gesamtbild. Ein Zoomen vergrößert nur die bereits vorhandene Darstellung und macht evtl. vorhandene Defizite deutlich.
Deshalb kommt der richtigen Wahl der Auflösung (dpi) sowohl für die Darstellung der Rasterbilder als auch für die Genauigkeit bei Berechnungen eine große Bedeutung zu. Beide Aspekte lassen sich ein Stück weit trennen durch den Verhältnis-Schalter (resampleRatio).
Hinweise zur Problemanalyse:
Die ArcMap Funktion Karte exportieren ist ein guter Test bei Problemen mit dem Plotten, weil die dort genutzten Funktionalitäten die Basis sind für das Plotten in UT. Der Prüfansatz lautet: Tritt das Problem in der ArcMap Funktion genauso auf wie in der UT Funktion.
Dabei müssen für eine klare Aussage die Parameter identisch sein.
Bitte beachten Sie dabei, dass die Kartenansicht im Desktop (in der Datenbank gespeichert) und die Kartenansicht beim WMPS (in einer aufbereiteten MXD gespeichert) sich unterscheiden können.
Einstellungen im WMPS:
Die folgenden Einstellungen sind beschrieben für WMPS 10.2 im "Benutzerhandbuch WebMapPlotService" im Kapitel 4.3.2.17 "Parameter output". (Bei anderen WMPS Versionen können die Kapitelnummer und der Inhalt des Kapitels abweichen.)
Dieser Abschnitt dient dazu zu zeigen, dass und wie Sie Einfluss auf das Verhalten beim PDF-Plot nehmen können. Die Parameter müssen Sie nach den Gegebenheiten allerdings selbst festlegen. Wir hoffen, dass diese Artikelreihe Ihnen hilft, die optimalen Einstellungen zu treffen.
<output>
<formats>
<format longname="Portable Document Format (PDF)" value="pdf">
<!-- formatparameters: parameter count ->
<formatparameters value="7">
<!-- polygonizeMarkers: [true|false] ->
<parameter name="polygonizeMarkers" value="true"/>
<!-- imageCompression:[deflate|adaptive|jpeg|lzw|none|rle] ->
<parameter name="imageCompression" value="deflate"/>
<!-- dpi: if specified this value takes precedence over the value within XML request ->
<parameter name="dpi" value="300"/>
<!-- resampleRatio: [best|normal|draft] ->
<parameter name="resampleRatio" value="best"/>
<!-- embedFonts: [true|false] ->
<parameter name="embedFonts" value="true"/>
<!-- colorSpace: [RGB|CMYK] ->
<parameter name="colorSpace" value="RGB"/>
<!-- pictureSymbolOptions: [rasterize|rasterizeIfRasterData|vectorize] ->
<parameter name="pictureSymbolOptions" value="vectorize"/>
</formatparameters>
</format>
<format longname="Portable Network Graphices (PNG)" value="png"/>
<format longname="Tagged Image File Format (TIFF)" value="tif"/>
</formats>
</output>
Prüfskript zur Feststellung von Rasterung:
Die Esri Dokumentation enthält ein Python-Skript, mit dem eine Karte auf Rasterung geprüft werden kann. Das Skript kann auf zwei Weisen verwendet werden:
- Aufruf innerhalb von ArcMap für die aktuelle Karte
mxd = arcpy.mapping.MapDocument("CURRENT") - Aufruf außerhalb von ArcMap für jedwede Karte mit vollständigem Pfad
mxd = arcpy.mapping.MapDocument("C:\Temp\Test.mxd")
import arcpy
def DetectRasterization():
mxd = arcpy.mapping.MapDocument("CURRENT")
df_list = arcpy.mapping.ListDataFrames(mxd)
foundRasterization = False
noneFoundMsg = "No rasterizing layers were detected."
for df in df_list:
lyr_list = arcpy.mapping.ListLayers(mxd, data_frame=df)
for lyr in lyr_list:
if lyr.isRasterizingLayer or lyr.supports("BRIGHTNESS"):
foundRasterization = True
if lyr.isGroupLayer and lyr.transparency > 0:
print "In data frame '" + df.name + "', the group layer '" + \
lyr.longName + "' is a rasterizing layer:\r",
print "\tVisibility is " + str(lyr.visible) + ".\n" + \
"\tTransparency is " + str(lyr.transparency) + " percent.\n"
elif not lyr.isGroupLayer:
print "In data frame '" + df.name + "', the layer '" + \
lyr.longName + "' is a rasterizing layer:\r",
if lyr.transparency > 0:
print "\tVisibility is " + str(lyr.visible) + ".\n" + \
"\tTransparency is " + str(lyr.transparency) + " percent.\n"
else:
print "\tVisibility is " + str(lyr.visible) + ".\n" + \
"\tTransparency is 0 percent, but the layer may be a\n" + \
"\traster layer or contain rasterizing symbology such\n" + \
"\tas bitmap picture symbols.\n"
del lyr
del lyr_list
del df
if not foundRasterization:
print noneFoundMsg
del df_list
del mxd
DetectRasterization()
ArcGIS Dokumentation:
Zur Vertiefung dieses Themas kann folgende Auswahl von Links auf die Esri Dokumentation helfen.
Übersicht über das Entwerfen von Karten für optimale Performance
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.