English

Problem: The scalebar or North arrow of an ArcMap Service is getting lost or cut off

Description

The scalebar, the North arrow, or both cannot be seen or is cut off in the map image.

The following is an ArcMap Service image with cut off scalebars.
[O-Image] LostScaleBarOrig

Cause

This occurs when another acetate layer, such as a SIMPLEPOLYGONSYMBOL, overlaps the scalebar or the North arrow.

Solution or Workaround

Overlaying scalebars and North arrows with seperate acetate layers can not be done with ArcMap Server.

Notice, in the code below, the height and width of the SIMPLEPOLYGONSYMBOL acetate layer, or the box surrounding the copyright text, is 18 and 785 pixels respectively. The map contains two scalebars and the coordinates of both 452 3 and 619 3 that fall within the range of the SIMPLEPOLYGONSYMBOL.

<REQUEST>
<GET_IMAGE>
<PROPERTIES>
<ENVELOPE minx="-122.587093767496" miny="37.64239015" maxx="-122.255576232504" maxy="37.87395885" />
<IMAGESIZE height="449" width="786" />
<LAYERLIST >
<LAYERDEF id="0" visible="true" />
</LAYERLIST>
<BACKGROUND color="255,255,255" />
</PROPERTIES>
<LAYER type="acetate" name="theBottomBar">
<OBJECT units="pixel">
<POLYGON coords="0 1;1 18;785 18;785 1;0 1">
<SIMPLEPOLYGONSYMBOL fillcolor="255,255,255" boundary="true" boundarycolor="0,0,0" overlap="false" />
</POLYGON>
</OBJECT>
</LAYER>
<LAYER type="acetate" name="theCopyright">
<OBJECT units="pixel">
<TEXT coords="3 3" label="Map created with ArcIMS - Copyright (C) 1992-2002 ESRI Inc.">
<TEXTMARKERSYMBOL fontstyle="Regular" fontsize="8" fontcolor="0,0,0" antialiasing="True" overlap="false" />
</TEXT>
</OBJECT>
</LAYER>
<LAYER type="acetate" name="theNorthArrow">
<OBJECT units="pixel">
<NORTHARROW type="4" size="30" coords="20 35" shadow="32,32,32" angle="0" antialiasing="True" overlap="False" />
</OBJECT>
</LAYER>
<LAYER type="acetate" name="theScaleBar">
<OBJECT units="pixel">
<SCALEBAR screenlength="78" coords="452 3" mode="geodesic" fontcolor="0,0,0" fontstyle="Regular" barcolor="128,128,128" scaleunits="miles" antialiasing="True" fontsize="9" barwidth="5" overlap="False" />
</OBJECT>
</LAYER>
</GET_IMAGE>
</REQUEST>
</ARCXML>



The solution is to avoid an overlap by implementing an option below.

  • Reduce the size of the overlapping acetate layer, to appear similar to this resulting image.
    [O-Image] ChangeBottomResult
    Here is a code sample. Notice that the width of the SIMPLEPOLYGONSYMBOL is reduced to 300.

    <REQUEST>
    <GET_IMAGE>
    <PROPERTIES>
    <ENVELOPE minx="-122.587093767496" miny="37.64239015" maxx="-122.255576232504" maxy="37.87395885" />
    <IMAGESIZE height="449" width="786" />
    <LAYERLIST >
    <LAYERDEF id="0" visible="true" />
    </LAYERLIST>
    <BACKGROUND color="255,255,255" />
    </PROPERTIES>
    <LAYER type="acetate" name="theBottomBar">
    <OBJECT units="pixel">
    <POLYGON coords="0 1;1 18;300 18;300 1;0 1">
    <SIMPLEPOLYGONSYMBOL fillcolor="255,255,255" boundary="true" boundarycolor="0,0,0" overlap="false" />
    </POLYGON>
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theCopyright">
    <OBJECT units="pixel">
    <TEXT coords="3 3" label="Map created with ArcIMS - Copyright (C) 1992-2002 ESRI Inc.">
    <TEXTMARKERSYMBOL fontstyle="Regular" fontsize="8" fontcolor="0,0,0" antialiasing="True" overlap="false" />
    </TEXT>
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theNorthArrow">
    <OBJECT units="pixel">
    <NORTHARROW type="4" size="30" coords="20 35" shadow="32,32,32" angle="0" antialiasing="True" overlap="False" />
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theScaleBar">
    <OBJECT units="pixel">
    <SCALEBAR screenlength="78" coords="452 3" mode="geodesic" fontcolor="0,0,0" fontstyle="Regular" barcolor="128,128,128" scaleunits="miles" antialiasing="True" fontsize="9" barwidth="5" overlap="False" />
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theScaleBar2">
    <OBJECT units="pixel">
    <SCALEBAR screenlength="78" coords="619 3" mode="geodesic" fontcolor="0,0,0" fontstyle="Regular" barcolor="128,128,128" scaleunits="kilometers" antialiasing="True" fontsize="9" barwidth="5" overlap="False" />
    </OBJECT>
    </LAYER>
    </GET_IMAGE>
    </REQUEST>
    </ARCXML>

  • Move the location of the scalebar or North arrow, to appear similar to this resulting image:
    [O-Image] ChangeScaleBarLoc
    Here is a code sample. Notice that the Y value of the coords has been increased to 20.

    <REQUEST>
    <GET_IMAGE>
    <PROPERTIES>
    <ENVELOPE minx="-122.587093767496" miny="37.64239015" maxx="-122.255576232504" maxy="37.87395885" />
    <IMAGESIZE height="449" width="786" />
    <LAYERLIST >
    <LAYERDEF id="0" visible="true" />
    </LAYERLIST>
    <BACKGROUND color="255,255,255" />
    </PROPERTIES>
    <LAYER type="acetate" name="theBottomBar">
    <OBJECT units="pixel">
    <POLYGON coords="0 1;1 18;785 18;785 1;0 1">
    <SIMPLEPOLYGONSYMBOL fillcolor="255,255,255" boundary="true" boundarycolor="0,0,0" overlap="false" />
    </POLYGON>
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theCopyright">
    <OBJECT units="pixel">
    <TEXT coords="3 3" label="Map created with ArcIMS - Copyright (C) 1992-2002 ESRI Inc.">
    <TEXTMARKERSYMBOL fontstyle="Regular" fontsize="8" fontcolor="0,0,0" antialiasing="True" overlap="false" />
    </TEXT>
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theNorthArrow">
    <OBJECT units="pixel">
    <NORTHARROW type="4" size="30" coords="20 35" shadow="32,32,32" angle="0" antialiasing="True" overlap="False" />
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theScaleBar">
    <OBJECT units="pixel">
    <SCALEBAR screenlength="78" coords="452 20" mode="geodesic" fontcolor="0,0,0" fontstyle="Regular" barcolor="128,128,128" scaleunits="miles" antialiasing="True" fontsize="9" barwidth="5" overlap="False" />
    </OBJECT>
    </LAYER>
    <LAYER type="acetate" name="theScaleBar2">
    <OBJECT units="pixel">
    <SCALEBAR screenlength="78" coords="619 20" mode="geodesic" fontcolor="0,0,0" fontstyle="Regular" barcolor="128,128,128" scaleunits="kilometers" antialiasing="True" fontsize="9" barwidth="5" overlap="True" />
    </OBJECT>
    </LAYER>
    </GET_IMAGE>
    </REQUEST>
    </ARCXML>

Related Information