Skip to content

em1208/geocoder

 
 

Repository files navigation

A complete Python Geocoding module made easy.

Every task is made easy with tons of help & debug commands!

>>> import geocoder # pip install geocoder
>>> g = geocoder.google('<address>')
>>> g.lat, g.lng
45.413140 -75.656703
...

Providers

QuickStart

A place to get you started on how to use this module and set up your work station.

Install from PyPi

$ pip install geocoder

Using iPython with Geocoder

$ pip install ipython
$ ipython

Using the TAB key after entering '.' you will see all the available providers.

>>> import geocoder
>>> g = geocoder.
geocoder.api             geocoder.geolytica       geocoder.mapquest
geocoder.arcgis          geocoder.geonames        geocoder.nokia
geocoder.base            geocoder.get             geocoder.osm
geocoder.bing            geocoder.google          geocoder.timezone
geocoder.canadapost      geocoder.ip              geocoder.yahoo
geocoder.cli             geocoder.keys            geocoder.tomtom
geocoder.elevation       geocoder.location 
...       

Using the TAB key again, you can see all the available attributes.

>>> g = geocoder.google('Ottawa')
>>> g.
g.accuracy            g.latlng              g.south
g.address             g.lng                 g.southeast
g.api                 g.locality            g.southwest
g.attributes          g.location            g.state
g.bbox                g.neighborhood        g.status
g.content             g.north               g.status_code
g.country             g.northeast           g.status_description
g.county              g.northwest           g.street_number
g.debug               g.ok                  g.sublocality
g.east                g.params              g.subpremise
g.error               g.parse               g.url
g.geometry            g.postal              g.west
g.headers             g.provider            g.wkt
g.help                g.quality             g.x
g.json                g.route               g.y
g.lat                 g.short_name
...    

Command Line Interface

The command line tool allows you to geocode one or many strings, either passed as an argument, passed via STDIN, or contained in a referenced file.

$ geocode "Ottawa"
{
  "accuracy": "Rooftop",
  "quality": "PopulatedPlace",
  "lng": -75.68800354003906,
  "status": "OK",
  "locality": "Ottawa",
  "country": "Canada",
  "provider": "bing",
  "state": "ON",
  "location": "Ottawa",
  "address": "Ottawa, ON",
  "lat": 45.389198303222656
}

Now, suppose you have a file with two lines, which you want to geocode.

$ geocode `textfile.txt`
{"status": "OK", "locality": "Ottawa", ...}
{"status": "OK", "locality": "Boston", ...}

The output is, by default, sent to stdout, so it can be conveniently parsed by json parsing tools like jq.

$ geocode `textfile.txt` | jq [.lat,.lng,.country] -c
[45.389198303222656,-75.68800354003906,"Canada"]
[42.35866165161133,-71.0567398071289,"United States"]

Parsing a batch geocode to CSV can also be done with jq. Build your headers first then run the geocode application.

$ echo 'lat,lng,locality' > test.csv
$ geocode cities.txt | jq [.lat,.lng,.locality] -c | jq -r '@csv' >> test.csv

For more development requests for the CLI, please provide your input in the Github Issues Page.

Reverse Geocoding

The term geocoding generally refers to translating a human-readable address into a location on a map. The process of doing the opposite, translating a location on the map into a human-readable address, is known as reverse geocoding. Using Geocoder you can retrieve Reverse's geocoded data from Google Geocoding API.

Python Example

At the moment the two providers that have the functionality of Reverse geocoding are Google & Bing. Simply include the reverse=True parameter.

>>> import geocoder
>>> g = geocoder.bing(['lat','lng'], reverse=True)
>>> g.address
'453 Booth Street, Ottawa'
...

Visit the Wiki

Please look at the following pages on the wiki for more information about a certain topic.

Providers

Here is a list of providers that are available for use with FREE or limited restrictions.

Extras

The fun extra stuff I added to enjoy some cool features the web has to offer.

Topic not available?

If you cannot find a topic you are looking for, please feel free to ask me @DenisCarriere or post them on the Github Issues Page.

Support

This project is free & open source, it would help greatly for you guys reading this to contribute, here are some of the ways that you can help make this Python Geocoder better.

Feedback

Please feel free to give any feedback on this module. If you find any bugs or any enhancements to recommend please send some of your comments/suggestions to the Github Issues Page.

Twitter

Speak up on Twitter @DenisCarriere and tell me how you use this Python Geocoder. New updates will be pushed to Twitter Hashtags #geocoder.

Thanks to

A big thanks to all the people that help contribute:

About

A pure Python Geocoding module made easy.

Resources

License

Stars

Watchers

Forks

Packages

No packages published