Comparison of four geocoders: Nominatim, GoogleV3, ArcGis and AzureMaps# Comparison of Four Geocoders: Nominatim, GoogleV3, ArcGis and AzureMAps
Geocoding services (via Geopy):
Obtaining the geolocation coordinates of a location specified by query string can be achieved using calls to geocoding APIs directly in a browser address box, or with a wrapping library such as geopy.
Here are the links to the geocoders geopy documentation and their respective service providers:
- Nominatim: OpenStreetMaps
- GoogleV3: Google Map & Places API
- ArcGis: ERSI ArcGIS API
- AzureMaps: Microsoft Azure Maps API
Why I setup this comparison:
In another application, I was using the New York City boroughs bounding boxes to impute missing borough names for records with geolocation information. The most expert GIS users among you would certainly predict scattershot results from such a “corner-cutting” approach, but initially I thought mine was a brilliant way to prevent over 85,000 requests… After I found out about the official territorial boundaries (shapefiles), I trashed the box solution!
Yet, in the intervening time I had checked several services for speed and limits and I found out response differences between some geocoders…for the same query, so I investigated!
The Procedures notebook shows how to retrieve the data and functions.
The main conclusion from this comparison:
Depending on the geolocating service used AND the location queried, the geolocation coordinates will be WRONG.