MySQL 没有实现很多空间查询——我不确定包含,但有一些方法可以近似它和其他功能。例如,您可以通过使用给定矩形中的坐标拉取所有结果,然后按照此处所述计算距离来计算点之间的距离。 您还可以使用矩形来近似您的contains
问题。首先,为您的选择提供更通用的 WKT 语法:
select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');
我认为开放规范contains
没有实现,但是有一个 MySQL 函数使用最小边界矩形来近似你的点是否在多边形中:
select * from table_name where MBRContains(the_polygon, GeomFromText('POINT(12.3 45.6)');
我最终在 MySQL 上使用了很多矩形,因为它很容易计算坐标集的外部边界。总体而言,PostGIS 要好得多,但如果必须,您可以做一些跨数据库的事情。
更新:在提出这个问题后,一个很好的总结被发布到 opengeo.org ;似乎即使在不明显或不明确的情况下,MySQL 也经常使用 MBR。还要查看本机 postgres 类型point, lseg, box, path, polygon,
,circle
如果您想了解更多关于 PostGIS 的工作原理以及为什么它的 2d 功能实现者通常有更短的行来锄头。