ST_EQUALS 没有返回正确的结果?

ST_EQUALS is not returning correct result?

当 运行 ST_EQUALS 在两个多边形上时,我得到了这些奇怪的结果:

SELECT ST_EQUALS(
ST_GEOMFROMTEXT(
'POLYGON((81.65 34.8667,81.65 5.9167,75.9833 34.8667,75.9833 5.9167,81.65 34.8667))',4326), 
ST_GEOMFROMTEXT(
'POLYGON((81.65 34.8667,81.65 5.9167,75.9833 34.8667,75.9833 5.9167,81.65 34.8667))',4326));

多边形的坐标完全相同,但 MYSQL returns 0 表示它们不相等。

当我运行没有SRID(默认=0)的查询时,

SELECT ST_EQUALS(
ST_GEOMFROMTEXT(
'POLYGON((81.65 34.8667,81.65 5.9167,75.9833 34.8667,75.9833 5.9167,81.65 34.8667))'), 
ST_GEOMFROMTEXT(
'POLYGON((81.65 34.8667,81.65 5.9167,75.9833 34.8667,75.9833 5.9167,81.65 34.8667))'));

MySQL returns 1表示确实相等

我在这里遗漏了什么吗?谢谢。

这是一个无效的多边形:

SELECT ST_IsValid(ST_GEOMFROMTEXT('POLYGON((81.65 34.8667,81.65 5.9167,75.9833 34.8667,75.9833 5.9167,81.65 34.8667))',4326)) AS v

0

对于无效的几何图形,任何地理空间函数的结果都是不确定的——它可能会给出正确的结果,也可能会给出随机值。对于几何 SRID (0),它似乎可以像您预期的那样工作,而对于测地线 SRID (4326),它会给出不同的结果。

有关有效几何的更多详细信息,请参阅此内容: https://dev.mysql.com/doc/refman/5.7/en/geometry-well-formedness-validity.html

规则多边形不是self-intersecting在这里被打破了。

对于无效的几何图形,此文档说“由于计算开销,MySQL 不会明确检查几何图形的有效性。空间计算可能会检测到某些无效几何图形的情况并引发错误,但它们也可能return未检测到无效性的未定义结果。"