[GIS] Prevent drawing of overlapping point symbols – ArcGIS Server/Javascript API

arcgis-javascript-apiarcgis-serverclusteringpointsymbology

Is there any way in ArcGIS to prevent symbols from being drawn when they overlap each other? I know this is possible for Labels using Placement Properties/Label Weight, but I can't seem to find corresponding functionality for symbology. The resulting map document will be published as an ArcGIS Server Map Service and displayed using the ArcGIS Javascript API. The data will be updated frequently, thus the service must be drawn dynamically (no caching).

Basically, I have a point feature class that can be very dense or very sparse depending on zoom scale. When zoomed out, there are too many symbols to display simultaneously in a coherent way. In an ideal world, I'd like to be able to prevent cluttering by specifying a buffer distance (in pixels) around each symbol where no other symbols can be drawn from the same layer. I don't want to cluster the symbols together – I only want to show a single point to represent the area.

My symbology is also fairly complex, and involves graduated symbols based on data value (as well as value-based rotation) as well as several labels with specific placement:

Short of thinning/downsampling the dataset before symbolizing, what are my options (if any) for reducing symbol density?

Best Answer

You might check out the following:

  1. Disperse Markers tools for representations. (ArcInfo aka Advanced only)
  2. Collect Events with rendering tool.
  3. ESRI tech article 22695 using the ESRI label engine to offset overlapping point symbols
  4. ArcObjects SDK point dispersal samples
  5. ETGEowizards disperse points tool. (Paid version)
  6. I've never tried this so it may be crazy, but if you make your point symbol invisible and only have a simple font character for its label, could you then use Maplex to set buffers, move the "labels" around, set weights, etc.
Related Question