使用PostGIS将点转换为多边形

时间:2013-09-27 08:53:16

标签: postgresql gis postgis

我想使用PostGIS创建一个多边形表。表格中的每一行都指向'有三点ID。 表< point_location'有点的位置信息。我用Google搜索了这个问题,但未找到答案。以下代码有什么问题?

select ST_GeomFromText('POLYGON((' || b.x || ' ' || b.y || ',' || c.x || ' ' || c.y || ',' || d.x || ' ' || d.y || ',' || b.x || ' ' || b.y'))',4326) as polygon
from point a, point_location b, point_location c, point_location d
where a.p1=b.point_id and a.p2=c.point_id and a.p3=d.point_id

2 个答案:

答案 0 :(得分:8)

从点构造多边形的更好方法是使用PostGIS' geometry constructors。通过这种方式,您可以避免转换二进制→文本→二进制(WKB → WKT → WKB),这种速度较慢,有损,并且容易出现文本格式干扰,如缺少||所示。例如,尝试:

SELECT ST_MakePolygon(ST_MakeLine(ARRAY[b, c, d, b]))
FROM point a, point_location b, point_location c, point_location d
WHERE a.p1=b.point_id and a.p2=c.point_id and a.p3=d.point_id

答案 1 :(得分:0)

b.y'))'应该改成b.y || '))'