Building a map to fit a sphere

As you might have figured, I love maps, and I love drawing maps. So I've decided to share some of how I build them in case it helps you. Here's some guidance on building a map to fit to a sphere, something I've noticed often gets neglected with fictional settings.

Unless your name is Terry Pratchett, your world is probably round, like ours. If your world isn't round, well, disregard everything I say, if it is, read on. (And if you think our world is not round, please do all of us a favour and leave now, because neither of us are going to be happy if we continue this conversation.)

For a quick introduction to map projections and their use (or lack thereof) in fantasy, check out this video from Fantasy Cartography, which really is a series worth picking up if you're into... well, fantasy cartography.

("IT'S ROUND!")

One more note before we get started: I'm one person on the internet who likes to make maps, and the way I work might not be the way you like to work. I've come to my own personal workflow by reading tutorials from other people who also like to make maps and adapting them to my needs as I learn more, because it turns out everyone has their own preferences. Inevitably, you'll do the same. Take what you need from this page, discard what you don't, and kludge things to make them work better for you.


The Master Map

There's no such thing as the best map projection, only what works for the situation you're in. But when I'm making maps of a world, I prefer to start out with a master map of the whole world in equirectangular projection. You've probably seen this sort of map before. Here's Earth in equirectangular (source: Wikipedia).

Equidistant projection of Earth

You can see that the lines of latitude and longitude form an equally spaced grid, and the polar regions are stretched out horizontally. I'm not picking this projection for the lack of distortion, but because a map like this can be easily imported into other programs like GProjector (more on using GProjector coming up!) to make nicely projected regional maps, or turned into an overlay on virtual globes like Google Earth. These are all great ways to visualise your world as a sphere and make it feel like a real place, as well as improve the accuracy of your maps.

As an example, here's the master map I made for Dimentiara, the setting of Stephen Greene's comic Battle Kreaturez:

Equidistant projection of Dimentiara

Aside: at this point, some of you might be saying "But I only have the one continent I want to map out. I don't know what the other lands are/want to keep them mysterious/don't want to bother mapping something I won't use." That's okay! If you just want to focus on one continent, draw it on your master map in detail and fudge the rest, or leave it blank - so long as your main landmass is in the right spot and the master map is the right size and shape, you can pretend the other bits aren't there. I like to make my master maps look nice and detailed everywhere because I like mapping whole worlds, but it's totally okay to have a master map with one detailed bit and Here Be Dragons all over the rest. Nobody has to see it but you if you don't want them to.

So let's make this map.


Drawing the Map

First things first, fire up your drawing program of choice. I draw all my maps in GIMP, but that's because (a) I'm cheap and (b) that's what I'm used to - it's not what you have to use. As long as it has layers, you'll be fine. Make a nice big image for your master map. GProjector at the time of writing can handle images up to 15,000 pixels wide, so that's a good upper bound, but you probably won't need to go that far - a few thousand is usually fine. Whatever size you choose, your map must be half as tall as it is wide. I see a lot of fantasy world maps that are square in shape, but that won't do for what we're going for here.

Now draw your map. This is a projection tutorial, so I'm not going to go into how to do the design or art side - things like style and geography could full whole books of tutorials. Draw whatever you want. I won't stop you, I just want to help you get it looking good on a sphere.

Example map

Here's my quick and dirty world map that I'll be using as an example. It's not great, I know, but I'm keeping it simple to use as an example - just basic landforms, no mountains or anything else. One thing to be aware of, though, is that if you have any features that go off the left or right sides of the map, they should match up to the opposite side, else your world will have an obvious seam when you project it.

Example map with matching features marked

Earlier we looked at how equirectangular maps get more stretched out as you get closer to the pole. We're supposed to be drawing an equirectangular map right now, but at this stage, you can ignore all that. We'll fix them in the next step, which is coming right up. For now, draw your landforms the way they look best to you and don't stress over it.


Fixing the Poles

Okay, now you can stress over it. It's okay, it's not that bad. To recap, we've set up a map with the right shape and drawn our landforms. I'm going to skip forward right now and show off what my example map looks like in GProjector with an orthographic projection, which shows you what it would look like from space. You don't need to open GProjector right now; I'm just using it as an example.

Example map in GProjector, showing polar distortion

You can see that there's a lot of pinching distortion at the poles and the northern continent becomes narrower. Let's fix it. The way I do it is to use a program called Hugin. Credit where credit's due, I adapted this method from a Cartographer's Guild tutorial. I don't know an awful lot about Hugin beyond these steps - it's probably capable of way more cool things if you want to experiment.

