MySQL空间几何验证wkt

时间:2016-09-02 06:21:45

标签: mysql spatial-query

在MySQL< 5.7当给定无效的WKT时,空间函数返回NULL,例如:

mysql> select astext(geomfromtext('polygon()'));

+-----------------------------------+
| astext(geomfromtext('polygon()')) |
+-----------------------------------+
| NULL                              |
+-----------------------------------+
1 row in set (0.00 sec)

但是对于较新的MySQL,相同的输入给出了:

ERROR 3037 (22023): Invalid GIS data provided to function st_geometryfromtext.

在将WKT发送到几何函数之前,有没有办法检查WKT是否有效? 或者有一个设置来强制几何函数产生NULL而不是无效输入的错误吗?

1 个答案:

答案 0 :(得分:1)

MySQL提供了两个功能来测试几何图形的有效性,但是都以已经形成的几何图形作为输入。

ST_IsValid(ST_GeomFromText(?));返回一个布尔值

ST_Validate(ST_GeomFromText(?));返回GEOM,如果无效,则返回null。

我对MySQL中的WKT解析没有任何了解,也没有设置可以将其切换回<5.7行为。