错误代码: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。您可以在平面上使用简化,但距离单位不同(通常是度与米),以及语义(如果您远离赤道,则沿子午线的度数大于平行度的米数)。
考虑以下查询:
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。您可以在平面上使用简化,但距离单位不同(通常是度与米),以及语义(如果您远离赤道,则沿子午线的度数大于平行度的米数)。