我有一个服务,它将在移动时发送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