如何制作只有一个初始点的PostGIS LINESTRING



我有一个服务,它将在移动时发送GPS坐标,这些坐标将添加到我的PostgreSQL/PostGIS数据库中。

现在,创建了一个表,其中一列为Geometry("LINESTRING"(类型。然而,似乎要制作一个LINESTRING,至少需要两点。

但是,我一次只能得到一分。因此,最初当服务开始向我发送位置数据时,它只有一个位置要发送。我将不得不等待第二次提交位置,以便获得至少两点。那么,当我收到第一个点时,我应该怎么办,因为我还不能从中生成LINESTRING?

在这种情况下,当我到目前为止只有一点的时候,对于最初的情况,建议遵循什么程序?

使用ST_MakeLine创建LineStrings,您将能够将一点线临时添加到LineString几何列中:

快速&脏:

CREATE TEMPORARY TABLE t (id int, geom Geometry(LINESTRING));  
INSERT INTO t VALUES (1, (SELECT ST_MakeLine('POINT(1 2)'::geometry)));
SELECT id,ST_AsText(geom) FROM t;
id |    st_astext    
----+-----------------
1 | LINESTRING(1 2)
(1 Zeile)

然后用相同的功能更新它也应该起作用:

UPDATE t SET geom = ST_MakeLine(geom,'POINT(2 3)')
WHERE id = 1;
SELECT id,ST_AsText(geom) FROM t;
id |      st_astext      
----+---------------------
1 | LINESTRING(1 2,2 3)
(1 Zeile)

有一个单点的行字符串似乎很奇怪。

但是像这样的退化的呢

'LINESTRING(1.23 4.56,1.23 4.56)'::geometry

最新更新