From ff8eed9750a230d55ea2cf57bd57d317409e2897 Mon Sep 17 00:00:00 2001 From: Mario de Frutos Date: Fri, 22 Jul 2016 11:20:19 +0200 Subject: [PATCH] Fix empty component return in isolines --- .../cartodb_services/here/routing.py | 6 +++++- .../cartodb_services/here/types.py | 19 ++++++++++++------- server/lib/python/cartodb_services/setup.py | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/server/lib/python/cartodb_services/cartodb_services/here/routing.py b/server/lib/python/cartodb_services/cartodb_services/here/routing.py index 63623b2..71d9cc9 100644 --- a/server/lib/python/cartodb_services/cartodb_services/here/routing.py +++ b/server/lib/python/cartodb_services/cartodb_services/here/routing.py @@ -77,8 +77,12 @@ class HereMapsRoutingIsoline: isolines_response = parsed_response['response']['isoline'] isolines = [] for isoline in isolines_response: + if not isoline['component']: + geom_value = [] + else: + geom_value = isoline['component'][0]['shape'] isolines.append({'range': isoline['range'], - 'geom': isoline['component'][0]['shape']}) + 'geom': geom_value}) return isolines diff --git a/server/lib/python/cartodb_services/cartodb_services/here/types.py b/server/lib/python/cartodb_services/cartodb_services/here/types.py index 90e1d9e..fa7f612 100644 --- a/server/lib/python/cartodb_services/cartodb_services/here/types.py +++ b/server/lib/python/cartodb_services/cartodb_services/here/types.py @@ -4,13 +4,18 @@ import plpy def geo_polyline_to_multipolygon(polyline): """Convert a HERE polyline shape to a PostGIS multipolygon""" - coordinates = [] - for point in polyline: - lat, lon = point.split(',') - coordinates.append("%s %s" % (lon, lat)) - wkt_coordinates = ','.join(coordinates) + # In case we receive an empty polyline from here and we don't want to + # change this kind of thing in the extension sql + if not polyline: + sql = "SELECT ST_MPolyFromText(NULL, 4326) as geom" + else: + coordinates = [] + for point in polyline: + lat, lon = point.split(',') + coordinates.append("%s %s" % (lon, lat)) + wkt_coordinates = ','.join(coordinates) + + sql = "SELECT ST_MPolyFromText('MULTIPOLYGON((({0})))', 4326) as geom".format(wkt_coordinates) - sql = "SELECT ST_MPolyFromText('MULTIPOLYGON((({0})))', 4326) as geom".format(wkt_coordinates) geometry = plpy.execute(sql, 1)[0]['geom'] - return geometry diff --git a/server/lib/python/cartodb_services/setup.py b/server/lib/python/cartodb_services/setup.py index a0a3f66..4834058 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.7.0', + version='0.7.1', description='CartoDB Services API Python Library',