我一直在 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/