【发布时间】:2011-09-27 18:22:22
【问题描述】:
我们需要找出一种快速且相当准确的方法,用于在谷歌地图上获取纬度/经度值和多边形的多边形点。经过一些研究 - 遇到了一些关于 mysql 几何扩展的帖子,并且也实现了 -
SELECT id, Contains( PolyFromText( 'POLYGON(".$polygonpath.")' ) , PointFromText( concat( \"POINT(\", latitude, \" \", longitude, \")\" ) ) ) AS
CONTAINS
FROM tbl_points
然而,这不适用于由大量点组成的多边形:(
经过更多研究 - 遇到了一种称为 Ray-casting 算法的标准算法,但在尝试在 MySQL 中开发该查询之前,如果有人已经通过该算法或遇到一个有用的链接,我想借此机会如何在 MySQL / SQL-server 中实现算法。
所以,简而言之 - 问题是:
谁能提供光线投射算法的 MySQL/SQL-server 实现?
补充细节:
- 多边形可以是凹的、凸的或复杂的。
- 以超过 100% 的准确度为目标。
【问题讨论】:
-
大约一年前,当我查看 MySQL 中的地理空间扩展时,它们充其量只是测试版质量。我最终将 PostgreSQL 用于我的地理数据库。我从来没有听说过有人试图在数据库中实现光线投射,但是......
-
@EricJ。 - 谢谢您的答复。我希望我可以使用 postGIS 来解决这个问题.. 但不能这样做,因为它只是一个巨大系统的(可能很小)一部分。 :(
-
MySQL 有 cos/sin/tan 函数,对你有帮助吗?链接:dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html
标签: mysql point-in-polygon raycasting