错误代码:3618。st_simplify(LINESTRING, ...) 尚未实施(但通过 ST_GeomFromText(ST_AsText()) 可以正常工作)

Error Code: 3618. st_simplify(LINESTRING, ...) has not been implemented (and yet it works fine by doing ST_GeomFromText(ST_AsText()))

考虑以下查询:

SELECT ST_Simplify(SHAPE, 1.0)
FROM nhdflowline
WHERE OGR_FID = 12701;

运行 给我以下错误:

Error Code: 3618. st_simplify(LINESTRING, ...) has not been implemented for geographic spatial reference systems.

但是,如果我这样做,效果很好:

SELECT ST_Simplify(ST_GeomFromText(ST_AsText(SHAPE)), 1.0)
FROM nhdflowline
WHERE OGR_FID = 12701;

这对我来说没有任何意义。我不能直接在几何上 运行 ST_Simplify - 我必须将它转换为文本,然后 返回 到几何 运行 ST_Simplify?

我错过了什么吗?我是 运行宁 MySQL 8.0.22.

关键在错误消息的最后部分:“尚未为地理空间参考系统实施”。

有两种参考系统 (SRID):地理参考系统,在球体上计算,投影参考系统在平面地图上计算。

当您执行 ST_AsText,然后返回到几何时,您删除了 SRID,因此以前与地理(即球形)几何关联的几何现在具有平面语义和 SRID=0。 MySQL 的语义发生了变化。以前在球体上的lat:lng现在只是平面上的两个坐标

您的 MySQL 版本实现了平面(投影)几何体的简化,但不是地理 SRID。您可以在平面上使用简化,但距离单位不同(通常是度与米),以及语义(如果您远离赤道,则沿子午线的度数大于平行度的米数)。