Plotting in the UT Editor, in the UT Asset Manager and via the Web Map Plot Service uses the ArcGIS print engine. This is based on the Microsoft Windows Graphics Device Interface (GDI).
The GDI comes with some limitations that affect plotting with ArcGIS.
If you cannot or do not want to plot using the newer interfaces in ArcGIS Pro, the articles "Problems when plotting ..." will hopefully help you understand the effects and give you hints on how to improve the plot.
Rasterization of vector data:
Rasterization is done in order to circumvent deficits of the interface used by means of the raster.
The first deficit is that a drawing layer and a drawing layer composite can only contain either vector data or raster data. If both types of data are present, then raster data is handled. This results in the following limitations for an optimal representation:
- the hard separation of raster layers (at the bottom of the display order) and vector layers (at the top of the display order),
- the purity of the group layers and
- the avoidance of bitmap picture symbols, which are small raster images.
The second deficit is that the transparency is solved by the rasterization. This can be imagined in such a way that with a transparency of 50% only every second pixel of the raster is displayed. As a result, the image underneath shines through. The resulting limitations for an optimal display are:
- the avoidance of layer transparency and
- the avoidance of transparency of area symbols.
Accuracy of calculations:
To reduce memory consumption and speed up calculations, the interface works with integers instead of floating point numbers. In calculations, this results in the position of intermediate points being rounded to the next appropriate integer.
The accuracy of the calculations depends on the "density" of the integers. This is determined by the resolution (dpi). This influences:
- how accurately bitmap picture symbols are vectorized,
- how exactly the line segments of discontinuous lines are aligned,
- how exactly texts are on a line.
Importance of resolution (dpi):
Unlike viewing on a screen, where zooming leads to a new view with the full screen resolution, a plot has a fixed resolution for the entire image. Zooming in only enlarges the already existing representation and makes any existing deficits apparent.
Therefore, the correct choice of resolution (dpi) is of great importance both for the representation of the raster images and for the accuracy in calculations. Both aspects can be separated to some extent by the ratio switch (resampleRatio).
Hints for problem analysis:
The ArcMap function Export Map is a good test for problems with plotting because the functionalities used there are the basis for plotting in UT. The test approach is: Does the problem occur in the ArcMap function in the same way as in the UT function?
For a clear statement, the parameters must be identical.
Please note that the map view in the desktop (stored in the database) and the map view in the WMPS (stored in a prepared MXD) may differ.
Settings in WMPS:
The following settings are described for WMPS 10.2 in the "User Manual WebMapPlotService" in chapter 4.3.2.17 "Parameter output". (For other WMPS versions the chapter number and content may differ).
This section serves to show that and how you can influence the behaviour of the PDF plot. However, you must set the parameters yourself according to the circumstances. We hope that this series of articles will help you to make the optimal settings.
<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>
Test script to detect rasterization:
The ArcGIS documentation contains a Python script that can be used to check a map for rasterization. The script can be used in two ways:
- Call within ArcMap for the current map.
mxd = arcpy.mapping.MapDocument("CURRENT") - Call outside ArcMap for any map with full path
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 documentation:
The following selection of links to the ArcGIS documentation may help to deepen this topic.
An overview of designing maps for optimal performance
Comments
0 comments
Please sign in to leave a comment.