Spatial Functions
Spatial functions allow you to perform advanced spatial analysis and combine spatial files with data in other formats like text files or spreadsheets. For example, you might have a spatial file of city council districts, and a text file containing latitude and longitude coordinates of reported potholes. You can use a spatial calculation when creating your data source to join these files and analyse which district takes the longest to repair potholes.
You can also create a line that connects two data points for origin-destination maps. For example, you might have a spreadsheet of public transportation data that tells you where commuters began and ended their trips. You can use a spatial calculation to see what paths commuters are taking.
Spatial functions available in Tableau
AREA
Syntax | AREA(Spatial Polygon, 'units') |
Output | Number |
Definition | Returns the total surface area of a <spatial polygon> . |
Example | AREA([Geometry], 'feet') |
Notes | Supported unit names (must be in quotation marks in the calculation, such as
|
BUFFER
Syntax | BUFFER(Spatial Point, distance, 'units')
|
Output | Geometry |
Definition | For spatial points, returns a polygon shape centred over a For linestrings, computes the polygons formed by including all points within the radius distance from the linestring. |
Example | BUFFER([Spatial Point Geometry], 25, 'mi') BUFFER(MAKEPOINT(47.59, -122.32), 3, 'km') BUFFER(MAKELINE(MAKEPOINT(0, 20),MAKEPOINT (30, 30)),20,'km')) |
Notes | Supported unit names (must be in quotation marks in the calculation, such as
|
DIFFERENCE
Syntax | DIFFERENCE(Spatial, Spatial) |
Output | Spatial Polygon |
Definition | Computes the portions of regions remaining when all regions in the second argument are carved out of the first argument in areas that overlap. Discards regions from the second argument in areas that don't overlap. |
Example | DIFFERENCE(Spatial Polygon1, Spatial Polygon2) |
Notes | Supports spatial polygons and multipolygons, not spatial points or lines. |
DISTANCE
Syntax | DISTANCE(SpatialPoint1, SpatialPoint2, 'units') |
Output | Number |
Definition | Returns the distance measurement between two points in the specified <unit> . |
Example | DISTANCE([Origin Point],[Destination Point], 'km') |
Notes | Supported unit names (must be in quotation marks in the calculation, such as
|
Database limitations | This function can only be created with a live connection but will continue to work if the data source is converted to an extract. |
INTERSECTION
Syntax | INTERSECTION (spatial, spatial) |
Output | Polygon |
Definition | Computes and returns the portions of regions in the second argument that overlap regions in the first argument. |
Example | INTERSECTION (Spatial Polygon1, Spatial Polygon2) |
Notes | Supports spatial polygons and multipolygons, not spatial points or lines. |
INTERSECTS
Syntax | INTERSECTS (geometry1, geometry2) |
Output | Boolean |
Definition | Returns true or false indicating whether two geometries overlap in space. |
Notes | Supported combinations: point/polygon, line/polygon and polygon/polygon. |
MAKELINE
Syntax | MAKELINE(SpatialPoint1, SpatialPoint2) |
Output | Geometry (line) |
Definition | Generates a line mark between two points |
Example | MAKELINE(MAKEPOINT(47.59, -122.32), MAKEPOINT(48.5, -123.1)) |
Notes | Useful for building origin-destination maps. |
MAKEPOINT
Syntax | MAKEPOINT(latitude, longitude, [SRID]) |
Output | Geometry (point) |
Definition | Converts data from If the optional |
Example | MAKEPOINT(48.5, -123.1) MAKEPOINT([AirportLatitude], [AirportLongitude]) MAKEPOINT([Xcoord],[Ycoord], 3493) |
Notes |
You can use |
LENGTH
Syntax | LENGTH(geometry, 'units') |
Output | Number |
Definition | Returns the geodetic path length of the line string or strings in the <geometry> using the given <units> . |
Example | LENGTH([Spatial], 'metres') |
Notes | The result is <NaN> if the geometry argument has no linestrings, though other elements are permitted. |
OUTLINE
Syntax | OUTLINE(spatial polygon) |
Output | Geometry |
Definition | Converts a polygon geometry into linestrings. |
Notes | Useful for creating a separate layer for an outline that can be styled differently than the fill. Supports polygons within multipolygons. |
SHAPETYPE
Syntax | SHAPETYPE(geometry) |
Output | String |
Definition | Returns a string describing the structure of the spatial <geometry> , such as Empty, Point, MultiPoint, LineString, MultiLinestring, Polygon, MultiPolygon, Mixed and unsupported. |
Example | SHAPETYPE(MAKEPOINT(48.5, -123.1)) = "Point" |
SYMDIFFERENCE
Syntax | SYMDIFFERENCE(spatial, spatial) |
Output | Geometry |
Definition | Computes any portions of regions from the second argument that overlap regions in the first argument and discards from both. Returns the remaining portions of regions from both arguments. |
Example |
|
VALIDATE
Syntax | VALIDATE(spatial geometry) |
Output | Geometry |
Definition | Confirms topological correctness of the geometry in your spatial value. If the value cannot be used for analysis due to problems such as a polygon’s perimeter intersecting itself, then the result will be a null. If the geometry is correct, the result will be the original geometry. |
Example |
|
Use a spatial calculation
Create a spatial data source using MAKEPOINT
You can use MAKEPOINT to spatially-enable a data source so that it can be joined with a spatial file using a spatial join. To use MAKEPOINT, your data must contain latitude and longitude coordinates.
- Open Tableau and connect to a spatial data source.
- Under Connections, click Add to add a second, non-spatial data source.
The two data sources are added to the canvas.
Tip: To get the Join dialog box to appear, double-click (control + click on Mac) a data source on the canvas.
Drag the non-spatial data source onto the Join dialog box.
- Click on the Join icon.
- In the Join dialog box that appears, do the following:
- Select a join type.
- Under Data Source, select a spatial field from your spatial file to join by. Spatial fields have a globe icon next to them.
- For the non-spatial data source, select Create Join Calculation as the join clause.
The calculation should look something like this:
MAKEPOINT(Latitude,Longitude)
- Select OK.
Select the Intersects join clause operator to create a data source for spatial analysis.
- When finished, close the Join dialog box.
For more information on spatial joins, see Join Spatial Files in Tableau.
Create a visualisation using MAKELINE
In Tableau Desktop, download the Flight Path workbook from Tableau Public, available here(Link opens in a new window).
- Navigate to a new worksheet.
- Select Analysis > Create Calculated Field.
- In the calculation that opens, do the following:
- Name the calculated field Flight Paths
- Enter the following formula
- When finished, click OK.
- From the Data pane, double-click Flight Paths to add it to your visualisation, which should automatically render as a map.
MAKELINE(MAKEPOINT([Lat],[Lng]),MAKEPOINT([Dest Lat],[Dest Lng]))
This formula takes latitude and longitude coordinates from your origin and destination cities and turns them into geographic points for spatial analysis. Those coordinates are used to build to two-point lines between origin and destination.
The new calculated field appears under Dimensions in the Data pane. Just like your other fields, you can use it in one or more visualisations.
The calculation automatically produces curved geodesic lines when the lines span longer expanses of the globe.
Visualise an area with BUFFER
In Tableau Desktop, download the Flight Path workbook from Tableau Public, available here(Link opens in a new window).
- Navigate to a new worksheet.
- Right-click on the Data pane and select Create Parameter.
- In the Parameter dialog that opens, set the options below:
- Name the parameter Buffer Distance
- Set the Data Type to Integer
- Set Allowable values to Range
- Set the Minimum range to 100, the Maximum range to 1000, and the step size to 100.
- When finished, click OK.
- Select Analysis > Create Calculated Field.
- In the calculation that opens, do the following:
- Name the calculated field Buffer
- Enter the following formula
- When finished, click OK.
- From the Data pane, double-click on Buffer to add it to your visualisation, which should automatically be rendered as a map.
- Drag Destination to the Colour panel on the Marks card to complete the visualisation.
This parameter allows us to customise the radius of our buffer, ranging from 100 to 1000 miles. Right-click the parameter and select Show Parameter.
BUFFER(MAKEPOINT([Dest Lat],[Dest Lng]),[Buffer Distance],"miles")
The BUFFER calculation takes point spatial data and converts it into shapes with a radius in miles determined by the Buffer Distance parameter.
Note: Because BUFFER can only be used with point spatial data, we're converting the latitude and longitude data into a point with Makepoint, as demonstrated in the previous example.
The new calculated field appears in the Data pane. Just like your other fields, you can use it in one or more visualisations.
Note: If your view does not look like the image above, make sure that the Mark type is set to Map and not Circle. For more information on Marks type, see Change the Type of Mark in the View.