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: