postgresql - 使用 PostGIS 将点转换为多边形

标签 postgresql gis postgis

我想使用 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

最佳答案

从点构建多边形的更好方法是使用 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

关于postgresql - 使用 PostGIS 将点转换为多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19046642/

相关文章:

javascript - 使用 belongsTo 对链查找进行后续处理

gis - 英国邮政编码 -> 东区、北区

将 hdf 文件读入 R 并将它们转换为 geoTIFF 栅格

python - 如何查询5米范围内的所有数据?

postgresql - PostGIS,索引相交生成的地理

postgresql - 查询执行器 - 上一步的开始与下一步的结束不重叠

sql - 在 Postgresql 中为 SELECT INTO 使用并行查询执行

postgresql - 如果删除了具有外键的行,如何在表中保留具有外键值的行?

algorithm - 检查经度/纬度坐标是否位于嵌入式设备的复杂多边形内?

postgresql - 在带有 MacPorts 的 Snow Leopard 上使用 postgresql84 和 postgis 时没有 liblwgeom