Fantasy Mapping: Place Names & Design (and free Adobe map assets!)

Several weeks ago, I wrote about a fantasy map named Kystfjell (pronounced kist-fyell, but feel free to say kist-fell), which translates from Norwegian to “coastal mountains.”

In that first post, I mentioned I’d be writing an upcoming Part II that describes some of the design decisions, including place name and language, character illustration, and geographical juxtapositions within the Kystfjell map. I also promised some free Adobe Illustrator libraries based upon this design. So here we go! This is Part II. If you want to jump straight to the free stuff, HERE is a truncated design assets library that I made, inspired by this map. But wouldn’t you want to know the background of those libraries and of Kystfjell?? If so, keep reading.

Important to know: This map was made using the M4CC extension inside of Adobe Illustrator. For information on how, read the first post on this Kystfjell map.

The difference between the actual geography and Kystfjell’s geography

As cartographers, even though we aim for a known level of accuracy and precision, we still are abstracting spatial data to a digestible level. The most obvious example of this is scale. Maps are typically a 1 to greater-than-1 scale – at least the examples we usually think of when we hear the word “map.” Although, consider this beautiful Anatomy of the Teeth poster by medical illustrator, Lydia Sharp. In a sense, Sharp’s poster, and microbiology illustrations like Shannon McMann’s Brain Cell diagram are maps of a 1 to less-than-1 scale. Maps (and dataviz) of all kinds have abstracted the representation to its necessary parts, so that the visualization’s purpose and message can be easily understood by the intended audiences.

When creating the Kystfjell map, although I downloaded real geographic data over coastal Norway at a scale of 1:140,000 (see image below), this map was fantasy. I can move mountains!

And I did. I was not tied to usual intentions of communicating an abstracted reality for the purpose of data comprehension or actual geographical navigation. While I frequently do draw illustrations that have nothing to do with maps, I have never applied the liberty of mapping things where I want to for the purposes of a fantasy map. Kystfjell’s scale is much smaller (the world in the map is much larger than the downloaded data’s actual scale), as a series of large interacting societies. This means that instead of the actual geographic extent’s ~30-40-mile width, my map is about 1,000 to 1,800 miles wide. Although who knows? There is still time for Kystfjell’s geomorphology in my imagination, as the book is still being written.

Data downloaded into Adobe Illustrator using M4CC

Original data downloaded into Adobe Illustrator using M4CC.

 

Check out this map diagram below. In it, I’m showing the extent of the Kystfjell map, and changes that I made to the data that were included in my original download into Illustrator.

Changes made to the original (real) geography to make the Kystfjell fantasy map

Changes made to the original (real) geography to make the Kystfjell fantasy map

Here is the final land juxtaposition for the Kystfjell map.

Kystfjell Map full (unfinished)

Kystfjell Map full (unfinished)

Overall design of Kystfjell

Please consider the Kystfjell fantasy map unfinished. In fact, I’m not certain that the land will retain the “Kystfjell” name over time. When I get some time to finish it, the first sentence of this paragraph will be deleted. So will the sentence preceding this one, along with this sentence, and perhaps a few subsequent ones. While the map is unfinished, the overall aesthetic will remain. Why am I posting about the design when it is not quite finished? In part I several weeks ago, I promised some free Adobe Illustrator libraries, along with a post about Kystfjell’s design “soon.” Now feels like soon, so let’s talk about design!

Colors

There are really five basic colors on this map, and every other color stems from those hues. The sixth color is the highlight color. I don’t know how everyone else thinks about color, but for me, what I call highlight color is essentially just that – the color that all other colors travel to as they get lighter. So if you can imagine a gradient for each of the base colors, where the darkest hue in the gradient is the base, and the brightest hue in the gradient is the highlight color, then you can imagine that the colors within those gradients are fair game for the particular project. In most of my work – maps and other illustrations – the highlight color is almost never basic white. This retains rich tones throughout the illustration. With every map I make, I try to keep the colors at a minimum, so I made swatches of about six or seven colors within each of these gradients and only drew from those colors. I use this color method for a lot of things that I do, but when it comes to mapping for customers with specified style guides, I’m often bound to a basic strict small group of contrasting colors and/or complimentary colors. But not for Kystfjell!

Kystfjell Base Colors

Kystfjell Base Colors

 

