【发布时间】:2009-11-06 10:24:57
【问题描述】:
给定一张桌子,
+-----+---------+---------+---------+---------+---------+
| user| min_lat | max_lat | min_lng | max_lng |
+-----+---------+---------+---------+---------+---------+
| a | 46 | 407 | 6 | 367 |
| b | 226 | 227 | 186 | 188 |
And a Point(x, y) 查找该点在用户的最小和最大纬度和经度范围内的用户(其中 min 和 max long 和 lat = 当前位置减去或加上半径)。
最小值可以小于0,最大值可以大于360,查询需要考虑这些。
例如使用 Point(7,5) 过滤也应该返回用户 A,如 367-360=7。
不确定我是否正确,但希望有人能给我一些见解。
【问题讨论】:
-
Point(4,5) 是一个更好的例子,因为 7 在 6..367 范围内(不考虑 a==b mod 360)。 4 在范围之外但在 a 的区域内。此外,每个点都在该区域内(6..367、46..407);也许 (50..367, 46..407) 是一个更好的测试区域,因为经度范围不包括某些值,但纬度不包括。另外,端点是否包含在区域中?术语“min”和“max”暗示它们是,但最好是明确的。
标签: mysql geolocation geocoding geospatial spatial