假设我有一张有 3 点的桌子,
CREATE TABLE foo ( id int PRIMARY KEY, geog point );
INSERT INTO foo (id, geog) VALUES
( 1, Point(0,0) ),
( 2, Point(1,1) ),
( 3, Point(2,2) );
我怎样才能LINESTRING
用这三个不同行中的这三个点构造一个。由此产生的 WKT 应该是LINESTRING( 0 0, 1 1, 2 2 )
?
PostGIS 使用名为ST_MakeLine
SELECT ST_MakeLine(geog)
FROM foo
ORDER BY id;
由于 MariaDB(和 MySQL)缺少所有空间聚合,目前唯一的方法是创建 WKT,并强制 MySQL 解析该 WKT。
里面的部分
创建点列表,然后我们将其包装起来
LINESTRING ( $pointlist )
并将其提供给ST_GeomFromText()
ℹ 有特定类型的版本
ST_GeomFromText
,但至少在 MariaDB 中它们似乎没有什么不同,只是增加了混乱。