

Chris Webb's BI Blog: Displaying Routes On A Map In Power BI
source link: https://blog.crossjoin.co.uk/2020/08/23/displaying-routes-on-a-map-in-power-bi/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Displaying Routes On A Map In Power BI
In last week’s post I described the new Power Query M functions for working with Well Known Text objects, and in a post a few weeks ago I showed how you can use the Icon Map custom visual to display Well Known Text data. In this post I’ll show you how you can put all this together to do something really useful: display routes on a map in a Power BI report.
First of all you’ll need to download the latest version of the Icon Map custom visual here, because at the time of writing the version in AppSource doesn’t have the WKT functionality needed. Second, you’ll need a data source with a table of latitudes and longitudes that represent points on a route that you want to plot. I’m going to use the Azure Maps Get Route Directions API as my data source; to keep things simple I’m going to use the Shared Key authentication method for this API, but I’ll explain below why this can be a problem in the real world. To follow the example you’ll need to create an Azure Maps Account in the Azure Portal so you can get your own key.
Here’s a simple example to start off with. The following M code:
let
Source = Json.Document(
Web.Contents(
[ApiKeyName = "subscription-key", Query
= [
#"api-version" = "1.0",
query
= "51.502243,-0.140073:51.517777,-0.138621",
travelMode = "pedestrian"
]]
)
),
routes = Source[routes],
routes1 = routes{0},
legs = routes1[legs],
legs1 = legs{0},
points = legs1[points],
PointsList = List.Transform(
points,
each GeographyPoint.From(
[longitude],
[latitude]
)
),
LineRecord = [Kind = "LINESTRING", Points
= PointsList],
WKTLineString = Geography.ToWellKnownText(
LineRecord
),
ToTable = #table(
type table[
Category = number,
WKT = text,
Size = number
],
{{1, WKTLineString, 1}}
)
in
ToTable
…calls the Azure Maps Get Route Directions API to get a walking route between two locations in central London. When you run the query you’ll be prompted to authenticate – choose the Web API option and enter your key. It’s a very basic example of how the API can be used: I have assumed there’s only one leg in the route, then taken the list of latitudes and longitudes for that single leg, turned that into a list of points and then turned that list into a linestring as I showed in last week’s blog post. Here’s the output in the Icon Map visual:

This is what the table returned by the query looks like:

The Category and Size columns aren’t very interesting; Icon Map needs these columns to display data. The WKT column contains the linestring object. Here’s how the visual is set up in Power BI:

We can do better than this though. In the example pbix file I’ve uploaded here, I’ve created a more sophisticated query that asks for six different routes between the two locations used above that all go via one waypoint (so there are two legs in the route data returned). I won’t go through the M code because there’s nothing interesting in it, but the end result is a report that allows you to plot these six different routes in different colours on a map and use a slicer to hide and show them, along with some information on their length and travel time:

One last thing to point out regarding these examples is that they won’t refresh if you publish them to the Power BI Service because I’ve used the ApiKeyName option in Web.Contents to handle key authentication (see here) and that isn’t supported in the Service yet. To work around this you’ll need to hard code the Azure Maps API key in your query and use the Skip Test Connection option in the Power BI Service.
Like this:
Recommend
-
7
A Function To Visualise Parallelism In Power Query Diagnostics Data Most of the time I’ve spent looking at Power Query Query Diagnostics data, I’ve been l...
-
6
Exporting Data From Websites For Use In Power BI Using Power Automate UI Flows As a Power BI developer I know how Power Query makes it easy to get data from web sources, but I also know there are limits to what it can...
-
5
Power BI FastTrack Recognized Solution Architect 2021 Nominations Open Are you really, really good at designing Power BI solutions? If so, you should nominate yourself for Microsoft’s Power BI FastTrack Recognized Solution Archite...
-
13
Power BI Report Performance And The Number Of Visuals On A Page When you’re faced with a slow Power BI report it’s very easy to assume that the problem is something to do with the dataset, how it’s modelled and how th...
-
11
Viewing Data Privacy Partition Information With Power Query Query Diagnostics Back in May 2020 a new feature was added to Power BI’s Power Query Query Diagnos...
-
38
The M Behind The New Power Query Data Types In Excel The big news this week – at least for me – was the release of the new Power Query data types to the Excel insiders channel. You can read all about it here:
-
17
Optimising The Performance Of Power Query Merges In Power BI, Part 5: Cross Joins In a late addition to the series of posts that I started
-
6
Using Small Multiples In Power BI To Improve Report Performance While the long-awaited small multiples feature...
-
9
Abstract Many great visualization techniques, such as kernel density mapping, can help us map and analyze crime concentrations. However, sometimes, it may be more beneficial to visualize crime concentrations along a linear network, s...
-
8
Get WIRED for just $29.99 $10. Subscribe Now...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK