Skip to content

Commit

Permalink
Merge pull request #257 from mtmail/opencage-street-aliases-and-tests
Browse files Browse the repository at this point in the history
OpenCage: look in multiple field for street, add test file
  • Loading branch information
DenisCarriere committed Aug 2, 2017
2 parents b2e79ae + ec6428e commit 23946ed
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 3 deletions.
46 changes: 44 additions & 2 deletions geocoder/opencage.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class OpenCage(Base):
API Reference
-------------
http://geocoder.opencagedata.com/api.html
https://geocoder.opencagedata.com/api
"""
provider = 'opencage'
method = 'geocode'
Expand Down Expand Up @@ -67,8 +67,46 @@ def housenumber(self):

@property
def street(self):
street = self.parse['components'].get('street')
if street:
return street
elif self.footway:
return self.footway
elif self.road:
return self.road
elif self.street_name:
return self.street_name
elif self.residential:
return self.residential
elif self.path:
return self.path
elif self.pedestrian:
return self.pedestrian

@property
def footway(self):
return self.parse['components'].get('footway')

@property
def road(self):
return self.parse['components'].get('road')

@property
def street_name(self):
return self.parse['components'].get('street_name')

@property
def residential(self):
return self.parse['components'].get('residential')

@property
def path(self):
return self.parse['components'].get('path')

@property
def pedestrian(self):
return self.parse['components'].get('pedestrian')

@property
def neighborhood(self):
neighbourhood = self.parse['components'].get('neighbourhood')
Expand Down Expand Up @@ -101,7 +139,7 @@ def city(self):

@property
def town(self):
return self.parse['components'].get('town')
return self.city

@property
def village(self):
Expand All @@ -115,6 +153,10 @@ def county(self):
def state(self):
return self.parse['components'].get('state')

@property
def state_code(self):
return self.parse['components'].get('state_code')

@property
def country(self):
return self.parse['components'].get('country_code')
Expand Down
2 changes: 1 addition & 1 deletion geocoder/opencage_reverse.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class OpenCageReverse(OpenCage, Base):
API Reference
-------------
http://geocoder.opencagedata.com/api.html
https://geocoder.opencagedata.com/api
"""
provider = 'opencage'
method = 'reverse'
Expand Down
50 changes: 50 additions & 0 deletions tests/test_opencage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# coding: utf8

import geocoder

address = 'The Happy Goat, Ottawa'
location = 'Ottawa, Ontario'
city = 'Ottawa'
ottawa = (45.4215296, -75.6971930)


def test_opencage():
""" Expected result :
https://api.opencagedata.com/geocode/v1/json?q=Ottawa,Ontario&key=YOUR-API-KEY
"""
g = geocoder.opencage(location)
assert g.ok
assert g.country == 'ca'
assert g.state == 'Ontario'
assert g.state_code == 'ON'
assert g.city == 'Ottawa'
assert g.town == 'Ottawa'


def test_opencage_address():
""" Expected result :
https://api.opencagedata.com/geocode/v1/json?q=The+Happy+Goat,+Ottawa&key=YOUR-API-KEY
"""
g = geocoder.opencage(address)
assert g.ok
assert g.country == 'ca'
assert g.state == 'Ontario'
assert g.state_code == 'ON'
assert g.city == 'Ottawa'
assert g.street == 'Wilbrod Street'
assert g.housenumber == '317'
assert g.postal == 'K1N 6K4'


def test_opencage_reverse():
""" Expected result :
https://api.opencagedata.com/geocode/v1/json?q=45.4215296,-75.6971930&key=YOUR-API-KEY
"""
g = geocoder.opencage(ottawa, method='reverse')
assert g.ok
assert g.country == 'ca'
assert g.state == 'Ontario'
assert g.state_code == 'ON'
assert g.city == 'Ottawa'
assert g.street == 'O\'Connor Street'
assert g.housenumber == '45'

0 comments on commit 23946ed

Please sign in to comment.