Geocoding is a very important piece of the intricate logistics puzzle that Locus is solving for its clients. This merits a constant evaluation of its performance over different regions of the world. However, getting a sense of how good a geocoder is performing requires a very nuanced selection of the metrics that reflect the true capability of the system. It is important to realise that there are diverse use cases for geocoding and a “one shoe fits all” approach can severely limit its benefits to potential users.
Consider, for example, a pizza delivery service. Say, they have 10 delivery boys serving 2 localities each. Now, as long as the delivery guy takes all the orders to the correct locality, finding the correct building is most likely not going to be a big hassle. It is of’ course desirable to start with the exact location of the building in hand, but as long as the person is within 200m of the customer, things are fine. Conversely, if the box gets handed over to the wrong delivery guy because of confusion about the locality, the guy is going to be hassled, the customer is going to be angry and what many might consider much worse, a perfectly baked thin crust pizza will go to waste. This is a case where the geocoding has to work right all the time but there is an acceptable margin of error.
Now consider the same geocoder getting adopted by a popular package delivery service. For any locality, they probably deliver more than 500 packages a day. Assume that one of their delivery person is carrying 150 packages to be delivered over 20 apartments. After delivering the first 30 boxes correctly, the guy finds the first mistake made by the geocoder. It got the co-ordinates wrong by just 85m but that means the guy will now have to deliver this package 3 buildings away, a wastage of at least 10 minutes. An hour or so down the line another “small mistake”. This package is to be delivered in a building he visited just in the morning.
For very high order densities, the smallest of errors can add up very quickly and can literally double the time it takes to complete all the orders within a locality. Here the “acceptable” margin of error is no longer acceptable. The geocoder isn’t really useful any more.
While this problem might seem unsurmountable at first, taking a step back and thinking how we humans solve this problem, provides a clue. The very first time we go to a new locality, we struggle to find the exact locations. But after a few visits, our “experience” makes this a much simpler problem. For the above problem, the delivery guy has “familiarity” with that place.
Locus’ geocoder also learns in the same way from its past mistakes and gradually develops a local context to guide its search space. Over time, its performance gets much better both in terms of accuracy and speed.
The diminishing performance of any geocoder at higher resolution is not just a problem of address parsing but also the speed with which queried location databases are updated. Koramangala will almost certainly be in the same place 10 years from now as it was 10 years back. However, its topography may undergo massive change in under a year ; a change obvious to the local populace but not to the record keepers. This is another case where learning from local context on a regular basis enhances the geocoder’s performance.
At Locus, we understand that there is no such thing as a perfect geocoder. We are not trying to create one. We are striving to create the best geocoder that meets the purpose of our users and our clients. Our geocoder is trying to capture the local dialect of the address. Our geocoder is trying to learn the “human element” of address writing and decipher rather than calculate the exact location that is referred to.
And we are succeeding.
Like what you read? Follow Locus’ blog.