2009-06-15 30 views
2

我在PostGIS的工作了点多的,我有这样的功能:MySQL的 - 地理空间对象

SELECT * FROM表名,其中st_contains(列,st_setsrid(st_makepoint(-92.095109,46.804100),4326 ));

列是multipoly(((点)))

我试图找到一种方法做类似的工作与MySQL,并想知道是否有类似的功能,这样做。 MySQL的开发站点对Multipolys的描述和文档非常有限。

有没有人做过这样的事情?

回答

2

MySQL没有实现很多空间查询 - 我不确定有关包含,但有一些方法可以近似它和其他函数。例如,您可以通过将所有结果与给定矩形中的坐标进行拉伸,然后按照描述的方式计算距离来执行点之间的距离。here.您也可以使用矩形近似地解决contains问题。首先,你选择一个更一般的WKT语法:

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

我认为contains的开放规范不落实,但有一个MySQL的函数使用minimum bounding rectangle接近你点是否在多边形:

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

我已经结束了使用很多普通的矩形上的MySQL,因为这很容易计算的坐标集的外部边界。总的来说,PostGIS要好得多,但如果必须的话,你可以做一些跨数据库的事情。

UPDATE:在询问此问题后,nice summary被张贴到opengeo.org;它似乎即使不明显或者说MySQL经常使用MBR。如果您想了解更多关于PostGIS的工作方式以及为什么它的2D功能实现者通常具有更短的行数,请查看本机postgres类型point, lseg, box, path, polygon,circle

+0

谢谢,完美的工作。感谢您的帮助和智慧! – Petrogad 2009-06-17 14:50:26