Hacker News new | past | comments | ask | show | jobs | submit login

In case it helps anybody else - we were recently looking for alternatives to Google Maps for reverse geocoding. We took property data from a local county, ran the centroids of a bunch of randomly selected parcels through 4 different reverse geocoding services, and compared the addresses we got back to the actual address of the parcel, as listed by the county.

Google was 97% accurate, at $4 per 1000 requests. Mapbox was 95% accurate, at $.50 per 1000 requests. TomTom was 73% accurate, at $.42 per 1000 requests. Location IQ (one of many providers simply running the open-source Nominatim project) was 12% accurate, at $.03 per 1000 requests.

To be fair to Location IQ / Nominatim, they had the right street the vast majority of the time, but were usually wrong about house number due to interpolating between address boundaries at cross streets defined in Census Data. If you need exact addresses, Nominatim probably isn't for you, but if you need a general location, it might work fine.

Also - this was one county of test data, so take it with a grain of salt.

Nevertheless, it gave us confidence that we could move away from the Google APIs, save 90% of our costs, and still have a high level of accuracy.

Have you tried HERE APIs[1] by any chance? I am curious how it stacks up against the other services.

[1] Link to example -> https://developer.here.com/api-explorer/rest/geocoder/revers...

We sued HERE API at a previous gig I was. We used it for standard geo-coding (also after Google starting asking high prices to use it) and the quality was very good.

sued -> used hopefully.

In America, it is considered polite to exchange suits and countersuits prior to engaging in business, similarly to laying down a friendly barrage of suppressing fire when entering a room.

So "sue yourself" is american english while "suit yourself" is british? Sorry I'm not a native speaker...

It was a joke :)

Geez, do people sue for anything in America?

Always remember to send a Thank You subpoena.

No, just in Florida.

Not surprised - Nominatim is based on OpenStreetMap, which simply hasn't collected exact house-level address data for most places. It wasn't a particular priority; getting approximately the right location along the street is more or less good enough for navigation purposes.

Another one to try is the geocoder team that spun out of Mapzen when it shut down.


Thanks Andrew! (one of our first customers)

geocode.earth founder here, happy to answer questions.

We have great reverse geocoding with OSM and OpenAddresses data.

Feel free to shoot me an email for an invite: julian@geocode.earth

@dbatten, LocationIQ team member here. We have a new API backed by a new geocoding engine that uses additional datasets (OA, GNAF, etc) currently in final stages of BETA. Could you shoot us an email at hello@locationiq.com and you can try it out. This should give you rooftop accuracy in a number of countries (US for sure) and street level accuracy in most others.

Saw your email... thanks! I'll check it out when I get a chance.

would it be possible for you to generate an “accuracy map” and select a provider based on an cost/accuracy trade-off, using a cheap provider in the common case, but using the most accurate provider in regions where the best provider is “much better”.

probably not worth the effort

To make a nation-wide accuracy map, you'd need to compile property data from every county (or equivalent) in the nation. Assuming every county publishes it publicly (I'm sure some don't), it would still be a ton of work...

The real catch is this, though: if you actually pulled it off, you would have just built a nearly flawless reverse geocoder, and you wouldn't need to use an external API at all. You could just look locations up in your huge property data set.

couldn’t the OP use the same method to determine accuracy that they used to compare providers?

it doesn’t need to be an accurate decider, just “good enough” in a majority of cases.

The methodology used to determine accuracy involved loading GIS data on all property in a given county. Therefore building a nation-wide accuracy map using that methodology would, by necessity, involve loading all property data nation-wide. And if you had all property data nation-wide, you wouldn't need a reverse geocoder. You'd have one.

We've put together an (objective) comparison tool here: https://www.geocod.io/compare/

Why do we even use server side rendered tiles at all? Why isn't the map rendered on the client, ideally with SVG? Is the code necessary too big? Can't we build / doesn't it exist already some lighter version to render land, sea, roads and rivers? What is the most difficult part, placing names without overlapping others (and deciding which names to render)?

This is where maps are headed. A good example of this style of rendering is Apple Maps and Mapbox GL (with JS, C++, et.al. bindings).

The issue is the rendering is actually somewhat resource intensive and browser support is thus far incomplete. But we’re getting there!

There is "Vector Tiles" which do client side rendering, look at OpenLayers, Tangram or MapboxGL.

Server side rendering can be less intensive for the client, since it just has to show an image.

Do you have the random list of parcels available by any chance? I would love to compare against Geocod.io. I suspect that we might able to achieve high 90's as well.

Thanks for posting this! Here's the result of geocoding the above list with geocod.io for anybody interested:

Forward Geocoding (Converting the addresses to latitude/longitude): https://gist.github.com/MiniCodeMonkey/13c02d45089478182c3d1...

Reverse Geocoding (Converting the lat/lon to addresses): https://gist.github.com/MiniCodeMonkey/13c02d45089478182c3d1...

Based on the above definition, geocod.io's accuracy for reverse geocoding of this list is 95.2%

Putting this together with dbatten's original findings, the list would look like this:

Google: 97% ($4 per 1,000)

Geocod.io: 95.2% ($0.50 per 1,000)

Mapbox: 95% ($0.50 per 1,000)

TomTom: 73%

How many queries do you do to make the savings worth the switch?

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact