Ben*_*Ben 5 gis postgresql postgis
我想使用PostGIS创建一个多边形表.表'point'中的每一行都有三个点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
Run Code Online (Sandbox Code Playgroud)
从点构造多边形的更好方法是使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8693 次 |
| 最近记录: |