【问题标题】:Error Code: 3618. st_simplify(LINESTRING, ...) has not been implemented (and yet it works fine by doing ST_GeomFromText(ST_AsText()))错误代码:3618. st_simplify(LINESTRING, ...) 尚未实现(但通过执行 ST_GeomFromText(ST_AsText()) 可以正常工作)
【发布时间】:2023-03-08 01:05:01
【问题描述】:

考虑以下查询:

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。

【问题讨论】:

  • 因为它说它还没有实现,所以尝试 8.0,.26 或等待并使用提示告诉你的内容
  • @nbk - Michael Entin 成功了。有多种类型的几何形状。只是其中一些支持,但并非全部支持。当我发布问题时,我没有意识到有多种类型的几何图形,但存在的事实表明我确实“错过了一些东西”。
  • 如错误消息 cöearöy 所述,您需要将 iot 转换为 ST_Simplify 能够理解的正确格式。正如您在第二个查询中所展示的那样,它将被实现,因此将发生内部转换版本。使用使用 8.0,.26 的 dbfiddklle 对其进行测试

标签: mysql gis spatial mysql-8.0 spatial-query


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2019-04-11
    相关资源
    最近更新 更多