lab_weather/geocoder/mapbox_reverse.py

53 lines
1.4 KiB
Python

#!/usr/bin/python
# coding: utf8
from __future__ import absolute_import
from geocoder.mapbox import MapboxResult, MapboxQuery
from geocoder.location import Location
class MapboxReverseResult(MapboxResult):
@property
def ok(self):
return bool(self.address)
class MapboxReverse(MapboxQuery):
"""
Mapbox Reverse Geocoding
========================
Reverse geocoding lets you reverse this process, turning a
pair of lat/lon coordinates into a meaningful place name
(-77.036,38.897 → 1600 Pennsylvania Ave NW).
API Reference
-------------
https://www.mapbox.com/developers/api/geocoding/
Get Mapbox Access Token
-----------------------
https://www.mapbox.com/account
"""
provider = 'mapbox'
method = 'reverse'
_URL = 'https://api.mapbox.com/geocoding/v5/mapbox.places/{lng},{lat}.json'
def _build_params(self, location, provider_key, **kwargs):
return {
'access_token': provider_key,
'country': kwargs.get('country'),
'types': kwargs.get('types'),
}
def _before_initialize(self, location, **kwargs):
self.location = str(Location(location))
lat, lng = Location(location).latlng
self.url = self.url.format(lng=lng, lat=lat)
if __name__ == '__main__':
g = MapboxReverse([45.4049053, -75.7077965])
g.debug()