# How to use directional shading on boundaries for cartographic effect?

The attached screenshot of a National Geographic map shows some beautiful directional shading of boundaries. I'm trying to reproduce this sort of shading for a burn perimeter map, as I want to highlight features within the burn perimeter and not overshadow them with a transparent polygon or crosshatch. Is there a way to accomplish this sort of boundary shading using ArcGIS 10?

Link to larger map titled: "1946 Political Subdivisions Of India By National Geographic.jpg"

-
is it possible to link to a large image? I'd like to study the detail more closely – matt wilkie Mar 5 '13 at 22:02
@matt I added a link for the larger map. Upon closer inspection, these boundaries must have been hand drawn seeing that the map was created in 1946. – Aaron Mar 7 '13 at 12:25

I've usually used one of two methods to shade the interior of polygons. Assuming this is our set of input polygons:

Option 1 is to use the Buffer tool, create a buffer of negative distance (e.g. -500 meters) and set the `line_side` parameter to `OUTSIDE_ONLY`. This will generate areas inside of each polygon, giving the nice look of country borders on a political map when combined with a transparency setting:

Option 2 is to convert polygons to lines and then use the Euclidean Distance tool (in Spatial Analyst) to create a distance raster. Use ExtractByAttributes to remove areas farther than you want to shade, change the raster symbology to Stretched with the min/max values equal to 0 and your max distance. Add in some transparency, and it looks pretty good:

If you wanted a different color for each raster area, you could rasterize the R/G/B values for each polygon, multiply them by the fraction of the max distance, and merge them back into a multiband raster. Let me know if you want more detailed instructions on this part.

-
+1 The last solution is an excellent one. You can often obtain a more pleasing appearance by computing exp(-(x/k)^2/2) where 'x' is the Euclidean distance grid and 'k' is about one-third the intended visible radius of the shading--this will be similar to a "Gaussian blur" effect. First make sure to expand the grid's extent by at least 3k so it isn't cut off around the top, bottom, and sides (as in your illustration)! It is also possible, with a tiny bit of "map algebra," to restrict the shading either to the exterior or interior of a polygon: this is an excellent way to highlight a region. – whuber Mar 1 '13 at 16:47
@whuber Good call with the Gaussian blur. I played around with the raster symbology's stretch to get a smoother gradient, but it didn't look very good. And I should have known you'd catch the cutoff distance raster, Bill. :) – dmahr Mar 1 '13 at 17:45

Take a look at the article "Symbolizing shorelines" in the Esri Mapping Center, which demonstrates some techniques you might want to try. It's a similar concept as what you want to accomplish.

There is also another good article there named "Fade to white background" effect which is an inverse effect of what you are going for, but the same principles should apply.

-

We achieve something like this in Arcmap using concentric or Multiple ring buffer with attributes and applying different transparency levels for each. Take the buffers produced by the script mentioned there and a field for transparency, levels from 70 to 80% seem to work well.

Using polygons instead of raster, as in the excellent answer by @dmahr, means a notable drawing speed penalty, however you get the advantage of being able to easily tweak the symbology as needed on a per feature and per map basis at run time.

To get the stacked or stair appearance seen below each transparency must be at least 1 number different from it's overlapping neighbour, e.g. the purple and brown are 70 and 71 and not 70 and 70.

-
"To get the stacked or stair appearance" = clever! – RyanDalton Mar 5 '13 at 22:41

I have done this by adding several copies of the same layer and using a progression of shades, thickness, offset and transparency to get the graduation. It works in both Arc and QGIS (except the offset feature can sometimes fail in QGIS - which looks like a bug). It's a bit fiddly but works.

-