lab_weather/geocoder/geocodefarm_reverse.py

56 lines
2.1 KiB
Python

#!/usr/bin/python
# coding: utf8
from __future__ import absolute_import
import logging
from geocoder.location import Location
from geocoder.geocodefarm import GeocodeFarmQuery
class GeocodeFarmReverse(GeocodeFarmQuery):
"""
Geocode.Farm
=======================
Geocode.Farm is one of the few providers that provide this highly
specialized service for free. We also have affordable paid plans, of
course, but our free services are of the same quality and provide the same
results. The major difference between our affordable paid plans and our
free API service is the limitations. On one of our affordable paid plans
your limit is set based on the plan you signed up for, starting at 25,000
query requests per day (API calls). On our free API offering, you are
limited to 250 query requests per day (API calls).
Params
------
:param lat: The numerical latitude value for which you wish to obtain the closest, human-readable address.
:param lon: The numerical longitude value for which you wish to obtain the closest, human-readable address.
:param key: (optional) API Key. Only Required for Paid Users.
:param lang: (optional) 2 digit lanuage code to return results in. Currently only "en"(English) or "de"(German) supported.
:param country: (optional) The country to return results in. Used for biasing purposes and may not fully filter results to this specific country.
API Reference
-------------
https://geocode.farm/geocoding/free-api-documentation/
"""
provider = 'geocodefarm'
method = 'reverse'
_URL = 'https://www.geocode.farm/v3/json/reverse/'
def _build_params(self, location, provider_key, **kwargs):
location = Location(location)
return {
'lat': location.latitude,
'lon': location.longitude,
'key': provider_key,
'lang': kwargs.get('lang', ''),
'country': kwargs.get('country', ''),
}
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)
g = GeocodeFarmReverse([45.3, -75.4])
g.debug()