MySQL - 地理空间对象

标签 mysql postgresql geospatial postgis

我一直在 Postgis 中为 poly 中的点工作,我有这个功能:

select * from table_name where st_contains(column, st_setsrid(st_makepoint(-92.095109, 46.804100),4326));

该列是一个多边形(((points)))

我正在尝试找到一种方法来对 MySQL 进行类似的练习,并且想知道是否有类似的函数可以这样做。 MySQL 的开发站点对 Multipolys 的描述和文档非常有限。

有人做过这样的事吗?

最佳答案

MySQL 没有实现很多空间查询——我不确定包含,但有一些方法可以近似它和其他函数。例如,您可以通过在给定矩形中提取所有具有坐标的结果然后计算距离来计算点之间的距离 here.您还可以使用矩形来近似解决您的 contains 问题。首先,为您的选择提供更通用的 WKT 语法:

select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');

我认为 contains 的开放规范没有实现,但是有一个使用 minimum bounding rectangle 的 MySQL 函数估计您的点是否在多边形中:

select * from table_name where MBRContains(the_polygon, GeomFromText('POINT(12.3 45.6)');

我最终在 MySQL 上使用了很多一般的矩形,因为它很容易计算坐标集的外边界。总体而言,PostGIS 要好得多,但如果需要,您可以做一些跨数据库的事情。

更新:在问这个问题后 nice summary已发布到 opengeo.org ;似乎即使在不明显或不明确的地方,MySQL 也经常使用 MBR。如果您想了解更多有关 PostGIS 的工作原理以及其 2d 功能实现者为何拥有一般来说,锄地的行数较短。

关于MySQL - 地理空间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/998580/

相关文章:

java - 通过 Google Cloud Datastore 进行地理空间查询

php - 如何构建电子商务应用程序的数据库?

node.js - PostgreSQL 事务锁

sql - postgres 中的缓慢更新脚本

java - 为什么有 Postgres 异常?

r - 如何在 R 中相对于中心按顺时针顺序对点进行排序?

python - 如何使用python获取两个地理坐标之间的行驶距离?

php - mysql:如何对表中的2个字段求和并将结果放在第3个字段中?

mysql - Mac OS 10.6 服务器无法安装 mysql gem

java - 如何在where条件下从特殊字符的单词中获取数据?