Fypio is one of our customers that develops an app that helps you search for your perfect home in a revolutionary way. They make use of hundreds of data sources, connecting them to the location of your future homes to help guide you in finding what homes best fit you.
One of those data sources is Open Street Maps, an open source road network covering the entire world. Fypio wanted to make use of driving, walking and public transport routing data in Open Street Map, but in a new and demanding way. They wanted to be able to choose any geographical point and return a list of other geographical points, ordered by the time it takes to drive, walk or use public transport on real roads to them. Normally, this either needs a massive amount of computing power, or would need minutes of calculation time before each search result could be shown.
Instead, Fypio hired Awoque to construct a pre-calculated routing engine that would:
- Work in a geographical area the size of San Diego county
- Be able to sort on routing information in milliseconds
- Could pre-generate the routing network in a reasonable time (weeks)
The result was FypGIS – a java based web application running on Tomcat and MongoDB/PostGIS and a standalone Storm node. Multiple routing engines are used, including Open Source Routing Machine, Open Trip Planner and Google Distance API in a very dynamic and configurable way. The actual route calculations are done using a Storm cluster node (storm-project.net), to enable fault tolerant and scalable generation of the routing data since possibly billions of routing operations are necessary. The API for doing lookups is exposed as REST/JSON through the tomcat web application and both input and output can handle almost any coordinate system.
The routing engine also contains a Point-of-interest database with search & sort-functions exposed as REST/JSON.
The application uses a divide and conquer algorithm based on road network density to be able to generate the pre-calculated data fast enough. Without it and many other tricks, data generation would take months.
System Architecture, Project Management and System Development