Kasia Gąsiewska-Holc: 3D Relief Map in Blender and Tableau

 

This is a guest blog post from one of our favorite regular contributors, Kasia Gąsiewska-Holc. Based in Poland, Kasia works remotely as a Senior BI Analyst at EcoVadis, a data analytics company based in Warsaw. She is also a Tableau Public Ambassador and she loves using Tableau as a creative outlet for data viz experimentations.

 

She’s also one of the best Tableau developers and designers we’ve ever seen–her work is absolutely breathtaking, technically advanced, and just all around awe-inspiring. If you’re not already following her on Tableau Public, stop reading right now and go follow her first.

 

When I first came across Wendy Shijia’s breathtaking 3D maps, I knew I wanted to try something similar–a visualization that doesn’t just show data, but tells a story through terrain, texture, and context. That spark of inspiration led me on a journey through QGIS, Blender, and finally Tableau, to create a stylized view of tourism in Poland using a custom 3D relief map as a backdrop of my analysis. The result was my visualization, Between Forests and Shores.


 

In this post, I’ll walk you through how I built the map and combined it with data to deliver a compelling experience.

 

Tools Used

As noted above, I used several tools to bring this all together. Below is a list of all tools and resources I leveraged.

 

1) Blender Relief Tutorial by Daniel Huffman - This tutorial was absolutely essential for understanding Blender’s approach to terrain modeling. It covers everything from Blender basics to rendering beautiful relief maps.

 

2) Joe Davies’ Step-by-Step Guide on GitHub - A more condensed tutorial that walks through the entire relief map process. Very helpful for Blender setup, though QGIS instructions were a bit sparse.

 

3) QGIS - for Digital Elevation Model (DEM) processing. More on this shortly…

 

4) Blender - Free and open source tool for creating and rendering the 3D graphics.

 

5) Photoshop (optional) - Used for minor touchups.

 

6) Tableau - For interactive visualization and storytelling.

 

Step 1: Building the Relief Map

Creating a 3D map from scratch might sound intimidating, but with the right tools and workflow, it becomes an incredibly rewarding process. Here’s how I approached it:

 

Preparing Terrain Data in QGIS

I started in QGIS by downloading digital elevation model (DEM) data for Poland from geoportal.gov.pl. There are many services providing free DEM data, so depending on the location you’re trying to visualise, you might have to do a bit of digging to find the DEM model that fits your need. DEMs give you the elevation of the land surface (white=high elevation; black=low elevation) and are the perfect starting point for relief modeling.

 

In QGIS:

 

1) Set project Coordinate Reference System* (CRS) to EPSG: 3867

 

2) Loaded the DEM layer with elevation data

 

3) Cropped it to focus only on Poland’s borders using a shapefile

 

4) Exported the raster as a heightmap (a grayscale image that Blender can interpret as elevation) via a .tif file

 

5) Optional: I used Photoshop to boost contrast and adjust levels in the heightmap. This made color transitions in Blender easier later on.


 

* What is CRS and Why It Mattered in This Project

The Coordinate Reference System (CRS) defines how geographic data is projected. For this project, using EPSG:3867 ensured perfect alignment between the DEM, shapefiles, and Tableau data. Mismatched CRSs can lead to distorted maps and misaligned data marks, so consistency is key.

 

Sculpting the Terrain in Blender

Next stop: Blender. Here’s where the magic happens. It was my first time using it, and I’ll admit, it was overwhelming at first! Thankfully, Daniel Huffman’s tutorial made the process approachable. Below is a quick summary of the key steps, but feel free to check out Daniel’s tutorial for a detailed step-by-step guide:

 

1) Imported the heightmap and used the Displace modifier to convert the grayscale into 3D terrain.

 

2) Adjusted the scale and lighting to enhance the topographical features.

 

3) Applied soft lighting and camera angles to give the map a dramatic yet informative feel.

 

4) Created two versions:

 

Full-Color: Default view in the viz.

Black-and-White: Alternative view; created to enhance clarity when detailed city-level data points are overlaid.

 

5) Exported both maps to high-resolution PNG.



This is what the final node setup looked like in Blender’s Shader Editor for the full-color map. For the grayscale version, I just modified the color ramp node.



Rendering the final image gave me a custom, stylized relief map of Poland, one that truly feels tangible.

 

Step 2: Marrying Map and Data in Tableau

Once the map was ready, it was time to switch gears to Tableau. My idea was to show which places attract the most visitors and how tourism compares to the local population (i.e. how many tourists visit different Polish regions relative to its residents?) This “tourists per resident” ratio gives a fun and insightful lens into the country’s most visited areas.

 

In Tableau:

 

1) I added the relief map as a static background image.*

 

2) Plotted data points using city-level marks, removing the default map color fill and all map background layers.

 

3) Used dot mark size encoding to show which cities receive the most tourists (tourists per resident).

 

4) Added an interactive toggle (top right) to switch between the annotated map view (colored version)  and a detailed city breakdown (black-and-white version).

 

*Since my map was fairly static, I did not need to have the zoom-in capability built into it. This is why using the map just as a background was sufficient for this project. If, however, my data would require to have the ability to zoom into specific regions/cities, I would consider using it as a map background image, like so:


 

Bonus Tip!! I always add custom images (including the relief map in this viz) via a web page object in Tableau, pointing to an externally hosted image. This ensures the sharpest possible quality in the published viz.

 

Finishing Touches

 

1) The default view highlights well-known tourist areas like Kaszuby, Mazury, and the Baltic coast, with a soft narrative layer that appears upon hovering over each region.

 

2) A prominent button at the top right allows viewers to explore more granular data per area.

 

3) I kept tooltips to a minimum and added a description panel and annotations to the side to keep the map visually clean.

Behind the Map

Maps like this are more than just data displays–they’re invitations. While the goal was to share insights into Poland’s tourism landscape, it was also very much about creating something visually stunning and eye-catching, a piece that would draw people in and spark curiosity at first glance. For me, it was about learning new tools and seeing familiar places from a new perspective. For others, especially viewers unfamiliar with Poland, I hope this serves as an invitation to discover the country’s diverse geography and travel culture through data.

Thanks for reading! If you’d like to explore the final viz, you can check out the final version here: Between Forests and Shores

 

And if you’d like to try building your own relief map, feel free to reach out. I’d love to hear what stories your landscapes can tell.

 

Kasia Gąsiewska-Holc, September 22, 2025

Twitter | LinkedIn | Tableau Public


No comments:

Powered by Blogger.