The United States is a big place and it's hard to have a feeling for where all of the people live. There are hundreds of millions of people after all. So many Americans.
To get a better grasp of this I made a 3D map of the US based on the population density of each county. The more people per square mile, the taller it gets.
Then, to actually feel it, I printed the whole thing up on my 3D printer. Here's how that came to be.
Step 1: Get the Data
This part was easy. The Census data for 2010 is readily available here. You can get all sorts of information, but all I need for this project are two bits of data per county: it's county code and its population density.
The map in the image here is from the Census site, but I couldn't use it so easily with the color scale and the state lines. It also breaks the counties into just 6 groups. I'm starting from CSV data instead.
Step 2: Get a Map
Thanks to the hard work of other people this part is easy as well. Just go here to get an SVG file. Each county is identified with its county code.
Step 3: Convert Population Densities
The final system for the image will only allow a scale from 0 to 255. I still need to have a floor that isn't zero, so the final scale turns out to be from 5 to 255.
What I could do is make the whole thing a linear scale with the max population value convert to 255 and the lowest convert to 5.
The problem with this is New York City. With a density of 66,940 people per square mile (!!!) it blows away the rest of the values and would push many of the counties farther down the scale. So instead I capped the value at 20,409 people per square mile, the value of Queens.
Finally, these numbers are converted to hexadecimal. "FF" here is 255.
You can see the full spreadsheet here.
Step 4: Convert Values to CSS
With a bit more spreadsheet magic, each of these hexadecimal values can be converted to CSS. The values are repeated so that the number can be assigned to the RGB values.
Step 5: Apply CSS to SVG
This very dark image is the result. To make it easier to see the second image is a brighter version with more contrast.
I added a 1 pixel blur with CSS. This was to smooth out the borders so the that final shapes are more rounded.
Alaska and Hawaii are in here, but I edited them out since the continental 48 would be enough to get a feeling here.
You can try it yourself here. If you made changes and want to see the results, replace the contents of counties.css with the last column from the previous spreadsheet.
Step 6: Convert to STL in Fusion 360
For this step, I followed the instructions in JON-A-TRON's Turn a 2D Image Into a 3D Model instructable.
I stopped at step 6 there since the file was large and my computer kept stalling out trying to do the T-Spline conversion.
Step 7: Crop and Stretch
The STL is almost there. There's still the bounding rectangle on the bottom and the heights could be exaggerated. So I used Meshmixer to drop the rectangle, shrink the total size down, and increase the height to 4x.
Step 8: Print It Out
I wanted a slightly faster print time so I dropped a bit more of the bottom of the file and printed it out in PLA. Once again, NYC is a problem with that super tall and skinny spike. I've had OK success with printing it so far.
In the future I might separate NYC from the rest so that I can print it sideways and just glue it on afterwards.