I'm working on Arcgis 10.

I have a point shapefile representing events with several points having coinciding coordinates (They have the same coordinates). For representing them in a dynamic way, I found a nice way - Feature layers maptips.

Problem is: I was asked to produce a static (paper) map of the events. Is there a tool that can take these events and shift them apart a bit so all will be seen?

(I know that spreading them about will alter their coordinates, but I am prepared to do so on a duplicate shapefile for the display on the map).


You can use "cartograpic representations" to display your points. Then use the Disperse Markers tool. Your point coordinates will still the same, only the position of the symbol (=representation) will move.

This requires a ArcInfo license (ArcGIS for Desktop Advanced).


A similar Q&A appears under the title of Is there a tool to add “noise” to overlapping X, Y coordinates so they are no longer in the EXACT same place? - and I think the solutions for that will apply equally well to your situation.


Another option not mentioned yet is aggregating the points at the same location and then displaying points as either proportional to the number of individual events they represent or have categorical point sizes.

This is good for displaying general spatial relationships, but if you have a small number of over-lapping points (and exactness of location is not an issue) I agree the "jitter" of points seems more attractive. Also the jitter of points allows labels for individual events (or different point markers), which aggregation does not.


1) The Edit Symbol-> Offset is a solution to solve problems with overlapping points that are from different FC. In the same FC, at small scales, points still overlap.

2) The Disperse Markers tool is really nice. It does exactly what I need, but you must use a reference scale for your data frame, and this causes to have really big dots at small scales and small dots at big scales. You can solve this by clearing the reference scale.

The problem is that I am using the layers in a map service. And apparently map services and representations don't get along.

Unfortunately I'm not familiar to scripting. So the solution I used is Disperse Markers.


In your case random noise may not be ideal, but using arcpy you could add an incremental amount onto each overlapping point to space them out around the original overlapping points.

This code is built around Adding "noise" to overlapping X,Y coordinates so no longer in EXACT same place? but iterates through a list of spacings and randomly multiplies these values by either 1 or -1 to create points that surround your original points in all 8 compass directions, but leaving one point unchanged. It's a little clunky but it does work. I'm sure a concentric pattern could be achieved with a little more work.

import arcpy
from random import *

rows = arcpy.UpdateCursor(r"C:\\new_shapefile2.shp")
shape = arcpy.Describe("C:\\new_shapefile2.shp").shapeFieldName

increment = range(-50,50,5)
pos_neg = [-1,1]

for n,row in enumerate(rows):
    if n > 0:
        point = arcpy.Point(row.getValue(shape).getPart(0).X + (increment[n]*pos_neg[randrange(0,2,1)]), row.getValue(shape).getPart(0).Y + (increment[n]*pos_neg[randrange(0,2,1)]))
        row.setValue(shape, point)
del rows

Here is an image showing the points stacked on top of each other and then another after the script has been executed:




I've run into a similar problem and I discovered a way to do it that works as long as you don't need to randomize the displacement (like you would if you wanted to anonymize actual location or something). Go to layer -> properties -> symbology like normal and set up your color or size ramps as usual. Click the template button to the right of the color/size ramp, and on the right there should be an "Edit Symbol" box. Click that and you can set X and Y offset parameters.

I have 3 different variables at the same points that I want to plot, and I'm using that so that all the points are visible.

Not the answer you're looking for? Browse other questions tagged or ask your own question.