The mountain base color-to-highlight color gradient.

The mountain base color-to-highlight color gradient

You can find the Kystfjell base colors and other Illustrator Assets here, where I’ve shared them publicly. Notice how the colors look much flatter and more saturated than they do on the map. Recall how I’ve created gradients from each of these base colors to the highlight color (image above this paragraph), and from that gradient, created a palette made from those gradients. Doing so gives the map some depth. Also, I’ve added some transparency masks explained below.

Kystfjell Assets

Save these free assets by clicking on the image

Texture

I was able to apply a papery texture to the Kystfjell Map by using Adobe Illustrator’s Transparency Mask option. This post isn’t going to include a step-by-step tutorial on how to use transparency masks in Illustrator, but perhaps such a post as it relates to cartography is called for in the near future. It is just important to know that this is how this map was textured. There are a lot of great YouTube videos and online tutorials provided by designers that share how they use transparency/opacity masks. But here is a tiny window into my particular approach to how I used a transparency mask to achieve a papery look in the Kystfjell map. Ultimately:

  • There are ten layers listed below that make up the entire land-plus-ocean base of this map, and one more that makes up the shorelines (see next section for the shoreline creation).
  • Each of these ten layers has some sort of Illustrator effect (not necessarily capital “E” effect, or what AI considers an effect). By this, I mean each of these ten layers has a permutation of gradients, transparency masks, and inner glows; at least one of these effects, but perhaps two or all of them.
  • By removing any one of these ten layers, the entire base’s aesthetic would change, either slightly or dramatically (see animation below for how stacking these layers changes the base’s look).
  • This approach is certainly not necessary, but I’m really happy with the result.
Kystfjell Land and Ocean Layers

Kystfjell Land and Ocean Layers

Of the layers inside my Land and Ocean Layers above, the following have a transparency mask applied. The mask was made from a photo of crumpled paper:

  • Highlight Ocean (Also using the Lighten filter within this transparency map setting).
  • Darker Pink Land with Gradient
  • Land Color Burn (Also using the Color Burn filter within this transparency map setting).
  • Bottom Ocean Layer

When applying a paper texture to a transparency mask on multiple layers, one trick I like to use is to make sure that the paper texture image is the same one for each layer and the X, Y registration for this image is identical each time you paste it. Copying artwork and pressing CTRL + F / CMD + F will paste artwork in the exact X,Y registration in front of  your other artwork in a layer, and CTRL + B / CMD + B will paste it behind your other artwork to whichever layer you are pasting.

Stacking the 10 ocean and land layers and the shorelines layer

Stacking the 10 ocean and land layers and the shorelines layer

Concentric Shorelines

I applied a concentric shoreline effect to the land shapes using the Object –> Expand –> Offset Path method that I wrote about on this previous blog post. Note* That previous post addresses making concentric shorelines from a linear (unclosed path) feature, such as a shoreline that falls completely off the edges of your map (Object –> Expand). I applied the remaining principles from that post’s approach to Kystfjell’s concentric shorelines.

Kystfjell map shorelines

Kystfjell map shorelines

Whimsically hand-drawn

I wanted the Kystfjell elements to appear whimsically hand-drawn. To avoid a clean digital look I used brushes from the Artistic_ChalkCharcolPencil brush library that is provided with Adobe Illustrator, as well as a few other brushes. You can see some of those brushes applied in these complimentary graphics that I’m sharing here.

Language and Placenames

Each aspect of this map was an adventure: location scouting, character developing, mountain drawing, and place-namingAs stated previously, this is my first fantasy map, so creating placenames was unexplored territory. I wanted the names to be of Norwegian influence as a nod to my heritage, but also easy for an English speaker to read. Some of the names are combinations of Norwegian words, or combinations of Norwegian and English words. And some locations are English words. I wanted Norwegian readers to read the names as actual names as well, so I consulted my friend that I have known since middle school, Benjamin Nelson. Ben is fluent in Norwegian, lives in Norway, and is married to a Norwegian woman, Linn Monica. They reviewed the placenames to ensure the names did not get translated as garble to a Norwegian reader. Also, it was pretty important to me that I wasn’t unintentionally using a word that was crude. Many thanks to Ben and Linn Monica for their review of the Kystfjell map placenames!

The Future of Kystfjell

