A couple months ago, I was on the internet and ran across Below The Boat, a website that sells wooden topographical maps of interesting lakefloors and seafloors around the world. Now, something you should know about me is that my family loves maps. My parents have nautical charts up on the walls in several rooms of the house, whenever I move states I get fold-out roadmaps of that state as gifts, and the first thing I got for my new apartment out of college was a big 5-foot map of the world to hang above my desk. So as you can imagine, when I ran across this idea I immediately decided that I had to make one. Christmas was coming up, so what better than to make my family a map of our hometown of Portland, ME?
I drew inspiration from Below the Boat (which shows the shape of the seafloor with flat land), this reddit post (which showed the shape of the land with flat water), and this beautiful table. With the idea in mind, I set off down a rabbit hole of cartography websites to figure out how the hell I was going to do this.
The design and build process that I came up with are too long to throw into one post, so I broke them out into a separate two post how-to guide. These should give you enough detail and direction to be able to make your own if you want to.
In the end, I’m incredibly happy with how it turned out, and the family loved it! Here are some more pics of the finished product. Click on them to enlarge.
And as a side note, if anyone has a laser cutter they’re not using any more and that they’d be willing to part with for ≤$2k, I’m looking for one! I promise to do cool stuff with it.
Update: Wow, after an overwhelmingly positive response on reddit, I’ve decided to spin this up into a side business doing custom maps on commission. It will take some time to set up, but if you want to hear when launch happens go ahead and throw your email on strataforma.com (my working name for now).
Today I’ll be walking you through the process how to of make a wooden laser-cut topo map. I made one of my hometown of Portland, ME as a 2015 Christmas present for my family, and wanted to share how I did it since it took quite a bit of figuring out. If you’re not sure what I’m talking about, go check out pictures of the final product! Otherwise, here is a breakdown of the design phase, which continues to the build phase in the next post.
The design process:
- Download the needed software.
- Find elevation and road data and download it.
- Load up the elevation data and extract contour lines.
- Export the contour lines as .svg files.
- Load and export the road data as well.
- Load your .svg files and clean them up.
- Separate out your vectors into elevation layers.
- Add any custom art you want.
- Triple check everything to make sure it’s right.
- Export to a laser cutter format and send it off.
Let’s get started!
1. Download the needed software
You are going to need to download two pieces of software:
- QGIS, to load elevation and road data (free).
- A vector graphics editor such as Adobe Illustrator (paid) or Inkscape (free).
The number and depth of incredibly niche communities on the internet never ceases to surprise me. For example: cartographers! Before this project I had never considered the existence of a rich culture of map-makers. Turns out the cartography community is huge, ranging from from a wikipedia-style map of the world, to people drawing crazy maps of imaginary places, to hugely complex pieces of free open-source software to create custom maps. This last one is QGIS, which we’re going to use to load the raw elevation/road data and extract contour lines. It has far more capability than I can hope to understand, but is pretty straightforward for our purpose.
I used Illustrator for this project since I had it already, so my instructions will be for that. But Inkscape should work just as well – we won’t be doing anything fancy that would be program-specific.
I was completely new to QGIS and mostly new to Illustrator at the onset of this project, so if there are ways to speed up this process that I missed, please let me know in the comments! And if you run into issues, I won’t be of any help – your best bet is to use google and the forums dedicated to the software. I’ll be a bit more detailed with the QGIS process since Illustrator/Inkscape are really well documented and you should be able to figure out unfamiliar steps much easier.
2. Find elevation and road data and download it
The US Federal Government provides nationwide geographical data for free through the US Geological Survey website. However, I found it fairly hard to navigate and had a lot easier time going through my State. Here is the link to the Maine Office of GIS (Geographical Information System) that we’ll be using. Every state should have a similar website, and internationally I expect most developed countries to also provide this sort of data.
We are looking for two things: a digital elevation model (DEM), and a shapefile of our area’s roads. You can find both on that page. Other things of note which we won’t be using are the National Hydrography Dataset (for lakes and rivers), Lake Depth Soundings, and Bathymetry (for ocean depth, which would be necessary if the DEM didn’t include the depths in the port of Portland).
3. Load up the elevation data and extract contour lines
Now that you have your elevation data, it’s time to load it up into QGIS. Open up QGIS Desktop, and click the ‘Add Raster Layer’ button (circled in red). Navigate to your DEM file and click ‘ok’ on the default coordinate reference selection window. Your window should now look something like this:
Zoom into your area of interest (in this case, the Portland peninsula). If you’re using a 4-year old laptop like me, this can be slow to zoom and pan around. Once you have your view, click ‘Raster’ > ‘Extraction’ > ‘Contour…’ on the top title bar. In the window that pops up, select a path for your output file and give it a name. This will create a folder with that name and put your output contour files into it.
Now set your interval between contour lines. The DEM I’m using is in units of meters, so I put in ’10’ to give 10-meter (roughly 30 ft) contour lines. The contour lines will be every 10 meters as measured from sea level, which is fine since we’re on the coast. But if you want to a specific elevation as ‘0’ (such as if you were basing the map around an inland lake at say 235m), you can enter ‘-off 235’ as an option in the command window to offset the contour reference elevation.
Give it some time to chug through and process the data, and voila! Out spit the contours.
Now, this is still a bit messy. There are a bunch of tiny contours that are going to be troublesome when cutting the wood. So let’s clean up this data by removing all the short contour lines.
To do this, right-click on your contours layer (circled in red), and click ‘Open Attribute Table’. From there, click ‘Open Field Calculator’ (circled in blue). Type in ‘length’ into the output field name, and ‘$length*1000’ into the expression text box. Our distances are in units of km, so ‘$length*1000’ will give us length in meters (I think – I’m actually not 100% sure what unit this length is measuring). Click ‘ok’ to have QGIS calculate the length of all the lines, and then ‘Save Edits’ to apply the change (circled in green). Close out the window, right-click on your contours layer, click ‘Toggle Editing’, and save the changes.
Now, to get rid of all the short contours, right-click on the contours layer and click ‘Filter…’. Type in ‘”length” > 10’ into the box to include only contour lines longer than 10m and hit ‘ok’. Play with this to get something you like.
4. Export the contour lines as .svg files
Now our data processing is done, and we can save this as something we can edit. Uncheck the box next to your DEM layer to hide the shaded elevation and leave just the contour lines. Click ‘New Print Composer’ (circled in red),and click through the pop up box. Click ‘Add new Map’ (circled in blue) and use the pointer to draw a box in the white print area. Click ‘Export to SVG’ (circled in green) and save it. Finally, something we can use with a normal vector graphics editor!
5. Load and export the road data as well
The road data is much simpler, since it’s already in a vector format. Click ‘Add Vector Layer’ (circled in red) to load your road data, and follow the same steps as above to export it to svg.
6. Load your .svg files and clean them up
Ok, we’re done with QGIS now. Fire up Illustrator and make a new document. Your artboard should be the size of the wood sheets you’re using (in my case, 24″ x 12″). Load up the contour and road .svg files you just created and put them in as layers into this new file. Make sure their fill is set to ‘transparent’, and they have a thin stroke so you can see the details in the line (these options are circled in red). Now is a good time to make sure all these lines are in the right format for the laser cutter, because you’ll be making a lot of copies of these lines. The cutter I was using wanted blue lines for cuts, and red lines or black fills for etching.
Manually align and resize the contours and roads so they overlap correctly and are at the scale you want. Note that the lines are all grouped together – you may want to right-click and hit ‘Ungroup’ a few times if you’re editing individual lines. Things are coming together now!
If you want, you can skip to the next step at this point. However the contour lines are fairly jagged and I wanted them to be smooth in the final map. You can use the ‘Object’ > ‘Path’ > ‘Simplify…’ tool to do a first pass and clean it up with the ‘Smooth Tool’. I actually found it faster to roughly trace out the contours by hand on a new layer and do some minimal smoothing after that.
I didn’t want to make the man-made objects smoothed out, however,so I went back and straightened the bridges and the piers. I took a screenshot of google maps and threw it in a new bottom layer to help me out with figuring out where stuff should be. Google uses a different map projection so things won’t line up exactly, but it’ll be close enough to give you an idea.
7. Separate out your vectors into elevation layers
Ok, so the file now pretty much looks like how we’ll want it in the final map from a top-down view. But we’ll have to separate out the data into different layers so we can feed it to the laser cutter one layer at a time.
Create a bunch of new layers – as many as you have elevation levels. I had seven levels (spanning 70 meters – about 210 feet) but remember that you need an extra blank layer for the back face. Which makes eight layers total. With 1/8″ wood sheets, that will give the final map a total thickness of 1 inch.
Now ungroup the contour lines and move them to their respective layers.
You should also add some margin to the outer edge. To do this, create a new top layer that contains two bounding boxes: an outer one that is the same size as the artboard, and an inner one set about 1/2″ inside the outer one. Give the outer bounding box a white fill, and the inner one a transparent fill with a blue stroke (for cutting). Select both bounding boxes, and using the pathfinder window click ‘Minus Back’. This creates a white frame that covers up everything outside the inner bounding box, giving you that margin.
Now comes the complicated part: having each layer show only the roads you want to have engraved on that layer. Enlarge the image below and look at the layers window to follow along. On each layer, you’ll want to have two copies of the current contours (here, 90ft), one copy of the roads, one copy of the layer above (here, 120ft), and one copy of the combined bounding boxes. Stack them like so:
- Roads go on the bottom. Use one of the current contours (90ft) to clip out all the roads you don’t want by selecting both and selecting ‘Minus Back’ in the pathfinder window. You’ll have to ungroup the contour lines and turn them all into a single compound path before doing this. Same with the roads.
- The other copy of the current contours (90ft) goes next, with a blue stroke (for cutting) and transparent fill.
- Next comes the copy of the contours from the next layer above (120ft), with a white fill. You can put a red stroke (for etching) on this which will help with positioning during construction, but I recommend leaving it transparent since it will be visible if you glue the pieces of wood slightly off-target. See here for a picture of what I mean.
- On top comes the combined bounding boxes to clean up the edge.
Do this for each layer, hiding all the ones you’re not working on so you can clearly see what’s happening. All of this masking is so that we don’t cut or etch things we don’t need to, since time on the laser is $$$.
Important: all this masking won’t work for every laser cutter! I was lucky enough to find a company with a setup that accepted masking, and if you own a laser cutter then you’ll probably be able to figure it out. However, if you’re using a service like Ponoko.com, their laser cutters completely ignore masks. Their cutters see everything as in Illustrator’s ‘Outline View’, which you can toggle by pressing ‘ctrl-y’, and the result isn’t pretty:
If you’re using an outside company to do your laser cutting, ask them specifically if masking will work. If it doesn’t, then you’ll have to manually delete all the lines you don’t want cut or etched. I haven’t found an efficient way to do this, so if anyone knows how please leave a comment!
8. Add any custom art you want
Some ideas of fun stuff to add:
- A compass rose. I grabbed this one off of wikipedia and removed everything but the star. Stick an ‘N’ on top for cardinality.
- Labeling. I put a big ‘Portland, Maine’ on mine, but you could be more fine-scaled by labeling areas, bodies of water, major roads, etc. For all labeling, you’ll have to convert the text to outlines once your wording and formatting is finalized.
- A scale.
- Elevation markers.
- A message. I have one on the back for the family with a short message, my name, and the date.
- Your signature (scan, import, and live trace).
- Bridges. I was up in the air about whether to include them, so I cut them separately so I could add them in later. After finishing it I definitely recommend including bridges as part of the first land layer.
- Points of interest: Buildings? Shipwrecks? Mountain peaks?
- More data! I put in ferry routes. You could add footpaths, a repeating texture to show forests or land cover, political boundaries, dots for cities, etc.
Make sure these are on the right layers!
Something else that you might find useful is slotted holes on the back so that you can hang the map on the wall with nails. I was about to make one hole in the center, but realized that since the final map will have more wood on one side than the other, it would tilt to that side when hung on the wall. So I made two symmetrical holes far enough apart to support the uneven weight distribution.
9. Triple check everything to make sure it’s right
Some things to look out for:
- Overlapping contour lines.
- Roads that go into the water.
- Etches that should be cuts, and cuts that should be etches.
- Lines on the wrong layers (hide all the layers and cycle through them one at a time).
Errors are pretty easy to redo if you own a laser cutter, but if you’re sending it out to a company it’ll take a week to redo and ship out to you. It might be worthwhile to print out the layers on printer paper, cut them out with scissors, stack them, and see if everything looks good before sending the files off.
10. Export to a suitable laser cutter format and send it off
You’re done with the design phase! Go through every layer, hide the rest, and export it to whatever format the laser cutter can use. A .eps should work. Zip up all these files, send them off to a few companies for quotes, and come back to this site in a week when your package shows up. You may want to order the other supplies you’ll need at this time, which I’ll go over in the next post. Next step is the build phase.
The build process:
- Gather supplies.
- Get your wood cut.
- Apply blue stain for the water layers.
- Glue everything together.
- Apply wood sealer.
- Frame it up.
Pretty easy – once you cut the wood it shouldn’t take more than half a day, most of which is waiting for stuff to dry.
1. Gather supplies
You’re going to need a couple things to put this map together:
- Wood sheets, as raw material to cut out of. I used 12″ x 24″ x 1/8″ sheets of birch plywood. Obviously if you’re ordering from a company you can skip this.
- Wood glue.
- Clamps – the more the merrier.
- Some blue wood stain, if you have water layers. I used this one off amazon. Make sure it’s water-based so you can dilute it.
- Some clear wood sealer or shellac.
- Some cheap brushes to put on the stain and the sealer.
- A frame, if you want it. I ordered a black metal frame from AmericanFrame.com and it worked perfectly. Make sure you get the right thickness for however thick your map is along the edges.
2. Get your wood cut
Either you have access to a laser cutter or you sent it off to a company to get it done at the end of the design phase. I was running out of time before Christmas to have it done, so I found a local company (Engrave Colorado) that was able to do it on short notice. Either way, in go raw sheets of wood, and out come your engraved pieces.
At this point you should stack up all your layers to make sure that everything is there and that you don’t have any major mistakes. You did triple check the files beforehand, right? Sandpaper should clean up any splinters or chips in the wood.
You also may notice that there is some discoloration along the cut edges of the wood. A damp cloth will rub that off if it bothers you.
3. Apply blue stain for the water layers
I wanted the water to get darker the deeper it was, and I think it was the right approach. Get your stain and test it out on some of the leftover scrap wood to see how blue it is at different dilution ratios (e.g. 1 part stain to 2 parts water). This is also a good time to cover your table with something to protect it from stray drops of blue stain.
Once you figure out what you want, sketch out on the wood where you need to apply stain and brush it on. When in doubt you can start with the darkest and keep diluting it as you go up layers. Remember too that you can always go too light and add more later to darken, but you can’t take away color. Wait for it all to dry before making the final call.
4. Glue everything together
You’ve all glued stuff before, so I’ll skip the preamble and just leave a few tips:
- Clamps are your friend here.
- Clamps also squeeze out a lot of extra glue, so you probably need less than you think – especially near edges.
- If you need to apply pressure in the middle and clamps won’t reach, use a scrap piece of wood to span across the top and clamp that.
- Build up layer by layer – having layers at different levels makes the above method difficult.
- Make sure your positioning is perfect, since this thing isn’t coming apart. Aligning the outside edges is probably most important.
- Tightening clamps can cause pieces to shift or twist. Be careful.
5. Apply wood sealer
Brush on your sealer (I used shellac), let it dry, and you’re done!
6. Frame it up
If your map turned out anything like mine, the outer edges aren’t perfectly aligned and have dried glue crusted on them. I was originally going to leave mine bare, but the guy at Engrave Colorado recommended getting some cheap black metal frames to finish it up (link to the supplier up in the list of supplies). Which was a really good call – it hides the imperfect edges and makes the whole thing look really polished in the end. Plus you won’t have to worry about chipping off small edge pieces when handling the map.
Congratulations! You’ve finished up a one-of-a-kind piece of art, and hopefully it’s turned out well. I’m still pretty astonished how well mine came out on the first try, even though there are a few things I would improve if I were to do it again.
I hope this how-to guide was useful, or at least interesting to read through. If you end up making your own topo map, please let me know! I’d love to hear about it. And if anyone has a laser cutter they’re not using any more and that they’d be willing to part with for ≤$2k, I’d love to hear about that too.