Kwissle

My real-time quiz battle game Kwissle.com

Crosstips.org

My fun Crossword solver project. Crosstips.org & Krysstips.se

Kung Fu

Fujian White Crane Kung Fu

Photos

Photoalbum, both old and new.

Twitter

Follow me on Twitter

Contact me

My contact details and how to contact me.

 

KungFuPeople.com
Do you train Kung Fu?
Or know someone who does?
Then check out KungFuPeople.com


Mobile version of this page Mobile version of this page


 
Python

Google Reverse Geocoding vs. GeoNames

http://www.peterbe.com/plog/google-r...vs.-geonames/results.log.txt

17th of August 2009

I've been experimenting with the new Google Reverse Geocoding which allows you to get the location name and country and stuff from a latitude/longitude coordinate.

What I've been doing is comparing this with GeoNames. GeoNames is available from geopy in the reverse-geocode branch.

I wrote down a list of about 15 lat/long points and the result I expect from them (taken from an existing app I'm contemplating switching to Google Reverse Geocoding for) and ran a batch of timed tests on. These results might satisfy the impatient:

 FAILURES:
 geonames_json        0
 google               0
 geonames             12

 TOTAL TIMES:
 geonames_json        2.43582677841        0.143283928142 seconds/request
 google               2.24999976158        0.132352927152 seconds/request
 geonames             1.78063511848        0.104743242264 seconds/request

First of all, a "failure" is when the place name simply can't be looked up. You could consider certain results a failure but it depends on what you intend to do with results. For example, GeoNames returned Glen Mills, United States whereas Google returned 38 Hitchcock Ln, Glen Mills, PA 19342, USA. With the Google results it's not always obvious that the "place name" (alternatively the town) is the second to last bit split by commas.

Using geopy to connect to GeoNames is clearly a bad idea. It's much better to just connect directly to the JSON REST URL.

In conclusion, I'm not going to change from using the GeoNames JSON API to Google Reverse Geocoding in my app.

You can see the complete results of my analysis here

If you're interested to see the code it's on github



Comment

David Janes - 18th August 2009  [«« Reply to this]
Sorry, I'm looking at this and obviously missing something. What's the back-end difference between geonames_json and geonames?

Also FYU: Yahoo has been doing stuff in this space also (e.g. http://pipes.yahoo.com/pipes/pipe.info?_id=AvAwHoPz3BGPOZZixJtC8g). It would be interesting to see how this stacks up.
Peter Bengtsson - 19th August 2009   [«« Reply to this]
To be honest I'm not too sure either. Logically it should be the same result since it's the same database at GeoNames. geopy is a great little library but clearly something has gone wrong in how it connects to GeoNames. Either that or they GeoNames returns results is different depending on how to approach them.

That Yahoo pipe uses GeoNames too. Just different wrapping.
kikislater - 25th November 2010  [«« Reply to this]
Hi,
Thanks for geopy ! It's really nice
How can I batch reverse geoding (google) ?

Thanks in advance
 
Name:
Email:
hide my email address.

Your email address will be encoded to prevent email-extraction spiders from reading it so you won't get spammed if you decide to show your email address.