As I mentioned in a previous post, I’ve been interested in creating maps with 3D data lately. I made a map of downtown Richmond from lidar data before, but I decided that I want to make a large rendering of the data to potentially use as a basemap for future projects. It took a little work (and over 60 hours of rendering time in Blender!), but I was able to make a pretty cool Lidar shaded relief.
I made a little Leaflet application to display the lidar data. You can take a look at it by clicking here. Be sure to check out the 4 overlays by clicking the layer button on the top right. You can view the plain lidar data as well as OpenStreetMap, VGIN Land Cover, and a 19th Century map as overlays.
Here are a couple highlights:
The Data
I downloaded the lidar data from the USGS National Map. The land cover data was from VGIN’s GIS Clearinghouse. The OpenStreetMap layer is obviously from OpenStreetMap and I downloaded the 19th Century Richmond map from the Library of Congress.
The Method
The challenge I faced when creating this map was figuring out how to render such a massive high-resolution DEM in Blender without having my computer blow up. I found that my computer can only handle a DEM of around 2000x2000px before sometimes crashing. I had to split the source DEM into overlapping squares (229 total), render each square in Blender (that took a couple days), then stitch them back together. Luckily doing all of that was pretty easy with my friend Python. I would like to write a tutorial that would act as a Python companion to Daniel Huffman’s blender shaded relief tutorial, but it turns out that grad school is pretty time consuming! That’ll have to wait for a break in the future.
Thanks for taking a look!
Hi Daniel,
This looks very impressive. Any tips on getting the LIDAR data into blender? Did you convert the lidar data to a heightmap first (through e.g. QGIS) or do you use another method?
Thanks!
Thanks Sander! I converted the lidar data to raster in python using Whitebox Tools. Specifically the function I used was lidar_idw_interpolation(). The users manual is well written and helpful, especially the Processing LiDAR Data section, but you can also find a tutorial [here]. I had to play around with the resolution, radius, and weight parameters to find an output with high detail, but low noise.