While there’s no shortage of guides for creating simplified, diagrammatic transit maps, finding resources and tutorials on how to make geographically accurate transit maps – like those used by many bus agencies – is a completely different story. Hopefully, this post will serve to change that.
Before we dive into the specifics, a quick disclaimer: I stumbled upon this mapping method just yesterday. It’s entirely possible that transit agencies have a different approach to creating their geographically accurate maps. But what I do know is that this technique works for me, and that’s what I’m excited to share with you. It’s all about finding what works for your project and running with it.
The first thing you want to take care of with these types of maps is the road network in the background. Generally, these consist of roads, parks, water (rivers & lakes) and general landmasses. The good thing about the method that I use, however, is that you are free to add any symbol you want to. Maybe you want a symbol for train stations, or you want to show where parking garages are – or any other information available in OpenStreetMap data.
For this project, you’ll need two key pieces of software: Maperitive for rendering the base maps, and a robust vector design program like Adobe Illustrator, Affinity Designer, or Inkscape (free).
Given the intricate nature of vector street maps, especially when mapping out entire cities, it’s essential that you have a decently powerful computer, and lots of RAM.
If your PC isn’t quite up to speed, I’d recommend sticking to smaller areas, such as one neighborhood or a few city blocks to avoid overwhelming your computer, or having to deal with your vector design software lagging.
The first step to creating a geographically accurate transit map is installing maperitive. On the home page, after you click download the latest version, it will download a zip file. Extract that to a new file, and run the .exe file in the folder created.
Once you do that, it should load into the web version of OpenStreetMap. Although this does look pretty decent in the web version, it’s far too much information to try showing in the background of a transit map. Luckily, maperitive lets you set up some rules so you only get the essential bits.
Below, I’ve provided two rule sets that I use for my maps: one for a dark mode map, and one for a light mode map. The script itself is also pretty self explanatory, so modifying these is easy.
Once you download these, you want to move them into the maperitive folder you extracted in the previous step. Place them in the rules folder.
The way Maperitive works is that it shows you the web version of OpenStreetMap until you download the OSM data. This means that, until you download, you can’t apply any of the rules. They only work for the vector versions of the map.
Scroll over to the part of the map that you want to download the data for, and then click map, then download OSM Data (Overpass API)
The map will look pretty terrible once you first download the OSM data. Don’t worry – the rules files above take care of that, and greatly simplify and style this map.
To load the rules in, you want to type the following command into the command prompt window at the bottom of your screen:
use-ruleset location="[File location path]\lightbackgroundmap.mrules"
You want to swap out [File location path] with the location you stored the file at (make sure it’s in the rules folder). On Windows, this is possible by right clicking the file. Make sure the path is in quotes.
The map should (hopefully) automatically update to the selected style. For future maps, all you have to do to tweak the appearance is click the switch to rules button in the map menu and select the file you just imported.
Sometimes, like in this example, part of a river will show up as a thin line instead of the actual shape of the river. Unfortunately, the only workaround is to keep widening your selection area until it shows up. If it continues not showing up, you may have to manually trace part of the river. This is a weird bug with the way that OSM handles river geometries.
The final step in maperitive is to export the map as an SVG file, and import it into your vector design software. This is possible in the tools menu.
There are two options here that you can use: export to SVG (for inkscape), and export to SVG (for Adobe Illustrator. For Affinity Designer (my software of choice), I went with the inkscape option, though I believe the Illustrator option would work too.
The bitmap option is far too low of a quality to be practical for most applications.
Although it’s technically possible to export map data directly from OpenStreetMap (OSM) to an SVG file, this method has its drawbacks. The SVGs produced are typically limited to small areas and come burdened with an excess of unnecessary details, resulting in a cluttered and disorganized layer structure. By utilizing Maperitive, you bypass these complications entirely. Maperitive streamlines the process, allowing you to swiftly clean up and organize OSM SVG exports, transforming them into usable maps within seconds.
In my approach to map-making, I’ve intentionally omitted street names from my rule files. My rationale is twofold: street names tend to clutter the visual space, and they significantly increase file sizes, which can lead to lag and a cumbersome editing experience. Additionally, I’ve opted for thinner lines to de-emphasize the road network, allowing the transit routes to stand out more prominently. This choice aligns with my preference for a cleaner aesthetic, where I manually label only the main thoroughfares and those streets that actually service transit, ensuring a focused and user-friendly map.
You should be able to directly open the SVG file (found in Maperitive’s output folder) into your vector graphics software of choice. I like to immediately lock the created layers so it effectively functions like a blank template – otherwise, you won’t be able to highlight (drag select) anything without also picking up a bunch of roads or the background layer.
You’ll also notice that all of the various types of roads are sorted into layers based on type. This is a benefit of using maperitive: you can easily tweak the width of certain road elements to your liking.
Now, you are free to draw transit lines and buses on top of the map to your heart’s content.
Here’s an example of a map I’m working on of a theoretical streetcar system for the national mall (Still working on wrapping it up).
It’s important to note that although OpenStreetMap is free to use, the license end users fall under requires you to add a credit label to the corner of the map, like shown in this map (this is not legal advice, and you should refer to OSM’s license info for further information).
Feel free to let me know if you have any questions, or if you want to share a map you created using this strategy!