【发布时间】:2021-02-22 14:30:07
【问题描述】:
我有一个 postgres 数据库,其中有一个名为 gps_points 的表。此表有一列index、latitude 和longitude
使用以下命令,我已经能够添加和填充点几何列point_geom。
ALTER TABLE gps_points ADD COLUMN point_geom geometry(Point, 4326);
UPDATE gps_points SET point_geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);
现在我想根据这些点创建线串。我希望我可以通过以下命令实现这一点:
ALTER TABLE gps_points ADD COLUMN line_geom geometry(Linestring,4326);
INSERT INTO gps_points (line_geom)
SELECT ST_MakeLine (gps.point_geom ORDER BY index) AS line_geom
FROM gps_points AS gps
GROUP BY gps.index;
但是,结果列中的所有行都显示以下错误:
DBCException: Invalid number of points in LineString (found 1 - must be 0 or >= 2)
有人建议我缺少什么吗?
【问题讨论】:
-
会不会是少数
gps.point_id只有一个坐标对? -
我已经附上了我的表格截图,希望能澄清我的问题
-
永远不要将数据作为图像发布,我们几乎无法使用它。 Alwasys 以文本形式发布数据。在您的屏幕截图中,每个索引只有一个坐标对,因此您无法通过与
index分组来创建线串。或者你想用表的所有记录创建一行? -
你说得对,但我认为这可以澄清你的问题。确切地说,我想用表的所有记录创建一行
-
在我详细说明答案之前,你能试试这个并告诉我它是否是你想要的吗?
SELECT ST_MakeLine(point_geom ORDER BY index) FROM gps_points;
标签: sql postgresql postgis