Total size is about 7' x 4'. Fifteen species of wood were used: oak (red & white), birch, ash, poplar, walnut, maple, butternut, cherry, cedar, mahogany (African and Honduran), pine, and two mystery woods.
Total size is about 7′ x 4′. Fifteen species of wood were used: oak (red & white), birch, ash, poplar, walnut, maple, butternut, cherry, cedar, mahogany (African and Honduran), pine, and two mystery woods.
Read articles from the magazine right here on Make:. Don’t have a subscription yet? Get one today.

A few months ago I decided to make a topographic map of the United States out of wood to hang on my wall using a CNC router and various pieces of free software (USGS data, QGIS, MeshLab) and Autodesk Fusion 360.

The end result is about 7 feet wide, 4 feet tall, and sticks out from the wall by about 3.5 inches. It uses 15 species of wood: oak (red & white), birch, ash, poplar, walnut, maple, butternut, cherry, cedar, mahogany (African and Honduran), pine, and two mystery woods. It was all cut on my homemade CNC router using leftover wood from other projects, and took about 200 hours of total time (generating models, CAM programming, prepping stock, cutting, fitting, and finishing).

You can download the completed files here if you want.

Alaska and Hawaii are not quite where they actually belong. It had to fit in the room, after all.
Alaska and Hawaii are not quite where they actually belong. It had to fit in the room, after all.

Project Steps

SOURCE DATA

