【发布时间】:2013-11-10 11:51:04
【问题描述】:
我需要在多边形中创建一个点 MySQL 查询。
我已经找到了这两个很好的解决方案:
http://forums.mysql.com/read.php?23,286574,286574
MySQL implementation of ray-casting Algorithm?
但是这些函数只能检查一个点是否在多边形内。我有一个查询,画中画部分应该只是查询的一部分,并检查多边形内的 x 点。
类似这样的:
$points = list/array/whatever of points in language of favour
SELECT d.name
FROM data AS d
WHERE d.name LIKE %red%
// just bla bla
// how to do this ?
AND $points INSIDE d.polygon
AND myWithin( $points, d.polygo ) // or
更新
我尝试了这样的 MBR 函数:
SET @g1 = GeomFromText('Polygon((13.43971 52.55757,13.41293 52.49825,13.53378 52.49574, 13.43971 52.55757))');
SET @g2 = GeomFromText('Point(13.497834 52.540489)');
SELECT MBRContains(@g1,@g2);
G2 不应该在 G1 中,但 MBR 说是。
【问题讨论】:
-
MBRContains()有什么问题? -
你检查了@eggyal提供的链接中的所有功能吗?
-
我读到 MBR 不够准确,但现在深入挖掘。
-
MBR 无法使用,因为它适用于边界框。检测多边形内的点将不准确。
-
您最终将使用过程 SQL,那么为什么不使用命令式语言来查询数据库并执行所需的计算呢?我不明白为什么 SQL 应该做所有事情......只是问问。
标签: php mysql raycasting point-in-polygon