It is true! Kystfjell is a place in a story that I am writing! As the story gets written, the map is sure to change and characters are sure to be added. I anticipate that I will generate many maps and illustrations as the story moves forward.

I’m always excited to see the fantasy maps that others are making, as well as read about the stories that inspired those maps. Please share yours if you’d like! And happy mapping!

Me making the fantasy map

Hey, it’s me with Kystfjell in the background. Action shot! Whoa.

NCAA Basketball: Who’s Come the Farthest?

If you visit ESPN’s website, you can find the team rosters for all the NCAA Basketball teams that made it to the NCAA tournament. On that site, ESPN lists the players’ number, position, year, and hometown, among a few other statistics. A couple of my colleagues, Nick Brueggemann and Gregory Brunner, did some mapping with this data. I asked them if I could take their dataset and crunch it a little further. There is a ton more that could be done with this information. And maybe I will someday, but here’s what I have done for now to spatially visualize the NCAA D1 Basketball Tournament team roster data:

I decided to map the women and men athletes’ hometowns as graduated symbols, where hometown sizes are based upon the amount of athletes that come from there. The men and women hometown maps are separated in order to more easily identify the different locations. These maps started out with world city points and labels, but I removed them for the sake of decluttering the visualization. I was able to identify the lat long of the athletes’ hometowns using ArcGIS. I then calculated the distance from each player’s hometown to the city that their team is located; here is a really handy blog post that someone wrote eleven years ago; I often refer to that post when calculating distances between lat long coordinates. Calculating the distance of each athlete’s hometown to their team city allowed me to identify the average recruit distance per team, along with the farthest (and closest) recruit distance. Other than the maps themselves, I haven’t done any visualization for teams on the lower end of the average recruit distance. (Maybe in few days ?) There are a lot of players whose hometown is also the the same as their team’s city.

 

 

Flow Mapping Bezier Curves onto the HTML Canvas

*This post was written in February 2017. It was the first collaborative geovisual project between Jacob and myself. We have since presented this mapping method at the North American Cartographic Information Society annual conference in Montreal, Quebec in October 2017.

This post presents our Canvas-Flowmap-Layer, an extension of the ArcGIS API for JavaScript (Esri JSAPI) for the purpose of mapping the flow of objects from an origin point to a destination point by using a Bezier curve. Collaboration with friend and colleague, Jacob Wasilkowski, was precisely the push I needed to finally (re)begin releasing some (non-work-related) mapping and dataviz projects into the wild. It is imperative to note that much of the responsibility for this repo rests on Jacob’s shoulders, even though it is under my name.

Flow maps, academically speaking

In Bernhard Jenny et al.’s recent article Design principles for origin-destination flow maps(2016) flow maps are defined as maps that “visualize movement using a static image and demonstrate not only which places have been affected by movement but also the direction and volume of movement” (p 1). Jenny et al.’s article points out the lack of empirical user studies for flow map design, stating that “Design principles for flow maps are largely based on expert intuition and aesthetic considerations” (p. 1). I am the type of cartographer who finds extreme liberation in these two aforementioned points, which I will restate below:

The lack of empirically based cartographic design principles results in the freedom of relying on intuition and aesthetics.

So for all the mappers out there reading this, I hope you find extreme freedom in knowing that this Canvas-Flowmap-Layer is only one of many ways to map the journey of phenomenon from one spot on Earth to another. It is one method that we are quite comfortable in presenting, and have successfully implemented versions of the Canvas-Flowmap-Layer in a few real world scenarios.

Curves with Rules

Common solutions for dynamic flow mapping include using straight lines and geodesic lines, both of which have immediate visual limitations. Using a Bezier curve for flow map lines, where each curve on the map is created with the same formula benefits mappers twofold:

  1. While straight lines are not inherently ugly, an overlapping or convergence of them across a global dataset can be. A series of Bezier curves created with the same formula, even when displaying an over-abundance, has a mathematically congruent flow that greatly improves the map’s aesthetics.

2. The single formula that is used to draw each of the Bezier curves means that map readers can immediately know the direction of the line without having to add animation (explained below).

RULE DEFINED

