OMGeo - Python Edition
python-omgeo
is a geocoding abstraction layer written in python. Currently
supported geocoders:
- US Census Geocoder
- Bing Maps REST Locations API
- ESRI World Geocoding Service
- MapQuest Licensed Data API
- MapQuest-hosted Nominatim Open Data API
- Pelias geocoder. Defaults to use geocode.earth
- Google geocoder
Note
Check out this project's page on GitHub.
Installation:
sudo pip install python-omgeo
Documentation
Docs are available in HTML or PDF format.
Usage Example
Make a new geocoder and geocode and address:
>>> from omgeo import Geocoder >>> g = Geocoder() >>> result = g.geocode('340 12th St, Philadelphia PA')
Take a look at the result:
>>> result {'candidates': [ <340 S 12th St, Philadelphia, PA, 19107 (-75.161461, 39.94532) EsriWGS>, <340 N 12th St, Philadelphia, PA, 19107 (-75.158434, 39.958728) EsriWGS> ], 'upstream_response_info': [<EsriWGS 1054ms>]}
Take a closer look at the information in our address Candidate objects:
>>> [c.__dict__ for c in result["candidates"]] [{'geoservice': 'EsriWGS', 'locator': u'USA.AddressPoint', 'locator_type': u'PointAddress', 'match_addr': u'340 S 12th St, Philadelphia, PA, 19107', 'score': 90.87, 'wkid': 4326, 'x': -75.161461, 'y': 39.94532}, {'geoservice': 'EsriWGS', 'locator': 'interpolation', 'locator_type': u'StreetAddress', 'match_addr': u'340 N 12th St, Philadelphia, PA, 19107', 'score': 90.87, 'wkid': 4326, 'x': -75.158434, 'y': 39.958728}]
Some geocoders (EsriWGS and US Census) can return address components in addition to the full address:
>>> [{'geoservice': 'EsriWGS', 'locator': 'interpolation', 'locator_type': u'StreetAddress', 'match_addr': u'340 N 12th St, Phila, Pennsylvania, 19107', 'match_city': u'Phila', 'match_country': u'USA', 'match_postal': u'19107', 'match_region': u'Pennsylvania', 'match_streetaddr': u'340 N 12th St', 'match_subregion': u'', 'score': 90.1, 'wkid': 4326, 'x': -75.158384, 'y': 39.958774}]
These are optional; their existence may change depending on the response from the geocoder.
Testing
There is a shell script in the root of the repository called test.dummy.sh.
Copy it using cp test.dummy.sh test.sh
. Edit test.sh to include the
API keys that you obtained from the given geocoding service providers. Then, run
the tests using ./test.sh
.