如何添加指向SQL LINESTRING(How to append points to LINES

2019-10-28 13:00发布

我有一个表points这是一个LINESTRING。 我有一个排在那里拥有所述列的几个问题。

我还有另外一组以字符串形式的点,我想这点追加到现有的行。 有没有办法做到这一点在MySQL不选择点作为文字,手动合并字符串然后更新points行吗?

Answer 1:

MYSQL空间功能不包括追加LINESTRING任何解决方案,但没有,我已经尝试了你一种解决方法。

  1. 获取的价值

    设置@gval =(从选择ST_AsText(路线) spatial其中id = 5);

我命名的表为“空间”并添加一个柱为“路径”,这是数据类型的线串

  1. 通过使用替换功能和附加输入字符串您所需的纬度经度(或点)

    设置@gval =取代(@gval, ')', '8.5684875 76.8520767)'); 更新spatial设定的路线= GEOMFROMTEXT(@gval)其中id = 5;

这对我的作品好。



Answer 2:

说我是跟踪上一个周期骑我的位置和发送纬度/经度到服务器服务器保留代表了当前点我的路线LINESTRING我想补充一点,每隔几秒钟任我游,以反映我的路线显然,作为LINESTRING生长在大小,它变得越来越低效的将其转换为文本,添加一个点,然后转换回空间数据我在想,如果有一个功能有效点直接追加到LINESTRING结束。 我希望这是有道理的?

在这种情况下,通常你会

  1. 创建一个新的行,每个新的数据点。 这个新行应该有时间,你的POINT
  2. 那么你会创建一个聚集点的那些行到一个视图(或物化视图) LINESTRING 。 要做到这一点,看到了这个问题 。

在MySQL和PostgreSQL,你真的不想做追加到LINESTRING每一点插入。 在MVCC数据库,通常UPDATE荷兰国际集团一排需要重写整个行。 对于某些情况下,它可能并不重要可言,但如果你正在写100多个点的路线我不会走那么方法。

ℹ在PostGIS的,这是因为你有空间聚集是不提供给你在MySQL中,就像稍微容易ST_MakeLine 所以,你可以做SELECT ST_MakeLine(pt ORDER BY pointTime) FROM table GROUP BY bike_route; 你也有类似功能ST_AddPoint增加了一个POINTLINESTRING (在事件的路线很短,或者你不关心写重更新)。



文章来源: How to append points to LINESTRING SQL