coordinates_to_polygon should always return multipolygon to avoid inconsistencies
This commit is contained in:
parent
53e9ad4d2e
commit
2a47000f32
@ -169,7 +169,7 @@ RETURNS SETOF cdb_dataservices_server.isoline AS $$
|
|||||||
# -- TODO encapsulate this block into a func/method
|
# -- TODO encapsulate this block into a func/method
|
||||||
locations = isolines[r] + [ isolines[r][0] ] # close the polygon repeating the first point
|
locations = isolines[r] + [ isolines[r][0] ] # close the polygon repeating the first point
|
||||||
wkt_coordinates = ','.join(["%f %f" % (l.longitude, l.latitude) for l in locations])
|
wkt_coordinates = ','.join(["%f %f" % (l.longitude, l.latitude) for l in locations])
|
||||||
sql = "SELECT ST_CollectionExtract(ST_MakeValid(ST_MPolyFromText('MULTIPOLYGON((({0})))', 4326)),3) as geom".format(wkt_coordinates)
|
sql = "SELECT st_multi(ST_CollectionExtract(ST_MakeValid(ST_MPolyFromText('MULTIPOLYGON((({0})))', 4326)),3)) as geom".format(wkt_coordinates)
|
||||||
multipolygon = plpy.execute(sql, 1)[0]['geom']
|
multipolygon = plpy.execute(sql, 1)[0]['geom']
|
||||||
else:
|
else:
|
||||||
multipolygon = None
|
multipolygon = None
|
||||||
|
@ -28,7 +28,7 @@ def coordinates_to_polygon(coordinates):
|
|||||||
wkt_coordinates = ','.join(result_coordinates)
|
wkt_coordinates = ','.join(result_coordinates)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sql = "SELECT ST_CollectionExtract(ST_MakeValid(ST_MakePolygon(ST_GeomFromText('LINESTRING({0})', 4326))),3) as geom".format(wkt_coordinates)
|
sql = "SELECT st_multi(ST_CollectionExtract(ST_MakeValid(ST_MakePolygon(ST_GeomFromText('LINESTRING({0})', 4326))),3)) as geom".format(wkt_coordinates)
|
||||||
geometry = plpy.execute(sql, 1)[0]['geom']
|
geometry = plpy.execute(sql, 1)[0]['geom']
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
plpy.warning("Can't generate POLYGON from coordinates: {0}".format(e))
|
plpy.warning("Can't generate POLYGON from coordinates: {0}".format(e))
|
||||||
|
@ -55,7 +55,7 @@ def coordinates_to_polygon(coordinates):
|
|||||||
wkt_coordinates = ','.join(result_coordinates)
|
wkt_coordinates = ','.join(result_coordinates)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sql = "SELECT ST_CollectionExtract(ST_MakeValid(ST_MakePolygon(ST_GeomFromText('LINESTRING({0})', 4326))),3) as geom".format(wkt_coordinates)
|
sql = "SELECT st_multi(ST_CollectionExtract(ST_MakeValid(ST_MakePolygon(ST_GeomFromText('LINESTRING({0})', 4326))),3)) as geom".format(wkt_coordinates)
|
||||||
geometry = plpy.execute(sql, 1)[0]['geom']
|
geometry = plpy.execute(sql, 1)[0]['geom']
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
plpy.warning("Can't generate POLYGON from coordinates: {0}".format(e))
|
plpy.warning("Can't generate POLYGON from coordinates: {0}".format(e))
|
||||||
|
Loading…
Reference in New Issue
Block a user