best.integration.ever – FME and What3words
As you may have noticed, FME recently gained support for what3words, in the form of a couple of new transformers available for free on the FME Store.
In case you aren’t aware what what3words does, or how it might be used with FME, here’s a little bit more information for you.
What is what3words?
what3words is a web service that defines spatial locations through a system of three unique words. For example, the main entrance to Safe Software’s office building is located at helipad.sponge.falcon
It’s a 3m grid, so each square in the above image has a different combination of words.
What is the use of this? Well, firstly, not all of the world has proper street addressing available, and even if it does a set of simple words might be more memorable. Secondly, to share a location that has no specific address (for example when my car breaks down at the side of the road) it’s much easier to provide a set of simple words, rather than numeric coordinates.
And now, FME provides what3words support. Let’s see how…
what3words and FME: technical
what3words is supported in FME by a couple of transformers; the What3WordsEncoder and What3WordsDecoder. The encoder turns spatial positions into a what3words sequence; the decoder turns a what3words sequence into spatial features.
Because they are on the FME Store, you obtain the transformers by simply typing their name into Workbench (Quick Add). They should be available for both FME2015 and FME2016.
Both transformers require a what3words API key, which you can get by signing up on their web site (it’s a two minute task).
NB: Once you’ve put your API key into the transformer, use the button to save that as the default parameter value – then you won’t be searching for your key whenever you want to use it!
So it’s pretty simple to use what3words in FME – but what might you use it for?
what3words and FME: practical
Here’s a scenario I’ve been mulling over for a while.
My wife works as a dispatcher for a trucking company in an agricultural area of Canada. The company picks up grain from farms and delivers it to grain elevators for shipping.
Dispatching trucks has the issue that farms rarely have a meaningful address. Traditionally farms are identified by a legal description based on the Dominion Land Survey; for example (thank you Wikipedia) a farmer might live at SE-12-20-33-W1 (South East quarter of Section 12, Township 20, Range 33, West of the first meridian)!
Plus… even if the farmhouse had an address, it doesn’t follow that the grain silo is at the same location; farms in Canada tend to be several hundred acres in size. So collection could be a long way from any single address point – or you might be picking up directly from the field itself as the crops are harvested.
So the problem is how to define pickup locations and transmit that information to a truck driver.
I don’t have a definite solution, but I reckon what3words – with the bonus of a little FME Cloud automation – would do the trick; something like the following:
- For each customer, lookup their pickup location in what3words and store that in a spreadsheet
- For each new order
- Run the spreadsheet through FME
- Convert the what3words string to a set of coordinates (What3WordsDecoder transformer)
- Use the coordinates to calculate a route (ShortestPathFinder transformer)
- Have FME Server issue a notification to a driver, including a map of the route
Alternatively, you could do the reverse:
- Store pickup locations on a map (say Google Earth/KML)
- Use an FME workspace to transform a location to what3words (What3WordsEncoder)
- Have FME Server issue a text message of the three words to a driver
- Driver looks it up using the what3words app on their cellphone
I think there’s definitely some potential there – if you have any good ideas, please do let me know.