This summer, I’ve been enjoying doing some work for the Plaid Avenger, especially creating new maps for his next edition of The Plaid Avenger’s World, an excellent alternative textbook for world geography courses. Some of that work, particularly mapping biomes, has proven to be a bit of an adventure.
The man in Plaid sought a set of biomes maps for the world based on Bailey’s Ecoregions, a pretty good system for classifying living things on the earth’s surface that keeps continuity between upland and lowland areas in terms of classification while also differentiating them.. He only really had two main requirements:
- That the map would be accurate and accessible
- That the map would use a color scheme where colors would be the same for highland and lowland areas of the same classification, but that the differentiation would be shown using hillshading.
Seems easy enough, right?
Well, as I began to dig into the project, I discovered two things:
- That all existing spatial datasets for Bailey’s Ecoregions were inherently flawed, and…
- Symbolizing a map that uses hillshading to differentiate between two choropleth zones of the same color is not as easy as it sounds.
So, in this post, I’m going to walk through how I addressed each of these challenges, and what the ultimate results of the project are. Let’s do this.
Challenge 1: Fixing the Data
What could possibly be wrong with the data to get the “inherently flawed” label from me above? Funny you should ask. Where do we start?
Let’s start with the beginning. I generally like the Bailey’s classification for biomes and ecoregions because it’s pretty easy to understand, at least compared to some of the other attempts to map this kind of stuff. The main map that’s available of the scheme isn’t a terrible map either; it’s not flashy or great in terms of symbology, and the legend is way too busy, but it’s serviceable and it does the job (click for a larger version):
So, why not just print this out for Plaid and be done? Well, this map doesn’t do what he wants because the legend is not accessible for his world regions students, and the mountainous regions are symbolized by cross-hatches over colors, which are ugly and change the nature of the color they cross. Plus, this map is pretty obviously a scan from a printed version, which is a no-go for publication.
But then, I opened up the shapefile. Good grief, what a mess… (click for a larger version)
Admittedly, it’s probably difficult to see on this map, but none of the ecoregion shapes (green fill, blank outlines) match to the continents (yellow lines) AT ALL. I mean, they look close, but the ecoregions shapefile has been obviously oversimplified to a different map of continents, and the error increases poleward to the point of being unusable. In addition, the land features within the continents had some pretty terrible errors; for example, the Rocky Mountains stretched eastward nearly as far as Topeka, Kansas when placed with properly referenced spatial data. Just not a very good shapefile in any sense.
So, the next idea was to take the published Bailey’s map, georeference that in ArcMap, and use it as a template for drawing ecoregion polygons to create a new layer. Sounds easy enough, and it’s a trick that cartographers have used as long as we’ve had computers to make maps on. Once I imported it into ArcMap, though, I could not find a projection or coordinate system that even came close to matching up with the map. That’s when I noticed this little tidbit in the lower-right corner, which I’ve blown up so you can (sorta) see it:
Then, of course, I noticed that the map’s simplification of complicated features looked awfully familiar… when I realized that the shapefile had been created by some schmo who’d tried to do exactly what I just attempted, but proceeded without a projection system that fit. The shapefile had indeed been traced from this simplified printed map, in some not-even-close-to-what-it-should-be projection system. That’s what was causing the error!
So, what now? A long, drawn-out process of georectification. Using a variety of sources and maps — including climatological data, satellite imagery, digital elevation models, and more — I worked with the shapefile and adjusted it to what it should be. It took forever and was somewhat painful, but the problems with the data made the manual attention of a cartographer necessary to rectify the issue.
So, here are the results (click for a larger version):
[If you’re interested, the preliminary shapefile is available for download here. It uses 1:50m land data from NaturalEarthData, and will be published to Geocommons, ArcGIS.com, etc when I get around to updating and clarifying the attribute table.]
Challenge 2: Symbolizing
While dealing with the data was enough of a headache and took some serious time, that was only the first step to take toward generating a good new map of biomes. I had to come up with a symbology scheme that met Plaid’s requirment: that zones with the same codes would have the same colors, and that differentiation between those zone and their highland counterpart would be completed by using hillshade.
Mr. Avenger supplied a pretty nice color scheme for the map, and so keeping those colors while achieving the hillshade look was the goal. The color scheme is seen here on North America (click for a larger version):
I had a few ideas how to go about doing this. First thing to do was to acquire a global hillshade file, which I found at Natural Earth Data. [Yes, I could have used some DEMs to create my own hillshade, but global DEM files tend to have relatively poor resolution to save data space, and attempting to build a global DEM file at a higher resolution would be a nuisance and would make my poor computer bomb constantly — just too much data!] The easiest way to get a choropleth map over a hillshade is to adjust the transparency of the polygon layer. However, that desaturated the colors (as should be expected) and still didn’t differentiate between mountainous and non-mountainous regions very well.
Here are the biome polygons laid over the hillshade at 50% transparency — notice the vibrancy of the colors is pretty much gone (click for a larger version):
So, that didn’t work. Next, I looked to what Esri suggested for how to make shaded relief maps in ArcMap. This blog post from Esri is very useful for getting advanced blending techniques (color burn, darken, lighten) between layers, but only raster layers. No worries, I thought: I’ll just convert the polygons to a raster layer and voila, finished!
Not so fast. Several problems came up with this method. For one, creating a world raster at a resolution that doesn’t cause pixelation runs into the same problem that creating a global DEM does: too much data for the machine to handle. But beyond that, the blending options available in ArcMap don’t have the full feature components of a professional design package like Illustrator, so the results still weren’t what I was trying to get, and were actually pretty ugly.
Now what? Well, if you can’t beat ’em, join ’em. I exported three map layers to Illustrator to blend them manually. This doesn’t bother me, because generally I do some post-production on ArcGIS outputs before publication to bring them up to cartographic snuff.
A pro-tip: If you’re only working with a few layers in ArcMap and need to use Illustrator to combine them, export each layer or layer group as separate Illustrator documents. Why? Well, in the export process, ArcMap has a tendency to apply a whole bunch of layer groups and clipping masks, which are a PAIN IN THE ASS to deal with when working with layers on Illustrator. No, it’s not impossible, but I’ve found that it saves a lot of time just to export separately and combine them to a single document on separate layers using Copy and Paste-in-front commands.
Here are the three outputs. On the left is the hillshade layer, middle is the (unclipped) biomes polygons layer, on the right is the other geographic reference data, combined in a layer group (click for a larger version):
Then, I brought all of the layers into Illustrator, combined them into one document, and added the following blending settings to layer transparencies:
- Geographic data layer: Top-most layer, 100% opacity, blending mode: Normal
- Biomes polygon layer: Next layer, opacity 100%, blending mode: Color Burn
- Hillshade layer: Bottom-most layer, opacity 35%, blending mode: Normal
And here are the preliminary results (click for a larger version):
At this point, we’re getting close! One thing, though: the hillshade still isn’t quite right for differentiation here. Sure, the color burn looks good, but it also over-emphasizes the topography of the non-mountainous environments. In other words, the non-mountains look sorta rugged.
To fix this, I selected the non-mountainous biome zones in ArcMap and exported that to Illustrator as a fourth layer (click to see larger version):
Now, there’s definitely a difference, but to me, it’s too abrupt. I didn’t want to eliminate the hillshade from the non-mountain biomes altogether, just soften them a bit. So, I played with the layer’s transparency, ending up at a sweet spot right around 58% (click to see a larger version):
After that, it was just a matter of adding an irreverent legend, and some text in a comic-like font that’s not Comic Sans to match the comic book feel typical of Plaid Avenger work, and presto!
Now, all I have to do is that process 19 more times, to account for all of the Plaid Avenger regions…