如何使用数据库查询检查long-lat是否在范围内?

时间:2017-01-05 07:28:50

标签: database google-maps geolocation location

所以我试图了解小数经度和纬度系统,我想知道它们是如何被量化的。我一直在使用Long Lat Finder 但无法理解如何量化这两个值。

我的目标是long-lat A,例如(37.349852,-122.023752),我想设计一个数据库查询,使用< =和>来获取1英里距离内的所有长距离。 =用于比较long和lat值。这可能吗?

编辑:最后,我想设计一种有效的算法来比较数据库级别的long-lat,以便在给定当前位置的情况下,只识别放置在当前位置1英里的地图中的标记。想象一下数据库中的1000多个长条,并确​​定如何缩小搜索范围,以便确定距离您X英里的标记在计算上并不昂贵。

1 个答案:

答案 0 :(得分:0)

不使用" radius"而是使用" square"来限制结果。边界。对于边AA = 2d,其中d是所需距离)的矩形,所有longlat更接近长和纬度的点中心比A/(2*R)(请记住这个公式给出弧度,你需要转换它们)将属于矩形。 R是地球半径。此滤波器只需要为整个扫描计算一次最小和最大角度,并且可以使纬度/经度上的索引受益。

如果您愿意,可以通过计算第一个过滤器返回的点距中心的距离,进一步过滤给定"半径" /距离中的点。使用此方法,您将仅计算由正方形限定的点的距离。这将把距离计算限制为~1000

进一步改进可以是使用两个正方形 - 一个将圆圈限制在外面,一个由圆圈限定。来自内部广场的积分是好的"。仅计算两个方格之间范围内的点到中心的距离。通过这种改进,您将进一步将距离计算限制为10-100倍。