【问题标题】:MySQL version fails to execute geometry queryMySQL 版本无法执行几何查询
【发布时间】:2017-07-14 11:20:14
【问题描述】:

如果我运行这个查询

SELECT region_id FROM shape_region WHERE ST_Within(point(-117.10480, 32.72204),shape_region.shape)=1

关于MySQL MariaDB 10.1.13-MariaDB 版本,没有问题。

但在 MySQL 版本 5.7.16-0ubuntu0.16.04.1 上出现此错误

二元几何函数 st_within 给定两个不同 srid 的几何:0 和 1,它们应该是相同的。

我不明白这个错误,我可以在这个版本的 MySQL 上使用类似的查询吗?

【问题讨论】:

  • Mariadb 不是 mysql,你吃过比较苹果和梨。
  • 已编辑,我认为问题仍然在于可比较的查询可能是什么。

标签: mysql mariadb


【解决方案1】:

在此链接找到答案

https://bugs.mysql.com/bug.php?id=79282

适用于 MySQL 和 MariaDB 的兼容查询:

SELECT region_id FROM shape_region WHERE ST_Contains( SHAPE, ST_GeomFromText( 'POINT(-122.392128 37.795653)', 1 ) )

如链接中所述

您无法将一个空间参考系统 (SRID 1) 中的形状与另一个空间参考系统 (SRID 0) 中的点进行比较。 POINT() 函数[1] 将始终返回 SRID 0 中的一个点,这是无单位的笛卡尔默认空间参考系统。

为了进行预期的比较,点必须与形状位于相同的空间参考系中。例如,使用 ST_GeomFromText()[2] 的 SRID 参数:

【讨论】:

  • 非常感谢!我在使用 MySQL [5.7.18] 时遇到了同样的问题,您的解决方案效果很好!
猜你喜欢
  • 2017-01-11
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
相关资源
最近更新 更多