Calculating distance using a Google Maps​

Calculating distance using Google Maps

This article demonstrates how to get the distance between two locations using a Google API in the knowledge map, allowing the user to enter a postcodes for Rainbird to calculate their distance or travel duration. 

To demonstrate how Rainbird can use data from Google Maps to complete this query, this article will explain how to build a “Calculate distance” map that uses data injected from a Google map. The API we are using for this map allows us to calculate the distance in kilometres or the travel time in seconds. Both values can be converted to suit the purpose (i.e. miles, minutes)

Intent

This Mechanic becomes most useful to check the distance between two locations. For example to calculate how much time it would take the user to travel to an underground station or how many miles are between the user’s address and a hotel address. The results can be used for further calculations and might provide the closest underground station or how much petrol/battery time is required to travel to the hotel location.

Applicability

When can this pattern be applied?

  • When calculating the distance between two locations 

  • When estimating travel duration between two locations 

Limitations

The map only calculates the distance between 2 UK post codes, so foreign postcodes won’t be recognised. 

To create this map we used the Generic structures of the Elbow, Triangle technique and API call

Figure 1: Generic build Structures with API connector

Motivation

Both “Post code” and “Train station” are string concepts.

This example queries the distance between the user’s postcode and the train station postcode. 

The relationship “has travel distance” returns the travel duration in seconds, allowing the user to check the duration between two post codes.

Follow the steps to recreate the build pattern example:

Create four string concepts:

  • Person’ – the Subject 
  • Post Code’ – the Subjects postcode
  • Train Station’ – the train station postcode
  • Distance’ – the travel duration between the user and the train station 

Create the following relationships:

  • has postcode – asks the user to enter his postcode (we created the instance SE1 3RU: Kipling St.)
  • goes to train station (we created the instance SE1 9SP: London Bridge)
  • to the train station

Figure 2: Map framework

Now it’s time to create the Google API that will calculate the distance in the knowledge map.

Click on a white space in Rainbird Studio and select ‘Add Datasource’. 

Title the datasource as ‘Travel time’; naming the datasource helps to distinguish multiple datasources in your map.

Enter ‘Person’ within the Subject (%S) field underneath: ‘Person’ is our subject for the facts the datasource will create.

Next, open the ‘Input variables’ section to create the following variables: 

%S [Person] has post code %POST_CODE 

%POST_CODE to the train station %TRAIN_STATION

Figure 3: Create the subject of the datasource and both variables

Both {{variables}} are used in the following API Request field.

Figure 4: GET API Request

The URL can be copy/pasted into your map:

https://maps.googleapis.com/maps/api/directions/json?origin={{%POST_CODE}}&destination={{%TRAIN_STATION}}&transit&key=AIzaSyBDIPUqSDI9Fcs6dsijb2CY8DHYlN8w3mU

The API call is contructed in 3 parts:

https://maps.googleapis.com/maps/api/directions/json?origin

This part of the API call tells Rainbird to open the URL – access it using an api – get directions, return in json code with both destinations: 

={{%POST_CODE}}&destination={{%TRAIN_STATION}}

This part of the API call provides the URL with our  start and end variables (origin and destination)

&transit&key=AIzaSyBDIPUqSDI9Fcs6dsijb2CY8DHYlN8w3mU

The last part of the API calls tells the URL that the user is asking for the distance by public transport (transit) and providing the API key.

We skip the Advanced section of the panel and open the ‘Output Facts’ section to create the following outcome for our main relationship ‘has travel distance:

Figure 5: has travel distance Outcome

This section in this API URL provides the path segments where to find the information. As shown in Figure 6, to return the time in seconds return the value listed in duration -> value.

Note: To return the distance we would choose distance -> value

Figure 6: display of the full API

The values can be easily converted into different measures, using mathematical functions:

Convert: distance result / 1609.344 = km in miles
duration result / 3600 = seconds in hours

Click on the ‘Export.rbird’ button to download the ‘Calculate Distance’ map used in this example. The knowledge map can then be imported into your Rainbird Studio.

Query and Result

The query is build as usual on the rule ‘has travel distance’. The outcome of the query will be distance in seconds.

Article Feedback form
Did you find this article useful?