如何防止错误 Mysql ST_PolygonFromText 因为第一个和最后一个坐标不等于

Posted

技术标签:

【中文标题】如何防止错误 Mysql ST_PolygonFromText 因为第一个和最后一个坐标不等于【英文标题】:How to Prevent error Mysql ST_PolygonFromText because first and last Coordinate not equals 【发布时间】:2018-12-18 11:43:52 【问题描述】:

我有查询:

SELECT ST_PolygonFromText(CONCAT('Polygon((',DATA_GPS,'))')) FROM TABLE_A CROS JOIN TABLE_B

显示错误: Data truncation: Invalid GIS data provided to function st_geometryfromtext.

第 8 行出错,因为第一个和最后一个 gps 不等于或不关闭多边形。 像这样显示: Polygon((107.15778031165127 -6.304745648974358 107.15945401007279 -6.304639009497479 107.15949692542361 -6.307624906559413))

如何查询排除不关闭的多边形?

还是谢谢

【问题讨论】:

请显示SELECT ST_AsText(DATA_GPS) FROM TABLE_A CROSS JOIN TABLE_B; 的示例(失败数据以及良好数据(如果有)。 【参考方案1】:

我认为“预防”需要发生在DATA_GPS 交给空间函数之前。但是,这可能会在之后起作用:

构建一个MultiLineString,然后与IsClosed() 核对。如有必要,在末尾添加原始点。

【讨论】:

你能举个例子吗?还是谢谢 @PamungkasJayuda - 告诉我你是如何得到DATA_GPS的,告诉我你使用的是什么客户端语言,我也许可以为你关闭多边形。 你好@RickJames,我想在 mysql Query 中检查那个封闭的多边形。因为我想从查询返回已经使用。无需从客户端语言进行验证。我们不能吗?问候

以上是关于如何防止错误 Mysql ST_PolygonFromText 因为第一个和最后一个坐标不等于的主要内容,如果未能解决你的问题,请参考以下文章

引发错误,防止 MySQL 触发器中的表更新

如何防止大型 MySQL 导入的连接超时

Laravel & PHPUnit : 允许进程隔离以防止 Mysql Too many connections 错误

mysql 插入数据如何防止重复

MySQL如何防止字符串截断[重复]

我们如何防止 MySQL 的 SQL 注入?