Ultimately, the flow line’s direction from the origin is the order of the bend (a northwest direction’s curve bends north-then-west)

  • northwest from the origin, the curvature will bend northward-then-west
  • southwest from the origin, the curvature will bend southward-then-west
  • northeast from the origin, the curvature will bend northward-then-east
  • southeast from the origin, the curvature will bend southward-then-east

As you can see from the image below, if the end point is due north (or south, east, or west) of the origin, the resulting curve is a straight line.

THE POINTS

Each point is added to the map twice – the first instance of each point is an invisible “ghost” Esri graphic with associated attribute data, geometry, etc. We call these “ghost” graphics since the symbology has no outline or fill color. These ghost graphics are required for 1) having a to- and from- point from which to connect the Bezier curve, and 2) allowing the points to provide functionality and interactivity that developers and users are familiar with.

The second instance of the points is what you actually see on the map. Each one of these points has the same radius as their ghost counterparts that lie directly beneath them, but are created by finding the screen coordinates of the ghost graphic and then placing them onto the HTML canvas. By doing this, we are able to draw the curved lines that connect the points onto the canvas.

THE LINES

I was drafting Bezier curves onto prototypes before this became an actual interactive map layer. Once it came time to add the curves to the map canvas there was no shortage of resources for figuring it out. Here is one of the many useful out there. The lines are added to the HTML canvas by finding the screen coordinates of the points, and then using those coordinates in the .bezierCurveTo() canvas method.

LINE ANIMATION

The convexity or concavity of the curve does convey the direction of the flow line, but the directionality won’t be easily intuited due to its novelty. In the event that this mapping technique catches like wildfire, we can delete the second part of the previous sentence. In the meantime, we’ve added line animations, similar to the “ants marching” effect, with a nice easing effect inspired by this Kirupa post. The Canvas-Flowmap-Layer uses two separate lines when animation is added, although two lines are not required to achieve animation. The first line is the solid static Bezier curve, and the second line is the dotted or hashed animated Bezier curve that sits on top of the first line. Those animated traveling dots are actually a curved line with really a  big gap setting in the hash pattern.

 

 

Demos and code

You’ll find out a lot more about how the Canvas-Flowmap-Layer was constructed by diving into the code, and checking out the comparison and main demos.

Limitations

Projection – This is not a limitation, just a bit of information. This particular instance of using a single formula Bezier curve for flow mapping onto the canvas was implemented with Web Mercator projection. This cartographic method is not limited Web Mercator, provided that you are mapping a projected map and grabbing the correct screen coordinates from your start and end points.

Connection vs. route – The Canvas-Flowmap-Layer is ideal for the flow of things, where the route can be abstracted to a simple conveyance of start point connected to end point. Our data did not contain route information. When mapping thematically for things like the flow of ideas, phone calls, or even the logistical flow of things that – while they do take an actual route – can be reduced to its mere start-end connectivity. (In fact, oftentimes adding actual routes can clutter the map with chart junk). There are things to note, though, when giving precedence to connectivity over actual route. Namely, for example, when you have things from Seattle being shipped to Tokyo, but the flowline travels across Europe, Kazakhstan, and China on its way to Tokyo, when the shipment might have actually traveled across the Pacific Ocean. Jacob has cleverly built in a cool feature where the flowline updates as you pan the map so that most/all of each flowline can be viewed (at the small scales). It is totally feasible to add this sort of directional information to your data (where true direction matters). It might be pretty prudent to restrict users to your dataset’s minimum and maximum extent as much as possible. We didn’t add that restriction to our sample maps.

6 (Really 3) steps to Create an Antique-looking Concentric Shoreline Effect in Adobe Illustrator

6 (Really 3) steps to Create an Antique-looking Concentric Shoreline Effect in Adobe Illustrator

*This is a re-post from my former site*

I’m currently working on a map that I’m intending to incorporate Victorian (and maybe a little bit of steampunk) visual influences. For inspiration, I was initially looking at a lot of beautiful Victorian-era (roughly 1830s-1900, some say a little later) sketches of contraptions, including some diagrams of intricate devices that went nowhere.  Then I started to investigate common styling techniques used in maps that were made during the Victorian era. The USGS Historical Topo Map Explorer was a great resource for this investigation. I really wanted to incorporate the sort of concentric shoreline effect that was evident in all the earliest USGS topos, and elsewhere. Check out these cool mid-late 1800s maps in the slideshow that use this effect: