Yesterday I got an email from a long time colleague showing me an online map and asking, “When will it be possible to do this map with ArcGIS”?

The map is the interactive map of Washington DC at http://dc.everyblock.com. In particular my friend was looking at the crime map wondering how the proportional symbols showing crimes became disaggregated as he zoomed in, eventually showing individual crime sites. In the images below, note how the circle representing seven crimes (left image) divides into four individual sites in the middle image (this does not include the leftmost site which is shown in the left image as well), and the circle with three crimes in the middle image finally divides into each individual site (right image).

 ZIP Code Level View Neighborhood ViewSite View

It’s been possible to do this sort of thing in ArcGIS for many years, though it took knowing the combination of steps and tools to use. Fortunately it also has become easier in the most recent releases. Here’s how to make this kind of map today:

  1. Assign a count of the number of sites to polygons that overlay the study area. In this example the authors likely used ZIP Code polygons for the small scales and neighborhood polygons for the medium scales. To do this, use the Spatial Join tool, with the polygons as the target features, the points as the join features, use the JOIN_ONE_TO_ONE rule, and use the CONTAINS match option.  This will produce a polygon output file that contains one additional field called Join_Count—this is the number that will be mapped to proportional symbols.
  2. Rather than just using proportional symbols to display the attributes for the polygons, labeling the polygons should be considered – ideally the labels would be placed inside the proportional symbols. Since there is no guarantee that labels will be placed exactly on top of proportional circle symbols when labeling the polygons, it is better to force this to happen by creating a centroid dataset that can be symbolized and labeled. To do that, use the Feature to Point tool.
  3. Create the proportional symbols for the point features that you created in step 2; make sure that all but the smallest circles (those representing a value of 1) are large enough to contain a label.
  4. Label the features using the Join_Count field. Set the label SQL Query to Join_Count > 1. Set the placement such that the label is centered on top of the point.

To get the final effect in the http://dc.everyblock.com map, use about 20% transparency on the graduated point layers.