如何在PostgreSQL中创建Polygon并解决几何环未闭合报错问题
错误原因
OGC标准中Polygon类型的WKT语法要求线性环必须首尾闭合,即顶点列表的第一个坐标和最后一个坐标必须完全相同。你当前的WKT仅写了4个顶点,未形成闭合环,因此触发non-closed rings报错。
解决方案
方案1:手动修正WKT字符串
在现有顶点末尾补充和第一个点完全一致的坐标即可,修正后的INSERT语句如下:
INSERT INTO public."place" VALUES (1, ST_GeomFromText('POLYGON((9.693588094112373 52.39414543838985, 9.694328501691626 52.39397380868952, 9.694174756472517 52.39362874161061, 9.693445118144536 52.393639872848816, 9.693588094112373 52.39414543838985))', 4326), 34);
方案2:调用PostGIS函数自动闭合
如果不想手动处理闭合逻辑,可直接使用ST_MakePolygon函数自动补全闭合点,无需手动修改坐标列表:
INSERT INTO public."place" VALUES (1, ST_MakePolygon(ST_LineFromText('LINESTRING(9.693588094112373 52.39414543838985, 9.694328501691626 52.39397380868952, 9.694174756472517 52.39362874161061, 9.693445118144536 52.393639872848816)', 4326)), 34);
额外注意
4326坐标系下Polygon外环顶点默认要求按逆时针顺序排列,内环(孔洞)顶点按顺时针顺序排列,不符合顺序要求可能会触发后续空间计算异常,生成Polygon时建议确认顶点顺序。
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