The source data was the USGS Global 30 arc-second data (GTOPO30 at https://lta.cr.usgs.gov/GTOPO30). From EarthExplorer (http://earthexplorer.usgs.gov/), I downloaded the GeoTIFF files that covered the entire US. The ultimate goal is to get to an STL file that I can program to cut on my CNC, but there are a few steps to get there.

The source data was the USGS Global 30 arc-second data (GTOPO30). From EarthExplorer, I downloaded the GeoTIFF files that covered the entire US. The ultimate goal is to get to an STL file that I can program to cut on my CNC, but there are a few steps to get there.

I then used QGIS (http://www.qgis.org/en/site/) to load and merge the files together so I had a single image of the United States.The GeoTIFF files use grayscale values to represent elevation. I grabbed state borders from https://www.census.gov/geo/maps-data/data/cbf/cbf_state.html and loaded those into QGIS as well, and then used the clipper to split the image up so I had 50 individual files, one for each state.

I then used QGIS to load and merge the files together so I had a single image of the United States. The GeoTIFF files use grayscale values to represent elevation. I grabbed state borders from the census bureau’s cartographic boundary shapefiles and loaded those into QGIS as well. Then I used the clipper to split the image up so I had 50 individual files, one for each state.

TRANSFORM AND CONVERT

Then, I transformed each state into the desired coordinate system and exported as a .asc file (ArcInfo ASCII Grid). After a lot of research, I settled on the Lambert Conformal Conic projection for the continental United States.Then, I transformed each state into the desired coordinate system and exported as a .asc file (ArcInfo ASCII Grid). After a lot of research, I settled on the Lambert Conformal Conic projection for the continental United States.

TAKE INTO ACCUTRANS 3D TO GET AN STL FILE

I used AccuTrans3d (http://www.micromouse.ca/) to get to an STl file, loosely following the instructions at http://www.the3dprintedfuture.com/shapespeare/?p=41. First step is to load the ASC file for a state you just generated in using "Open DEM As"

I used AccuTrans 3d to get to an STl file, loosely following the instructions at the 3D Printed Future. First step is to load the ASC file for a state you just generated using “Open DEM As”

Default values work fine here
Default values work fine here

CONVERT TO 3D

10 - Convert to 3d (Small)

I picked the vertex interval to get to somewhere between 300k and 500k triangles: too many triangles and my computer can't handle it, too few and the end result looks bad. I dropped things at sea level.

I picked the vertex interval to get to somewhere between 300k and 500k triangles: too many triangles and my computer can’t handle it, too few and the end result looks bad. I dropped things at sea level.

Now you have a 3d surface, but it's pretty boring, because in reality, even big mountains are small compared to the overall size of the United States.

Now you have a 3d surface, but it’s pretty boring, because in reality, even big mountains are small compared to the overall size of the United States.

SCALING

I had two constrains on scale: 1) The continental US couldn't be more than about 4' tall to fit in the living room above the couch. 2) The z-travel on my CNC limits the max height of any state to about 3.5" Doing the math gets you scale factors. In my case, things are about 4x "too tall" relative to latitude and longitude directions. In hindsight, this is too tall -- I had a lot of trouble finding stock to make mountains that tall, a hard time cutting them, and they look overly pointy. If I did this again, I'd constrain my max height to about 2". After scaling, it looks a lot more interesting.

I had two constraints on scale:

1. The continental US couldn’t be more than about 4′ tall to fit in the living room above the couch.
2. The z-travel on my CNC limits the max height of any state to about 3.5″

Doing the math gets you scale factors. In my case, things are about 4 times “too tall” relative to latitude and longitude. In hindsight, this is too tall — I had a lot of trouble finding stock to make mountains that tall, a hard time cutting them, and they look overly pointy. If I did this again, I’d constrain my max height to about 2″.

After scaling, it looks a lot more interesting.

EXTRUDE IT!

Now it's scaled, but still just a surface, not a solid. Extruding makes it a solid.

Now it’s scaled, but it’s still just a surface and not a solid. Extruding makes it a solid.

You want a flat bottom, and since I was setting sea level to a quarter inch (6.35 mm), I used that as my thickness. When you've extruded it, you can save it as an STL. You're done in AccuTrans 3D now.

You want a flat bottom, and since I was setting sea level to a quarter inch (6.35 mm), I used that as my thickness.
When you’ve extruded it, you can save it as an STL. You’re done in AccuTrans 3D now.

TOO MANY TRIANGLES

The STL you just generated probably has 300k or more triangles in it. This is great for resolution, but most CAM packages won't handle that; I'll be using Autodesk Fusion 360 for this, which caps you at 10,000 faces to convert an imported STL. I used MeshLab (http://meshlab.sourceforge.net/) to reduce the complexity of the STLs. After importing the mesh, I used quadratic edge collapse decimation (whatever that means) to simplify the model.

The STL you just generated probably has 300k or more triangles in it. This is great for resolution, but most CAM packages won’t handle that; I’ll be using Autodesk Fusion 360 for this, which caps you at 10,000 faces to convert an imported STL.
I used MeshLab to reduce the complexity of the STLs. After importing the mesh, I used quadratic edge collapse decimation (whatever that means) to simplify the model.

10,000 faces is what we're going for, and we'd like to maintain the boundary of the shape.

10,000 faces is what we’re going for, and we’d like to maintain the boundary of the shape.

All done! Down under 10,000 faces, so we can export this simplified STL file. You can see we've lost some texture, especially in the plains. That's regrettable, but unavoidable, and you probably can't cut that much texture anyway.

All done! Down under 10,000 faces, so we can export this simplified STL file. You can see we’ve lost some texture, especially in the plains. That’s regrettable, but unavoidable, and you probably can’t cut that much texture anyway.

INTO FUSION360

Import the STL into Fusion 360 and then convert it so you have a body instead of a mesh body. Align the bottom of the state (the underside, if you will) with the Z-plane.

Import the STL into Fusion 360 and then convert it so you have a body instead of a mesh body. Align the bottom of the state (the underside, if you will) with the Z-plane.

INTERSECT THE BORDERS WITH THE Z-PLANE

To make it easy to pick the outline of the state so we can cut it out later, intersect the body with the z-plane.

To make it easy to pick the outline of the state so we can cut it out later, intersect the body with the z-plane. This will get you a sketch that perfectly outlines the state

Usually this sketch is closed, but occasionally there are a couple open segments to close. This is all the modeling work most states require. For a handful of states, some manual manipulation is required, mostly to delete islands.

Usually this sketch is closed, but occasionally there are a couple open segments to close. This is all the modeling work most states require. For a handful of states, some manual manipulation is required, mostly to delete islands.

INTO THE CAM WORKSPACE

Set up your stock, using your preferred coordinate system and stock size. I always use the bottom left corner of the stock as my zero (zeroing the tool on the table).

Set up your stock, using your preferred coordinate system and stock size. I always use the bottom left corner of the stock as my zero (zeroing the tool on the table).

THE SETUP

For most states, I used five operations across three tools. You'll have to figure out what works best for your machine, available tooling, tolerance for pain, etc., but I settled on the following five operations for most states:
For most states, I used five operations across three tools. You’ll have to figure out what works best for your machine, available tooling, tolerance for pain, etc., but I settled on the following five operations for most states:

For most states, I used five operations across three tools. You’ll have to figure out what works best for your machine, available tooling, tolerance for pain, etc., but I settled on the following five operations for most states:

1. A 3D adaptive clearing operation using a ½” router bit at quarter inch levels. This gets rid of most of the material pretty quickly and safely.

This gets rid of most of the material pretty quickly and safely.

2. A 2D contour operation using the same ½” router bit gets as close to the edges as it can, given its size. I constrain the adaptive clearing to the silhouette of the state, even though the stock is square. This operation takes care of removing everything else; no sense is removing it all bit by bit when you can just cut it all off at once.

This is where the intersected sketch made before comes in handy (selecting the contour to cut out).

I constrain the adaptive clearing to the silhouette of the state, even though the stock is square. This operation takes care of removing everything else; no sense is removing it all bit by bit when you can just cut it all off at once. This is where the intersected sketch made before comes in handy (selecting the contour to cut out).

3. A parallel pass with a ¼” ball nose end mill, ⅛” stepover, leaving 0.100″ of stock. This gets closer than the adaptive clearing operation, reducing stress on the smaller bit used for the upcoming finish pass.

This gets closer than the adaptive clearing operation, reducing stress on the smaller bit used for the upcoming finish pass.

4. A parallel pass with a very long ⅛” ball nose end mill, 0.010″ stepover

This finishing pass leaves a great surface finish, but takes a long time. Numerous end mills died in the course of this project.

5. A final 2D contour pass with a ⅛” bit cleans up what the ½” couldn’t get to

In hindsight, I wish I'd spent more time on adjusting the borders of states so that they could be cut with an 1/8" bit. I didn't - I used the actual state borders - so there was a lot of cleanup where sharp corners of states meet so that the whole map fit together decently.

In hindsight, I wish I’d spent more time adjusting the borders of states so that they could be cut with a ⅛” bit. I didn’t (I used the actual state borders) so there was a lot of cleanup where sharp corners of states meet so that the whole map fit together decently.

SIMULATED AND READY TO CUT

29 - Simulated and ready to cut (Small)

My trusty steed

Homemade CNC, roughly 4' x 4' travels. Loosely inspired by CNCRouterParts (and using a few of their parts), with some upgraded components.
Homemade CNC, roughly 4′ x 4′ travels. Loosely inspired by CNCRouterParts (and using a few of their parts), with some upgraded components.

I tried a lot of different fixturing and holddown methods. For the first fifteen states or so, I screwed into the blank from the underside using a sacrificial piece of wood or plastic, and then clamped that down to the table. After a few too many parts ruined due to those screws not being tight enough, or having gone too far into the state and ruining the part and an end mill, I settled on hot glue as the best way to hold down states. High quality hot glue, liberally applied, held every state rock solid through heavy machining, and it pops right off with a putty knife and a hammer. It tears up the table a little, but it's sacrificial anyway.

I tried a lot of different fixturing and hold-down methods. For the first fifteen states or so, I screwed into the blank from the underside using a sacrificial piece of wood or plastic, and then clamped that down to the table.

After a few too many parts were ruined due to those screws not being tight enough, or having gone too far into the state and ruining the part and an end mill, I settled on hot glue as the best way to hold down states. High quality hot glue, liberally applied, held every state rock solid through heavy machining, and it pops right off with a putty knife and a hammer. It tears up the table a little, but it’s sacrificial anyway.

Roughed Cut

Idaho has been through the first tool, with adaptive clearing and the first contour operation. At this tool change, I generally removed all of the uncut stock to avoid accidentally running into it with a shorter tool later on.

Idaho has been through the first tool, with adaptive clearing and the first contour operation. At this tool change, I generally removed all of the uncut stock to avoid accidentally running into it with a shorter tool later on.

California at the same state:

33 - California at the same state (Small)

After the ¼” ball nose parallel roughing pass:

Looking more like the right topography, but way too rough of a step over, and limited detail

Looking more like the right topography, but way too rough of a step over, and limited detail

Most of the way through the finishing pass with an ⅛” ball nose end mill:

35 - Most of the way through the finishing pass with an ⅛

Most of the way through the finishing pass with an ⅛” ball nose end mill:

36 - Most of the way through the finishing pass with an 18quot ball nose end mill (Small)

Let this finish, fit it to the neighboring states, spray with some shellac, and you’re done! Now, just repeat 49 more times. I started the whole thing around Christmas 2015 and finished in mid-April 2016. All told, probably 150 hours of shop time (prepping stock, cutting, fitting, finishing) and 50 hours of computer time (generating STLs, CAM programming) in total.