5

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

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
4

1 回答 1

12

从点构造多边形的更好方法是使用PostGIS 的几何构造函数。这样,您就无需转换二进制 → 文本 → 二进制(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
于 2013-09-29T20:33:39.017 回答