You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中从坐标字段生成多边形质心报错的技术问询

问题描述

我希望从存储多边形顶点坐标的字段生成质心,直接使用坐标文本编写的查询可正常运行,但引用字段时出现错误:Invalid WKT: Invalid number: polygon (line 1)。

我的coord字段中的数据示例:

46.781231 23.489355,46.785255 23.484876,46.786118 23.485407,46.787913 23.486857, 46.781231 23.489355

可行的查询语句:

SELECT  ST_centroid(ST_GeometryFromText('polygon((46.781231 23.489355,46.785255 23.484876,46.786118 23.485407,46.787913 23.486857, 46.781231 23.489355))'));

不可行的查询语句:

SELECT  ST_centroid(ST_GeometryFromText('polygon((coord))'))
from polygon_data;
解决方案

你错误地将字段名coord直接嵌入到字符串常量中,数据库会把coord当作普通文本处理,而非读取对应字段的坐标值。需要通过字符串拼接,将WKT前缀、字段值、后缀组合成合法的多边形WKT字符串。

正确的查询语句如下:

SELECT ST_centroid(ST_GeometryFromText('polygon((' || coord || '))'))
FROM polygon_data;

如果使用PostGIS等支持ST_MakePolygon的空间数据库,也可以用更严谨的方式构造多边形(需确保coord首尾坐标一致,你的示例数据已满足该条件):

SELECT ST_Centroid(ST_MakePolygon(ST_GeomFromText('LINESTRING(' || coord || ')')))
FROM polygon_data;

内容的提问来源于stack exchange,提问作者Zifceac Iaroslav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:00:57