diff --git a/server/lib/python/cartodb_services/cartodb_services/mapbox/geocoder.py b/server/lib/python/cartodb_services/cartodb_services/mapbox/geocoder.py index ceba105..8d7cacb 100644 --- a/server/lib/python/cartodb_services/cartodb_services/mapbox/geocoder.py +++ b/server/lib/python/cartodb_services/cartodb_services/mapbox/geocoder.py @@ -80,6 +80,8 @@ class MapboxGeocoder(Traceable): return self._parse_geocoder_response(response.text) elif response.status_code == requests.codes.bad_request: return [] + elif response.status_code == requests.codes.unprocessable_entity: + return [] else: raise ServiceException(response.status_code, response) except requests.Timeout as te: diff --git a/server/lib/python/cartodb_services/cartodb_services/mapbox/isolines.py b/server/lib/python/cartodb_services/cartodb_services/mapbox/isolines.py index 10c4209..e7f06c1 100644 --- a/server/lib/python/cartodb_services/cartodb_services/mapbox/isolines.py +++ b/server/lib/python/cartodb_services/cartodb_services/mapbox/isolines.py @@ -49,6 +49,8 @@ class MapboxIsolines(): response = self._matrix_client.matrix([origin] + targets, profile) json_response = json.loads(response) + if not json_response: + return [] costs = [None] * number_of_angles @@ -125,6 +127,9 @@ class MapboxIsolines(): unit_factor=unit_factor, number_of_angles=number_of_angles) + if not costs: + continue + errors = [(cost - isorange) / float(isorange) for cost in costs] max_abs_error = max([abs(e) for e in errors]) if max_abs_error <= tolerance: diff --git a/server/lib/python/cartodb_services/cartodb_services/mapbox/matrix_client.py b/server/lib/python/cartodb_services/cartodb_services/mapbox/matrix_client.py index dfe0bde..8d547b6 100644 --- a/server/lib/python/cartodb_services/cartodb_services/mapbox/matrix_client.py +++ b/server/lib/python/cartodb_services/cartodb_services/mapbox/matrix_client.py @@ -72,6 +72,8 @@ class MapboxMatrixClient(Traceable): return response.text elif response.status_code == requests.codes.bad_request: return '{}' + elif response.status_code == requests.codes.unprocessable_entity: + return '{}' else: raise ServiceException(response.status_code, response) except requests.Timeout as te: diff --git a/server/lib/python/cartodb_services/cartodb_services/mapbox/routing.py b/server/lib/python/cartodb_services/cartodb_services/mapbox/routing.py index e0827ca..3f30268 100644 --- a/server/lib/python/cartodb_services/cartodb_services/mapbox/routing.py +++ b/server/lib/python/cartodb_services/cartodb_services/mapbox/routing.py @@ -91,6 +91,8 @@ class MapboxRouting(Traceable): return self._parse_routing_response(response.text) elif response.status_code == requests.codes.bad_request: return MapboxRoutingResponse(None, None, None) + elif response.status_code == requests.codes.unprocessable_entity: + return MapboxRoutingResponse(None, None, None) else: raise ServiceException(response.status_code, response) except requests.Timeout as te: diff --git a/server/lib/python/cartodb_services/cartodb_services/tools/coordinates.py b/server/lib/python/cartodb_services/cartodb_services/tools/coordinates.py index 935dba0..b02e801 100644 --- a/server/lib/python/cartodb_services/cartodb_services/tools/coordinates.py +++ b/server/lib/python/cartodb_services/cartodb_services/tools/coordinates.py @@ -45,6 +45,8 @@ def marshall_coordinates(coordinates): def coordinates_to_polygon(coordinates): """Convert a Coordinate array coordinates to a PostGIS polygon""" + if not coordinates: + return None coordinates.append(coordinates[0]) # Close the ring result_coordinates = [] for coordinate in coordinates: diff --git a/server/lib/python/cartodb_services/cartodb_services/tools/polyline.py b/server/lib/python/cartodb_services/cartodb_services/tools/polyline.py index eaca5f2..14bba19 100644 --- a/server/lib/python/cartodb_services/cartodb_services/tools/polyline.py +++ b/server/lib/python/cartodb_services/cartodb_services/tools/polyline.py @@ -51,9 +51,7 @@ def polyline_to_linestring(polyline): """Convert a Mapzen polyline shape to a PostGIS linestring""" coordinates = [] for point in polyline: - # Divide by 10 because mapzen uses one more decimal than the - # google standard (https://mapzen.com/documentation/turn-by-turn/decoding/) - coordinates.append("%s %s" % (point[1]/10, point[0]/10)) + coordinates.append("%s %s" % (point[1], point[0])) wkt_coordinates = ','.join(coordinates) try: diff --git a/server/lib/python/cartodb_services/setup.py b/server/lib/python/cartodb_services/setup.py index d38b15b..52144b9 100644 --- a/server/lib/python/cartodb_services/setup.py +++ b/server/lib/python/cartodb_services/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages setup( name='cartodb_services', - version='0.16.4', + version='0.16.5', description='CartoDB Services API Python Library',