Use mapzen as first option for the namedplace geocoding

This commit is contained in:
Mario de Frutos
2016-08-25 16:03:04 +02:00
parent d602c42559
commit 71d5ce951a
9 changed files with 71 additions and 56 deletions

View File

@@ -18,10 +18,10 @@ class MapzenGeocoder:
self._logger = logger
@qps_retry
def geocode(self, searchtext, city=None, state_province=None, country=None):
def geocode(self, searchtext, city=None, state_province=None, country=None, search_type=None):
request_params = self._build_requests_parameters(searchtext, city,
state_province,
country)
country, search_type)
try:
response = requests.get(self._url, params=request_params)
if response.status_code == requests.codes.ok:
@@ -47,13 +47,14 @@ class MapzenGeocoder:
def _build_requests_parameters(self, searchtext, city=None,
state_province=None, country=None):
state_province=None, country=None,
search_type=None):
request_params = {}
search_string = self._build_search_text(searchtext.strip(),
city,
state_province)
request_params['text'] = search_string
request_params['layers'] = 'address'
request_params['layers'] = search_type if search_type else 'address'
request_params['api_key'] = self._app_key
if country:
request_params['boundary.country'] = country

View File

@@ -286,11 +286,11 @@ class GeocoderConfig(ServiceConfig):
PERIOD_END_DATE = 'period_end_date'
DEFAULT_PROVIDER = 'mapzen'
def __init__(self, redis_connection, db_conn, username, orgname=None):
def __init__(self, redis_connection, db_conn, username, orgname=None, forced_provider=None):
super(GeocoderConfig, self).__init__(redis_connection, db_conn,
username, orgname)
filtered_config = {key: self._redis_config[key] for key in self.GEOCODER_CONFIG_KEYS if key in self._redis_config.keys()}
self.__parse_config(filtered_config, self._db_config)
self.__parse_config(filtered_config, self._db_config, forced_provider)
self.__check_config(filtered_config)
def __check_config(self, filtered_config):
@@ -307,9 +307,12 @@ class GeocoderConfig(ServiceConfig):
return True
def __parse_config(self, filtered_config, db_config):
self._geocoder_provider = filtered_config[self.GEOCODER_PROVIDER].lower()
if not self._geocoder_provider:
def __parse_config(self, filtered_config, db_config, forced_provider):
if forced_provider:
self._geocoder_provider = forced_provider
elif filtered_config[self.GEOCODER_PROVIDER].lower():
self._geocoder_provider = filtered_config[self.GEOCODER_PROVIDER].lower()
else:
self._geocoder_provider = self.DEFAULT_PROVIDER
self._geocoding_quota = float(filtered_config[self.QUOTA_KEY])
self._period_end_date = date_parse(filtered_config[self.PERIOD_END_DATE])

View File

@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
setup(
name='cartodb_services',
version='0.7.4.2',
version='0.8',
description='CartoDB Services API Python Library',