如何将点附加到 LINESTRING SQL
How to append points to LINESTRING SQL
我有一个 table 和 points
,这是一个 LINESTRING。我在那里有一行在所述列中有一些点。
我有第二组点,形式为字符串 a,我想将这些点附加到现有行。有没有办法在 MySQL 中执行此操作而不选择点作为文本,手动合并字符串然后更新行中的 points
?
MYSQL 空间函数不包含任何用于附加 LINESTRING 的解决方案,但我已经为您尝试了一个解决方法。
获取值
set @gval = (select ST_AsText(route) from spatial
where id =5);
I named the table as 'spatial' and added a column as 'route' which is of datatype linestring
通过使用替换功能并输入所需的经纬度(或点)附加字符串
set @gval = replace(@gval, ')', ',8.5684875 76.8520767)');
更新 spatial
set route =GEOMFROMTEXT(@gval) where id=5;
这对我很有用。
Say I am tracking my position on a cycle ride and sending the lat/lng to a server The server keeps a LINESTRING representing my route up to the current point I would like to add a point every few seconds as I travel, to reflect my route Obviously as the LINESTRING grows in size, it gets increasingly inefficient to convert it to text, add a point, then convert back to spatial data I was wondering if there was a function to efficiently append a point directly to the end of the LINESTRING. I hope that makes sense?
在这种情况下,通常你会
- 为每个新数据点创建一个新行。那个新行应该有时间,你的
POINT
.
- 然后您将创建一个视图(或物化视图),将这些点行聚合到
LINESTRING
中。为此,请参阅 this question。
在 MySQL 和 PostgreSQL 中,您真的不想为每个点插入添加到 LINESTRING
。在 MVCC 数据库中,通常 UPDATE
一行需要重写 整个 行。在某些情况下,这可能根本无关紧要,但如果您要编写 100 多个点的路线,我就不会采用该方法。
ℹ 在 PostGIS 中,这会稍微容易一些,因为您拥有 空间聚合 ,而这些在 MySQL 中不可用,例如 [=21] =] 将 POINT
添加到 LINESTRING
(如果您的路线很短或者您不关心写入繁重的更新)。
我有一个 table 和 points
,这是一个 LINESTRING。我在那里有一行在所述列中有一些点。
我有第二组点,形式为字符串 a,我想将这些点附加到现有行。有没有办法在 MySQL 中执行此操作而不选择点作为文本,手动合并字符串然后更新行中的 points
?
MYSQL 空间函数不包含任何用于附加 LINESTRING 的解决方案,但我已经为您尝试了一个解决方法。
获取值
set @gval = (select ST_AsText(route) from
spatial
where id =5);
I named the table as 'spatial' and added a column as 'route' which is of datatype linestring
通过使用替换功能并输入所需的经纬度(或点)附加字符串
set @gval = replace(@gval, ')', ',8.5684875 76.8520767)'); 更新
spatial
set route =GEOMFROMTEXT(@gval) where id=5;
这对我很有用。
Say I am tracking my position on a cycle ride and sending the lat/lng to a server The server keeps a LINESTRING representing my route up to the current point I would like to add a point every few seconds as I travel, to reflect my route Obviously as the LINESTRING grows in size, it gets increasingly inefficient to convert it to text, add a point, then convert back to spatial data I was wondering if there was a function to efficiently append a point directly to the end of the LINESTRING. I hope that makes sense?
在这种情况下,通常你会
- 为每个新数据点创建一个新行。那个新行应该有时间,你的
POINT
. - 然后您将创建一个视图(或物化视图),将这些点行聚合到
LINESTRING
中。为此,请参阅 this question。
在 MySQL 和 PostgreSQL 中,您真的不想为每个点插入添加到 LINESTRING
。在 MVCC 数据库中,通常 UPDATE
一行需要重写 整个 行。在某些情况下,这可能根本无关紧要,但如果您要编写 100 多个点的路线,我就不会采用该方法。
ℹ 在 PostGIS 中,这会稍微容易一些,因为您拥有 空间聚合 ,而这些在 MySQL 中不可用,例如 [=21] =] 将 POINT
添加到 LINESTRING
(如果您的路线很短或者您不关心写入繁重的更新)。