Export your master map to a format like jpg or png. Open up Hugin, and make sure you're in the first tab, called Assistant. Click to Load Image button and select the file you just created. You should then see a popup titled "Camera and Lens Data". Select "Equirectangular" from the Lens Type menu if it isn't already selected, and set the horizontal field of view to 360 degrees. (You'll notice the focal length fields will fill in automatically, leave them as they are.)

Lens data popup in Hugin

Now you should see your map loaded into the program. From the menu at the top, go to Interface, and click Advanced. A new window will pop up. Click the Preview Panorama button (should be third from left, mouseover to see the button names).

Preview panorama button in Hugin

Another new window... click Numerical Transforms.

Numerical transform button in Hugin

Now we're getting somewhere. Enter '90' into the box marked 'Roll' (leave the others at 0) and click OK.

Applying a 90 degree roll in Hugin

Go back to the first window that popped up and go to the Stitcher tab. You shouldn't need to edit any of the settings here, just click the "Stitch!" button.

Stitcher tab in Hugin

Note: depending on your version of Hugin, the steps might be slightly different, but the same principle applies - import your image, find the option for a numerical transform, and apply a roll value of 90.

It'll probably ask you to save the project at this point. Save as whatever and wherever you want - you probably won't be coming back to it, though. Now it'll ask for the output, again, save as whatever you want, but you'll be needing this image later, so remember it. Wait for it to process, and you're done with Hugin for the moment. Now open up the result. It'll look something like this - a weird, distorted version of your map. I've circled the regions of interest here - they're not parts of Hugin's output.

Example map with 90 degree roll added

Those circled regions are your poles as they'd look viewed from above - south to the left, north to the right - and you can see the same pinching distortion as before. If you're having trouble following what's going on here, this is the map of Earth from before with the same transform applied. You can see how the polar regions are visible as they should be, while the equator is warped around them. (The white spikes are left over from the image's border - you can disregard them.)

Earth map with 90 degree roll added

Anyway, those polar regions are the bits you want to edit. What I like to do is to add a second layer on the image, and then redraw the coastlines on there as you need. Fix any pinching, make sure the landforms are the right size and shape - but don't worry about the equatorial regions. Sure they look all weird now, but this is just temporary. Here's what I have in the end.

Example map with 90 degree roll and coastlines redrawn

I did some heavy reworking at this stage, which I admit was on purpose - I deliberately drew a map with complex and narrow features at the poles to demonstrate how warped things can get from your original map. You may need to do more or less work depending on how complex your polar features area and how broken the projected version looks to you. I then export this image without the background layer, so it looks like this.

The same image with only the redrawn coastlines visible

Not much of a map, but give it a moment...

Reopen Hugin, import your redrawn polar coasts image, and then go through all the transformation stages again, but with one key difference - when you get to the Numerical Transform window, you need to enter the opposite value to before in the Roll box. Either 270 or -90 will do it. The point is to undo the warping we did on the original image. Stitch, export, and now my image looks like this:

The redrawn coastlines with an opposite roll transformation added

Now you can see the proper shape for your projected polar coastlines. Notice how the shapes are a lot more stretched out.

I can then import it into my original map file as a new layer...

The redrawn coastlines overlaid over the original map

...and use it to trace my new coastlines. Then I delete the guide layer, and I've got this - a properly adjusted equirectangular master map.

The fixed map

Tip: you don't have to do the distortion and redrawing all at once. Typically I might start out with coastlines like you see here, then do another pass for mountains and another for rivers, or whatever I need, just to check it all still looks right and fix anything wonky.


Using GProjector

Now you have a master map, you can project it with GProjector into whatever you like. Download and install it, and open it up. You'll see a dialog asking for your image file. Give it an exported version of your master map. You'll get an input dialog asking for the projection and position, but as we already have a full-world equirectangular map, which is what it defaults to, you don't need to do anything here.

Gprojector input window

Click Ok, and your world is ready to view! GProjector is a lot of fun to play about with, and it's simple enough I don't plan on doing a full tutorial, but here's a quick rundown of the tabs:

  • Projection: should be pretty obvious. There's a massive array of projections to choose from, and it'd take a whole tutorial to go through which one is best for your map, so I won't here. My advice is to see what other people use for landforms that are a similar shape and size, and see what projection they use. Most atlases should tell you the projection somewhere on the page, including any relevant settings. As a quick guide, I like Orthographic for viewing the world as it would appear from space, Azimuthal Equal Area for smaller landforms, and Conic Equidistant for continents, but experiment and see what others use and what works best.
  • Graticule: lets you overlay lines of latitude and longitude over the image.
  • Overlays: lets you overlay additional images. GProjector comes with a few existing maps of Earth, and you may find on starting it up one of them is being used as an overlay - you can turn it off here.
  • Shading and Border: misc visual effects.

Once you have a map that you like, you can then export it from the File menu and use as-is or as a basis for a new map. Here's some orthographic projections looking over both poles.

North polar view South polar view

If you have any questions or comments, email me - kaliumlynx@protonmail.com.