Merge pull request #221 from CartoDB/return-null-instead-when-no-isoline-info
Return null instead when no isoline info
This commit is contained in:
@@ -93,20 +93,23 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
if isotype == 'isodistance':
|
if isotype == 'isodistance':
|
||||||
for r in data_range:
|
for r in data_range:
|
||||||
isoline = mapzen_isolines.calculate_isodistance(origin, mode, r)
|
isoline = mapzen_isolines.calculate_isodistance(origin, mode, r)
|
||||||
isolines[r] = (isoline)
|
isolines[r] = isoline
|
||||||
elif isotype == 'isochrone':
|
elif isotype == 'isochrone':
|
||||||
for r in data_range:
|
for r in data_range:
|
||||||
isoline = mapzen_isolines.calculate_isochrone(origin, mode, r)
|
isoline = mapzen_isolines.calculate_isochrone(origin, mode, r)
|
||||||
isolines[r] = (isoline)
|
isolines[r] = isoline
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
for r in data_range:
|
for r in data_range:
|
||||||
|
|
||||||
# -- TODO encapsulate this block into a func/method
|
if len(isolines[r]) >= 3:
|
||||||
locations = isolines[r] + [ isolines[r][0] ] # close the polygon repeating the first point
|
# -- TODO encapsulate this block into a func/method
|
||||||
wkt_coordinates = ','.join(["%f %f" % (l['lon'], l['lat']) for l in locations])
|
locations = isolines[r] + [ isolines[r][0] ] # close the polygon repeating the first point
|
||||||
sql = "SELECT ST_MPolyFromText('MULTIPOLYGON((({0})))', 4326) as geom".format(wkt_coordinates)
|
wkt_coordinates = ','.join(["%f %f" % (l['lon'], l['lat']) for l in locations])
|
||||||
multipolygon = plpy.execute(sql, 1)[0]['geom']
|
sql = "SELECT ST_MPolyFromText('MULTIPOLYGON((({0})))', 4326) as geom".format(wkt_coordinates)
|
||||||
|
multipolygon = plpy.execute(sql, 1)[0]['geom']
|
||||||
|
else:
|
||||||
|
multipolygon = None
|
||||||
|
|
||||||
result.append([source, r, multipolygon])
|
result.append([source, r, multipolygon])
|
||||||
|
|
||||||
|
|||||||
@@ -29,13 +29,8 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
user_isolines_config = GD["user_mapzen_isolines_routing_config_{0}".format(username)]
|
user_isolines_config = GD["user_mapzen_isolines_routing_config_{0}".format(username)]
|
||||||
type = 'isodistance'
|
type = 'isodistance'
|
||||||
|
|
||||||
mapzen_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_mapzen_isolines($1, $2, $3, $4, $5, $6, $7) as isoline; ", ["text", "text", "text", "geometry(Geometry, 4326)", "text", "integer[]", "text[]"])
|
mapzen_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_mapzen_isolines($1, $2, $3, $4, $5, $6, $7) as isoline; ", ["text", "text", "text", "geometry(Geometry, 4326)", "text", "integer[]", "text[]"])
|
||||||
result = plpy.execute(mapzen_plan, [username, orgname, type, source, mode, range, options])
|
result = plpy.execute(mapzen_plan, [username, orgname, type, source, mode, range, options])
|
||||||
isolines = []
|
|
||||||
for element in result:
|
|
||||||
isoline = element['isoline']
|
|
||||||
isoline = isoline.translate(None, "()").split(',')
|
|
||||||
isolines.append(isoline)
|
|
||||||
|
|
||||||
return isolines
|
return result
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|||||||
@@ -30,13 +30,8 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
user_isolines_config = GD["user_mapzen_isolines_routing_config_{0}".format(username)]
|
user_isolines_config = GD["user_mapzen_isolines_routing_config_{0}".format(username)]
|
||||||
type = 'isochrone'
|
type = 'isochrone'
|
||||||
|
|
||||||
mapzen_plan = plpy.prepare("SELECT cdb_dataservices_server._cdb_mapzen_isolines($1, $2, $3, $4, $5, $6, $7) as isoline; ", ["text", "text", "text", "geometry(Geometry, 4326)", "text", "integer[]", "text[]"])
|
mapzen_plan = plpy.prepare("SELECT * FROM cdb_dataservices_server._cdb_mapzen_isolines($1, $2, $3, $4, $5, $6, $7) as isoline; ", ["text", "text", "text", "geometry(Geometry, 4326)", "text", "integer[]", "text[]"])
|
||||||
result = plpy.execute(mapzen_plan, [username, orgname, type, source, mode, range, options])
|
result = plpy.execute(mapzen_plan, [username, orgname, type, source, mode, range, options])
|
||||||
isolines = []
|
|
||||||
for element in result:
|
|
||||||
isoline = element['isoline']
|
|
||||||
isoline = isoline.translate(None, "()").split(',') #--TODO what is this for?
|
|
||||||
isolines.append(isoline)
|
|
||||||
|
|
||||||
return isolines
|
return result
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|||||||
Reference in New Issue
Block a user