I've spent the last few years feeling increasingly frustrated by how difficult it seemed for historians to create decent-looking and fit-for-purpose maps. We so often have to resort to putting Google Maps screenshots in our slides, complete with all of the ahistorical clutter of modern borders and roads and business logos. It works, in that it provides some geographic context for our audience, but it doesn't reflect the care, precision and clarity we put in to every other element of our academic papers. But there didn't seem to be good alternatives, unless you were willing to read through lengthy tutorials and learn how to use GIS software from the ground up (although, if you are willing to do that, check out this tutorial!).
But as it happens, my dissertation project has ended up needed me to do exactly that. So here's the step-by-step tutorial I wish I had had a few years back, on how to use a free programme called QGIS to create a blank-canvas world map and add some dots and labels on it for cities and landmarks. Once you get everything downloaded, it'll take you about five minutes (or more if you're picky about colour choices) to create your very own customisable map, and while it's definitely not best-practice it's a lot more professional looking than screenshots of Google Maps.
This was originally posted as a Twitter thread, and for the most part I've tried to preserve the original wording and formatting. I've clearly indicated where I've interjected (mostly to correct errors or explain my rationale), mostly because I am a close-reading nerd at heart. I hope you find it helpful!
Humanities friends, stop using Google Maps screenshots in your presentations! Thanks to Technology™ it's easy and free to make maps from scratch that look professional (or at least professional enough), even with my level of extremely limited technical skills. A tutorial thread!
[edit: this is obviously now actually a tutorial blog I guess]
Disclaimer: I’m not a cartographer, this probably isn’t best practice in many ways, but IT’S EASY and that’s my main priority. Also, all of my screenshots have hideous hand-drawn arrows on them, I appreciate the irony that this is about making images look more professional.
Getting the data
Step one: download QGIS. It’s a big programme and it might take a while, but it’s open source and free forever. You can find the latest versions at https://qgis.org/en/site/forusers/download.html…. It doesn’t matter which version, since we’re just going to use super basic features.
Now set up a folder somewhere easy to find with a clear label like “GIS stuff.” This is where we’re going to store all the data we need to make pretty maps, and all the new data you create while customizing. Don’t use your Downloads folder to store anything!
Speaking of data, go to http://naturalearthdata.com/downloads and click through to the “physical” large-scale data (1:10m). Download “land,” “ocean” and “rivers + lake centrelines” for now.
[edit: if you're using a Mac they might download as normal files, not zipped files. That's okay! I'll note one little change to the process when we get to it below.]
[secondary edit: my rationale with the "rivers + lakes" was to introduce you to at least one kind of "line" type data. In retrospect the rivers data probably isn't the most useful for historical mapping, since riverbeds obviously change a lot over time, so you could probably leave it out. Maybe use the "coastlines" data instead to practice editing line files? Or just ignore all of this if it seems complex. It's not a huge deal.]
Getting the data into QGIS
It’s time to map some maps! Open QGIS and make a new project (ctrl+n). It will be blank for now, but let’s save it anyway as good practice. I’m calling mine “example_map” (see the top left).
Now to add the files we just downloaded as "layers." These are vector-type files, so open the “Layer” dropdown, then “Add Layer,” then “Add Vector Layer.” The shortcut key is ctrl+shift+v.
You’ll see a popup asking for a “source.” Click the three dots to navigate to your “GIS stuff” folder and click on the ne_10m_ocean.zip file. Then click “Add.”
Oceans will appear! Likely in a very strange colour [to be clear, the colours are all randomly generated at first]. Don’t worry, we’ll fix that later! Repeat for land and rivers.
Okay, so we have an oddly-coloured world map. It’s… pretty ugly. Let’s make it a bit prettier, in a minimalist (and therefore, conveniently, easy) sort of way.
Fixing the gross colours
Double-click the “land” layer (in the bottom left by default) to open the Layer Properties editor.
Head to the “Symbology” tab. You’ll see that there’s a “Simple fill” which has been set to a randomly generated, probably hideous colour. Click that, then click the “fill colour” and drag the opacity to zero in order to make it transparent. Hit “ok,” then “apply”!
The coastlines look a little too thick to me, so I’m going to open the land Layer Properties, select “simple fill” again and play around with “stroke width” until it’s thin enough. Make sure to zoom in to see what it looks like close up too! I went with 0.1 points (not mm).
[edit: okay, so I made a big mistake here - I forgot that the OCEAN shapefile has a border by default as well, so no matter how thin I made my landmasses' border it always seemed weirdly thick. I should have opened the ocean Layer Properties, gone to symbology and set the stroke style to "no stroke." Or, better yet, removed the stroke from both land AND ocean and downloaded the separate "coastlines" data from Natural Earth... but as you can see, this is all quibbling over little details, because what we're going for here is "good enough" rather than perfect!]
Finally, let’s make the rivers the same colour as the water, but perhaps a little darker because they’re so much thinner. Note that these don’t have a fill (because they’re lines), so things will look a little different.
There you have it - a blank canvas, free from most extraneous clutter, ready for you to start adding the historical geography you actually want to call attention to!
Customising your map
Okay, so how do we customize this? That depends a lot on the kind of map you want to make – but for now let’s assume that you’re just interested in creating a map of some 12th century cities in South Asia you happen to be writing a dissertation on.
We need a new vector layer to put our cities on. This time let’s CREATE rather than ADD a layer, of the “shapefile” type.
We’re going to need to do some set up – give it a file name, with the geometry type “point.” Add a field called “Name,” which we’ll use to keep track of the names of the individual cities we’re going to add.
[edit: this was probably the most complex step, and I rushed over it a little to try and make it seem less intimidating. Which backfired a little! In short, we're telling QGIS that we want to make some data which includes specific locations (points on the map), each of which will have a unique ID (by default, because computers like unique IDs for things) and a "name" which we're going to tell QGIS to print out next to each point. This is where you get a glimpse at the real power of the GIS beast: you could add fields for population, elevation, founding date, any historical data you can possibly associate with a single point on a map and get QGIS to show that data in complex and exciting ways... but maybe that's a project for another blog. For now, just make sure that you've got a "name" field as below.]
If you know where your cities are, skip this step – but I find it helpful to see some reference points to work out where to put the markers. So from the “Browser” panel (top left), open “XYZ Tiles” and then double-click “Open StreetMap.”
Hey look we’re back to Google! Or something similar anyway. We're going to use this pre-made modern map as a guide to help us add our own customer markers. Then we'll hide it again once we're done because, again, lots of modern clutter.
IMPORTANT: go to your layers tab and click and drag your new “OpenStreetMap” layer so that it’s UNDERNEATH the layer you’re going to add your cities to. Then (single-)click the cities layer so it’s highlighted. It should look like this:
[edit: to be clear, the order of this layers panel is the order things get drawn "on top of one another." Earlier I suggested that you make the land layer transparent, so that if you accidentally put the rivers underneath it you'd still be able to see them through. But you can imagine that if we had opaque land, rivers, maybe some mountains/elevation data etc. etc. then it would become really important that we were layering them all correctly!]
Okay, we’re ready to add things! Click the pencil thingie at the top of your screen to enable editing
Then click “add point feature.” Your cursor should change to a little target.
Zoom in to wherever you want to add a marker and left-click. A dialogue box will appear with the “fields” you said you wanted in this layer, including the “name” field. Tell QGIS what this marker is called (and give it a unique ID number too as good practice).
[edit: again, to be super clear - I'm creating a map marker for the historic city of Anurādhapura. I'm using the modern OpenStreetView to help me find the right place to put that marker (specifically, on what I happen to know is the ruins of the royal palace in the modern city of the same name. I'm giving this point the name Anurādhapura because that's what I want to eventually show up on my map next to this point. You can imagine how flexible this particular skill is - you can now drop a custom label anywhere in world you need it!]
Repeat as desired for your other city markers. I’m going to add one each for Poḷonnaruva and Māntai. Once you’re done adding markers, toggle editing off once again using the pencil button and save your changes. Then uncheck the box in the layers panel to hide OpenStreetMaps:
How do we turn those little dots into something more map-like and useful? First, open layer properties for your cities layer. I’m going to set the Symbology to a simple “dot white” preset out of sheer laziness…
And then open the Labels tab and change the drop-down to “Single labels.” Make sure that the “value” is set to your “name” field and hit apply!
I’m going to pretend as though I know what I’m doing aesthetically and change the font to Cambria, and while I’m at it I’m going to go into formatting and make it all upper-case. If you have a better eye for design than I do, this is where you get to have fun!
The labels get a little lost in the coastlines, so let’s open Layer Properties again, go back to labels and add a “buffer.”
And there we go – something a little more polished-looking, and a lot more customizable, than a Google Maps screenshot. You can obviously get a lot more fancy – use the print compositor! set up rules-based formatting! do actual geospatial analysis! – but for your basic PowerPoint, I think it’s alright. Happy mapping!
About this blog
I'm mostly using this to archive Twitter threads in a slightly more read-able format. No content final.