我有多对由用户输入(php)计算的笛卡尔坐标(X,Y),它们形成一个范围(图片为多边形)。
从我的数据库(600分),我需要找到属于该范围内的任何点(在多边形内),并排除任何超出该范围的点。
我想在一个SQL语句中完成所有操作,但我似乎无法理解在同一行中匹配两个不同值(两个不同列)的逻辑。
我想我在两个表之间拆分数据并使用内连接?但这似乎有点过头了。
我尝试使用MYSQL的几何部分(尝试使用“point”数据类型搜索坐标对),但我看不到我导入的数据(导入成功后)。当我从一行中选择所有数据时,尝试并显示$ row [“coords”](应该是点数据),我得到的是一堆奇怪的ASCII字符和正方形......
所以希望有一种简单的方法可以使用常规SQL。
答案 0 :(得分:1)
假设您有这样的表:
TABLE_1:
ID | INT
X_POS | INT
Y_POS | INT
ID - 自动增量主键 X_POS - 点的X坐标 Y_POS - 点的Y坐标
现在您有以下示例数据:
ID | X_POS | Y_POS
1 | 3.25 | 1.75
2 |-0.5 | 2.17
等。
现在,您要选择X轴上的点在-1.34和1.28之间的所有行 并且在Y轴上在-5.63和0.98之间
您的查询应如下所示:
SELECT * FROM TABLE_1
WHERE
(X_POS BETWEEN -1.34 AND 1.28) AND
(Y_POS BETWEEN -5.63 AND 0.98)
您可以在此处测试此示例:SQLFIDDLE
<强>更新强>
你绝对应该使用MySQL Spatial Extension
我尝试过使用MYSQL的几何部分(尝试搜索 coord对使用“point”数据类型),但我看不到数据I 已导入
请提供有关表格的详细信息(SHOW CREATE TABLE)以及导入数据的方式。
然后我可以帮助你。