Tableau has significant geospatial capabilities that most users only partially exploit. This guide covers the full range: built-in geocoding, custom geocoding for non-standard locations, symbol maps vs filled maps vs density maps, spatial joins with custom shapefiles, and the design decisions that make geographic visualisations analytically useful rather than just visually impressive.
Tableau has had geographic visualisation capabilities since its early versions, and they have grown substantially over time. The gap between "putting dots on a map" and using Tableau's full geospatial toolkit is significant — and the more sophisticated capabilities are genuinely useful for analytical problems that simpler map implementations cannot address.
Built-in Geocoding
Tableau maintains a geocoding database that resolves geographic names to coordinates and boundary polygons. City names, county names, state names, country names, postal codes, and airport codes are all resolved automatically when Tableau recognises the field type.
Assign geographic roles to fields via the field right-click menu: Geographic Role → City, State/Province, Country, etc. Tableau attempts to auto-detect geographic fields by name; correct any that are misidentified.
Built-in geocoding has known limitations:
**Ambiguity**: "Springfield" exists in 35 US states. Without a disambiguating state field, Tableau picks one arbitrarily. For any city-level analysis, always include a state field and set up a geographic hierarchy (Country > State > City) or a calculated field that concatenates city and state to create unique location identifiers.
**Coverage**: built-in geocoding covers major cities globally but is not comprehensive for smaller municipalities, particularly outside North America and Europe. Cities with populations under 50,000 outside major markets may not resolve.
**Custom locations**: anything that is not a standard geographic entity — retail store locations, warehouse sites, delivery zones, sales territories — requires custom geocoding.
Symbol Maps vs Filled Maps vs Density Maps
**Symbol maps** place a mark (usually a circle) at each geographic location, with size and colour encoding measures. They are appropriate when each mark represents a distinct entity — a store, a customer, an event — and the geographic distribution of those entities is analytically meaningful. Symbol maps can show both the number of entities in a region (mark size) and a metric about those entities (mark colour) simultaneously.
Symbol maps become illegible when too many marks overlap in dense regions. Address this with mark transparency, smaller mark sizes, or filtering to the geographic region of interest.
**Filled maps** (choropleth maps) fill geographic polygons with colour based on a measure. They are appropriate for aggregate analysis at a regional level — revenue by state, customer density by postal code, growth rate by territory. The region is the unit of analysis, not individual entities within it.
The canonical filled map mistake is using raw counts rather than rates. A state with 10 million residents will have more orders than a state with 1 million residents even if the per-capita rate is identical. Always normalise by population, territory size, or another relevant denominator when comparing geographic units of different sizes.
**Density maps** (heatmaps) show concentration of points using a kernel density estimate — areas with many nearby points appear brighter. They are appropriate when the number of individual points is too large for a symbol map (millions of delivery locations, GPS traces, customer addresses) and the analytical question is about concentration and distribution rather than individual entities.
Custom Geocoding for Non-Standard Locations
When built-in geocoding does not cover your locations, you have two options: latitude/longitude coordinates or custom polygon shapefiles.
**Latitude/longitude coordinates**: if your data contains lat/lon fields, Tableau can use them directly as geographic coordinates. Convert the lat and lon fields to decimal degrees and assign them the geographic roles Latitude and Longitude. Drag them to the Rows and Columns shelves; Tableau renders a map with marks at each coordinate. This approach works for any geographic entity for which you can obtain coordinates.
For addresses without coordinates, geocoding services (Google Maps Geocoding API, HERE, Mapbox) convert addresses to lat/lon. Most organisations with significant location data have already geocoded their address database. If not, geocoding tools are available as dbt packages or as Python libraries (geopy).
**Custom shapefiles**: for territory or zone analysis, import a custom shapefile (polygon boundaries) into Tableau's custom geocoding. Tableau reads shapefiles, MapInfo files, GeoJSON, and KML. Once imported, the territories appear as fillable geographic polygons just like built-in regions.
Custom territory shapefiles are appropriate for: sales territories that do not align with administrative boundaries, delivery zones, service areas, or any analysis where the analytical unit is a custom polygon rather than a named administrative region.
Spatial Joins
Tableau's spatial join capability allows you to join a data source containing point coordinates to a data source containing polygon boundaries — assigning each point to the polygon it falls within. This is useful for: assigning customer addresses to sales territories, assigning delivery events to service zones, or assigning GPS waypoints to geofence regions.
Configure a spatial join in the Data Source tab by joining a points dataset to a polygon dataset using the "Intersects" join condition. Tableau handles the point-in-polygon computation. The result is a dataset where each point record has the attributes of its containing polygon — enabling grouping and aggregation by territory.
Spatial joins are computationally expensive for large point datasets. For millions of points, pre-computing the spatial join in the warehouse (Snowflake, BigQuery, and PostGIS all support native spatial functions) is faster than relying on Tableau's spatial join.
Map Layer Control
Tableau's map background uses OpenStreetMap or Mapbox depending on configuration. The background layer visibility is controlled through Map > Background Maps:
- **Normal**: full street map background with labels
- **Light**: muted background suitable for data-focused maps
- **Dark**: dark background (less common in enterprise BI contexts)
- **Satellite**: aerial imagery
- **None**: no background; useful for custom shapefile overlays where the geographic context is self-evident from the polygon shapes
Map layers (Map > Map Layers) control which geographic features are drawn: country borders, state borders, city labels, terrain, coastlines. Remove layers that add visual noise without analytical value. For a US state-level analysis, removing street-level detail and keeping only state and country borders improves readability.
Territory Analysis and Spatial Aggregation
A frequent geospatial analytical problem: aggregate point-level data to territory level and compare territories on a performance metric. The workflow:
1. Spatial join to assign each point to a territory polygon
2. Aggregate by territory: SUM of revenue, COUNT of customers, AVG of metric
3. Filled map showing territory polygons coloured by the aggregate metric
4. Optional: add mark labels showing the aggregate value inside each territory polygon
The territory comparison is meaningful only if territories are comparable. Sales territories of widely different sizes or population densities require normalisation before comparison — revenue per territory is less useful than revenue per square mile or revenue per prospective customer in territory.
For interactive territory analysis, parameter actions or set actions allow users to select territories and see detail views for the selected territories. Clicking a territory on the filled map filters a detail dashboard to show only data from that territory.
Designing for Readability
The most common geographic visualisation mistake is encoding too much information. A map that shows size, colour, shape, and label simultaneously for each mark overwhelms the viewer. Decide on the primary analytical question the map answers and encode for that question only.
For symbol maps: if size is the primary encoding (showing volume), colour should encode a secondary categorical distinction (territory, type). If colour is the primary encoding (showing performance), use a single mark size so size does not compete with colour as a signal.
For filled maps: the colour scale should be appropriate for the data. Sequential colour scales (light to dark of one hue) for single-direction metrics like revenue. Diverging colour scales (blue through white to red) for metrics where both high and low values are significant and the midpoint is meaningful (growth rates, index comparisons to baseline).
Our Tableau consulting practice builds geographic analysis capabilities into enterprise Tableau environments — contact us to discuss your geospatial analytics requirements.
A former Microsoft data architect audits your data foundation, identifies your top priorities, and sends you a written plan. Free. No pitch.
Book a Call →